New Case Study:See how Anthropic automated 95% of dependency reviews with Socket.Learn More
Socket
Sign inDemoInstall
Socket

adui

Package Overview
Dependencies
Maintainers
1
Versions
274
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

adui - npm Package Compare versions

Comparing version 0.7.1-alpha.2 to 0.8.0

19

CHANGELOG.md

@@ -5,2 +5,21 @@ # Changelog

## [0.8.0](http://git.code.oa.com/yijiejiang/adUI/compare/v0.7.0...v0.8.0) (2019-09-26)
### Bug Fixes
* **Input:** cleave 的 ref 与原生 input 分开处理,逻辑更清晰一些 ([85f37a7](http://git.code.oa.com/yijiejiang/adUI/commit/85f37a7))
* **Input:** 修复 cleaveOptions 不能使用 defaultValue 的问题 ([d569093](http://git.code.oa.com/yijiejiang/adUI/commit/d569093))
* **RangePicker:** 修复空时没有回调 onChange ([6e64e24](http://git.code.oa.com/yijiejiang/adUI/commit/6e64e24))
* **Table:** 修复合并单元格在计算宽度时的报错 ([7c15509](http://git.code.oa.com/yijiejiang/adUI/commit/7c15509))
### Features
* **Select:** 加入滚动加载 ([1c725ec](http://git.code.oa.com/yijiejiang/adUI/commit/1c725ec))
* **Upload.Img:** init ([6f9a1dc](http://git.code.oa.com/yijiejiang/adUI/commit/6f9a1dc))
* **Upload.Img:** 添加预览 ([78593a6](http://git.code.oa.com/yijiejiang/adUI/commit/78593a6))
## [0.7.0](http://git.code.oa.com/yijiejiang/adUI/compare/v0.6.0...v0.7.0) (2019-09-19)

@@ -7,0 +26,0 @@

3

lib/input/Input.d.ts

@@ -209,3 +209,4 @@ import * as React from 'react';

updateElementsWidth: () => void;
saveInput: (node: any) => void;
saveInput: (node: HTMLInputElement) => void;
saveCleave: (node: any) => void;
saveLeftElement: (node: HTMLDivElement) => void;

@@ -212,0 +213,0 @@ saveRightElement: (node: HTMLDivElement) => void;

@@ -195,10 +195,10 @@ "use strict";

if (node) {
var cleaveOptions = _this.props.cleaveOptions;
_this.input = node;
}
};
if (!cleaveOptions || Object.keys(cleaveOptions).length === 0) {
_this.input = node;
} else {
_this.cleave = node;
_this.input = node.element;
}
_this.saveCleave = function (node) {
if (node) {
_this.cleave = node;
_this.input = node.element;
}

@@ -319,2 +319,3 @@ };

};
var cleaveInputProps = JSON.parse(JSON.stringify(inputProps));

@@ -327,5 +328,8 @@ if (value !== null) {

cleaveInputProps.value = value || defaultValue || "";
var input = !cleaveOptions || Object.keys(cleaveOptions).length === 0 ? React.createElement("input", inputProps) : React.createElement(_react2["default"], _extends({
options: cleaveOptions
}, inputProps));
}, cleaveInputProps, {
ref: this.saveCleave
}));
var length;

@@ -439,2 +443,2 @@

};
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL2NvbXBvbmVudHMvaW5wdXQvSW5wdXQudHN4Il0sIm5hbWVzIjpbIm5vb3AiLCJwcmVmaXgiLCJJbnB1dCIsInN0YXRlIiwiZm9jdXNlZCIsImxlZnRFbGVtZW50V2lkdGgiLCJyaWdodEVsZW1lbnRXaWR0aCIsImlucHV0IiwibGVmdEVsZW1lbnQiLCJyaWdodEVsZW1lbnQiLCJjbGVhdmUiLCJoYW5kbGVDaGFuZ2UiLCJlIiwicHJvcHMiLCJkaXNhYmxlZCIsIm9uQ2hhbmdlIiwidmFsIiwidGFyZ2V0IiwidmFsdWUiLCJyZXBsYWNlIiwiaGFuZGxlS2V5RG93biIsIm9uUHJlc3NFbnRlciIsIm9uS2V5RG93biIsImtleUNvZGUiLCJoYW5kbGVCbHVyIiwib25CbHVyIiwic2V0U3RhdGUiLCJoYW5kbGVGb2N1cyIsIm9uRm9jdXMiLCJoYW5kbGVBdHRhY2hlZEVsZW1lbnRDbGljayIsInBvc2l0aW9uIiwidHlwZSIsIm5hbWUiLCJmb2N1cyIsInNlbGVjdCIsImZpeENvbnRyb2xsZWRWYWx1ZSIsInVwZGF0ZUVsZW1lbnRzV2lkdGgiLCJjbGllbnRXaWR0aCIsIk1hdGgiLCJhYnMiLCJzYXZlSW5wdXQiLCJub2RlIiwiY2xlYXZlT3B0aW9ucyIsIk9iamVjdCIsImtleXMiLCJsZW5ndGgiLCJlbGVtZW50Iiwic2F2ZUxlZnRFbGVtZW50Iiwic2F2ZVJpZ2h0RWxlbWVudCIsImdldEZvcm1hdFN0ckxlbmciLCJzdHIiLCJsZW4iLCJyZWFsTGVuZ3RoIiwiY2hhckNvZGUiLCJpIiwiY2hhckNvZGVBdCIsImNlaWwiLCJzaG91bGRDb21wb25lbnRVcGRhdGUiLCJuZXh0UHJvcHMiLCJuZXh0U3RhdGUiLCJjb21wb25lbnREaWRVcGRhdGUiLCJsYXN0SW5wdXRWYWx1ZSIsInByb3BlcnRpZXMiLCJyZXN1bHQiLCJjb21wb25lbnREaWRNb3VudCIsImF1dG9Gb2N1cyIsImNsYXNzTmFtZSIsImNvdW50SGFuemkiLCJkZWZhdWx0VmFsdWUiLCJpZCIsImludGVudCIsImxpbWl0IiwicGxhY2Vob2xkZXIiLCJzaXplIiwidGhlbWUiLCJvdGhlclByb3BzIiwicmVzdFByb3BzIiwiaW5wdXRQcm9wcyIsInJlZiIsInN0eWxlIiwicGFkZGluZ0xlZnQiLCJwYWRkaW5nUmlnaHQiLCJjbGFzc1NldCIsImxlZnRUeXBlIiwicmlnaHRUeXBlIiwiUmVhY3QiLCJDb21wb25lbnQiLCJUZXh0YXJlYSIsInByb3BUeXBlcyIsIlByb3BUeXBlcyIsImJvb2wiLCJzdHJpbmciLCJvYmplY3QiLCJvbmVPZlR5cGUiLCJudW1iZXIiLCJvbmVPZiIsIkVycm9yIiwiZnVuYyIsImRlZmF1bHRQcm9wcyIsInVuZGVmaW5lZCJdLCJtYXBwaW5ncyI6Ijs7Ozs7OztBQUFBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUVBLElBQU1BLElBQUksR0FBRyxTQUFQQSxJQUFPLEdBQU0sQ0FBRSxDQUFyQjs7QUFDQSxJQUFNQyxNQUFNLEdBQUcsWUFBZjs7SUF1R3FCQyxLOzs7Ozs7Ozs7Ozs7Ozs7VUE0SVpDLEssR0FBcUI7QUFDMUJDLE1BQUFBLE9BQU8sRUFBRSxLQURpQjtBQUUxQkMsTUFBQUEsZ0JBQWdCLEVBQUUsSUFGUTtBQUcxQkMsTUFBQUEsaUJBQWlCLEVBQUU7QUFITyxLO1VBTXJCQyxLO1VBRUFDLFc7VUFFQUMsWTtVQUVBQyxNOztVQUVBQyxZLEdBQWUsVUFBQ0MsQ0FBRCxFQUE0QztBQUFBLHdCQUk1RCxNQUFLQyxLQUp1RDtBQUFBLFVBRTlEQyxRQUY4RCxlQUU5REEsUUFGOEQ7QUFBQSxVQUc5REMsUUFIOEQsZUFHOURBLFFBSDhEOztBQUtoRSxVQUFJLENBQUNELFFBQUQsSUFBYUMsUUFBakIsRUFBMkI7QUFJekIsWUFBTUMsR0FBRyxHQUFHSixDQUFDLENBQUNLLE1BQUYsQ0FBU0MsS0FBVCxDQUFlQyxPQUFmLENBQXVCLHdFQUF2QixFQUFpRyxFQUFqRyxDQUFaO0FB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RUFBRXVFLHNCQUFVSSxTQUFWLENBQW9CLENBQ3pCSixzQkFBVUUsTUFEZSxFQUV6QkYsc0JBQVVLLE1BRmUsQ0FBcEI7QUF6R2lCLEM7QUFKUDVGLEssQ0FtSExnRyxZLEdBQTRCO0FBQ3hDakMsRUFBQUEsU0FBUyxFQUFFLEtBRDZCO0FBRXhDQyxFQUFBQSxTQUFTLEVBQUVpQyxTQUY2QjtBQUd4Q3pELEVBQUFBLGFBQWEsRUFBRSxFQUh5QjtBQUl4Q3lCLEVBQUFBLFVBQVUsRUFBRSxJQUo0QjtBQUt4Q0MsRUFBQUEsWUFBWSxFQUFFLElBTDBCO0FBTXhDdEQsRUFBQUEsUUFBUSxFQUFFLEtBTjhCO0FBT3hDdUQsRUFBQUEsRUFBRSxFQUFFLElBUG9DO0FBUXhDQyxFQUFBQSxNQUFNLEVBQUUsUUFSZ0M7QUFTeEM5RCxFQUFBQSxXQUFXLEVBQUUyRixTQVQyQjtBQVV4QzVCLEVBQUFBLEtBQUssRUFBRSxJQVZpQztBQVd4Q3ZDLEVBQUFBLElBQUksRUFBRSxJQVhrQztBQVl4Q1AsRUFBQUEsTUFBTSxFQUFFekIsSUFaZ0M7QUFheENlLEVBQUFBLFFBQVEsRUFBRWYsSUFiOEI7QUFjeEM0QixFQUFBQSxPQUFPLEVBQUU1QixJQWQrQjtBQWV4Q3NCLEVBQUFBLFNBQVMsRUFBRXRCLElBZjZCO0FBZ0J4Q3FCLEVBQUFBLFlBQVksRUFBRXJCLElBaEIwQjtBQWlCeEN3RSxFQUFBQSxXQUFXLEVBQUUsS0FqQjJCO0FBa0J4Qy9ELEVBQUFBLFlBQVksRUFBRTBGLFNBbEIwQjtBQW1CeEMxQixFQUFBQSxJQUFJLEVBQUUsT0FuQmtDO0FBb0J4Q0MsRUFBQUEsS0FBSyxFQUFFLElBcEJpQztBQXFCeEMzQyxFQUFBQSxJQUFJLEVBQUUsSUFyQmtDO0FBc0J4Q2IsRUFBQUEsS0FBSyxFQUFFO0FBdEJpQyxDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgUmVhY3QgZnJvbSAncmVhY3QnXG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gJ3Byb3AtdHlwZXMnXG5pbXBvcnQgY2xhc3NOYW1lcyBmcm9tICdjbGFzc25hbWVzJ1xuaW1wb3J0IENsZWF2ZSBmcm9tICdjbGVhdmUuanMvcmVhY3QnXG5pbXBvcnQgc2hhbGxvd0VxdWFsIGZyb20gJ3NoYWxsb3dlcXVhbCdcbmltcG9ydCBvbWl0IGZyb20gXCIuLi9fdXRpbC9vbWl0XCJcbmltcG9ydCBUZXh0YXJlYSBmcm9tICcuL1RleHRhcmVhJ1xuaW1wb3J0IFwiLi9zdHlsZVwiXG5cbmNvbnN0IG5vb3AgPSAoKSA9PiB7fVxuY29uc3QgcHJlZml4ID0gXCJhZHVpLWlucHV0XCJcblxuZXhwb3J0IGludGVyZmFjZSBJSW5wdXRQcm9wcyB7XG4gIFtrZXk6IHN0cmluZ106IGFueVxuICAvKipcbiAgICogaW5wdXQg5qCH562+5Y6f55Sf5bGe5oCnIC0gYXV0b0ZvY3VzXG4gICAqL1xuICBhdXRvRm9jdXM/OiBib29sZWFuXG4gIC8qKlxuICAgKiDpmYTliqDnsbvlkI1cbiAgICovXG4gIGNsYXNzTmFtZT86IHN0cmluZ1xuICAvKipcbiAgICog5a6e546w5omL5py65Y+344CB5pel5pyf44CB5pWw5a2X5Y+K6Ieq5a6a5LmJ5qC85byP77yM5Y+v5p+l55yLW+ekuuS+i10oaHR0cDovL3d4YWQuZGVzaWduL2FkdWkvY29tcG9uZW50cy9pbnB1dCnjgIJcbiAgICovXG4gIGNsZWF2ZU9wdGlvbnM/OiBvYmplY3RcbiAgLyoqXG4gICAqIOaYr+WQpuaMieeFp+S4gOS4quaxieWtl+eulyAyIOWtl+aVsOeahOaWueW8j+mZkOWItumVv+W6plxuICAgKi9cbiAgY291bnRIYW56aT86IGJvb2xlYW5cbiAgLyoqXG4gICAqIOm7mOiupOWAvCAtIOWGhemDqOmpseWKqFxuICAgKi9cbiAgZGVmYXVsdFZhbHVlPzogc3RyaW5nIHwgbnVsbFxuICAvKipcbiAgICog5piv5ZCm56aB55SoXG4gICAqL1xuICBkaXNhYmxlZD86IGJvb2xlYW5cbiAgLyoqXG4gICAqIOi+k+WFpeahhueahCBpZFxuICAgKi9cbiAgaWQ/OiBzdHJpbmcgfCBudWxsXG4gIC8qKlxuICAgKiDnsbvlnotcbiAgICovXG4gIGludGVudD86IFwibm9ybWFsXCIgfCBcInByaW1hcnlcIiB8IFwic3VjY2Vzc1wiIHwgXCJ3YXJuaW5nXCIgfCBcImRhbmdlclwiXG4gIC8qKlxuICAgKiDliY3nva7lhYPntKBcbiAgICovXG4gIGxlZnRFbGVtZW50PzogSlNYLkVsZW1lbnRcbiAgLyoqXG4gICAqIOmZkOWItumVv+W6plxuICAgKi9cbiAgbGltaXQ/OiBudW1iZXIgfCBudWxsXG4gIC8qKlxuICAgKiBpbnB1dCDmoIfnrb7ljp/nlJ/lsZ7mgKcgLSBuYW1lXG4gICAqL1xuICBuYW1lPzogc3RyaW5nIHwgbnVsbFxuICAvKipcbiAgICogYmx1ciDml7bnmoQgaGFuZGxlclxuICAgKi9cbiAgb25CbHVyPzogKGU6IFJlYWN0LkZvY3VzRXZlbnQ8SFRNTElucHV0RWxlbWVudD4pID0+IHZvaWRcbiAgLyoqXG4gICAqIOWAvOaUueWPmOaXtueahCBoYW5kbGVyXG4gICAqL1xuICBvbkNoYW5nZT86IChlOiBSZWFjdC5DaGFuZ2VFdmVudDxIVE1MSW5wdXRFbGVtZW50PiwgdmFsdWU/OiBzdHJpbmcpID0+IHZvaWRcbiAgLyoqXG4gICAqIGZvY3VzIOaXtueahCBoYW5kbGVyXG4gICAqL1xuICBvbkZvY3VzPzogKGU6IFJlYWN0LkZvY3VzRXZlbnQ8SFRNTElucHV0RWxlbWVudD4pID0+IHZvaWRcbiAgLyoqXG4gICAqIGtleWRvd24g5pe255qEIGhhbmRsZXJcbiAgICovXG4gIG9uS2V5RG93bj86IChlOiBSZWFjdC5LZXlib2FyZEV2ZW50PEhUTUxJbnB1dEVsZW1lbnQ+KSA9PiB2b2lkXG4gIC8qKlxuICAgKiBlbnRlciDml7bnmoQgaGFuZGxlclxuICAgKi9cbiAgb25QcmVzc0VudGVyPzogKGU6IFJlYWN0LktleWJvYXJkRXZlbnQ8SFRNTElucHV0RWxlbWVudD4pID0+IHZvaWRcbiAgLyoqXG4gICAqIHBsYWNlaG9sZGVyXG4gICAqL1xuICBwbGFjZWhvbGRlcj86IHN0cmluZ1xuICAvKipcbiAgICog5ZCO572u5YWD57SgXG4gICAqL1xuICByaWdodEVsZW1lbnQ/OiBKU1guRWxlbWVudFxuICAvKipcbiAgICog6K6+572u5bC65a+4XG4gICAqL1xuICBzaXplPzogXCJtaW5pXCIgfCBcInNtYWxsXCIgfCBcIm1lZGl1bVwiIHwgXCJsYXJnZVwiXG4gIC8qKlxuICAgKiDorr7nva7kuLvpophcbiAgICovXG4gIHRoZW1lPzogbnVsbCB8IFwibGlnaHRcIlxuICAvKipcbiAgICogaW5wdXQg5qCH562+5Y6f55Sf5bGe5oCnIC0gdHlwZVxuICAgKi9cbiAgdHlwZT86IHN0cmluZyB8IG51bGxcbiAgLyoqXG4gICAqIOWAvCAtIOWklumDqOaOp+WItlxuICAgKi9cbiAgdmFsdWU/OiBzdHJpbmcgfCBudWxsXG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSUlucHV0U3RhdGUge1xuICBmb2N1c2VkOiBib29sZWFuXG4gIGxlZnRFbGVtZW50V2lkdGg6IG51bGwgfCBudW1iZXJcbiAgcmlnaHRFbGVtZW50V2lkdGg6IG51bGwgfCBudW1iZXJcbn1cblxuLyoqXG4gKiDovpPlhaXmoYbnlKjkuo7mlofmnKzovpPlhaXnmoTljLrln5/vvIzlj6/nu5PlkIjlm77moIfjgIHmjInpkq7jgIHpgInmi6nlmajnrYnnu4Tku7bkvb/nlKjjgIJcbiAqL1xuZXhwb3J0IGRlZmF1bHQgY2xhc3MgSW5wdXQgZXh0ZW5kcyBSZWFjdC5Db21wb25lbnQ8SUlucHV0UHJvcHMsIElJbnB1dFN0YXRlPiB7XG5cbiAgcHVibGljIHN0YXRpYyBUZXh0YXJlYTogdHlwZW9mIFRleHRhcmVhID0gVGV4dGFyZWFcblxuICBwdWJsaWMgc3RhdGljIHByb3BUeXBlcyA9IHtcbiAgICAvKipcbiAgICAgKiBpbnB1dCDmoIfnrb7ljp/nlJ/lsZ7mgKcgLSBhdXRvRm9jdXNcbiAgICAgKi9cbiAgICBhdXRvRm9jdXM6IFByb3BUeXBlcy5ib29sLFxuICAgIC8qKlxuICAgICAqIOmZhOWKoOexu+WQjVxuICAgICAqL1xuICAgIGNsYXNzTmFtZTogUHJvcFR5cGVzLnN0cmluZyxcbiAgICAvKipcbiAgICAgKiDlrp7njrDmiYvmnLrlj7fjgIHml6XmnJ/jgIHmlbDlrZflj4roh6rlrprkuYnmoLzlvI/vvIzlj6/mn6XnnItb56S65L6LXShodHRwOi8vd3hhZC5kZXNpZ24vYWR1aS9jb21wb25lbnRzL2lucHV0KeOAglxuICAgICAqL1xuICAgIGNsZWF2ZU9wdGlvbnM6IFByb3BUeXBlcy5vYmplY3QsXG4gICAgLyoqXG4gICAgICog5piv5ZCm5oyJ54Wn5LiA5Liq5rGJ5a2X566XIDIg5a2X5pWw55qE5pa55byP6ZmQ5Yi26ZW/5bqmXG4gICAgICovXG4gICAgY291bnRIYW56aTogUHJvcFR5cGVzLmJvb2wsXG4gICAgLyoqXG4gICAgICog6buY6K6k5YC8IC0g5YaF6YOo6amx5YqoXG4gICAgICovXG4gICAgZGVmYXVsdFZhbHVlOiBQcm9wVHlwZXMub25lT2ZUeXBlKFtcbiAgICAgIFByb3BUeXBlcy5zdHJpbmcsXG4gICAgICBQcm9wVHlwZXMubnVtYmVyLFxuICAgIF0pLFxuICAgIC8qKlxuICAgICAqIOaYr+WQpuemgeeUqFxuICAgICAqL1xuICAgIGRpc2FibGVkOiBQcm9wVHlwZXMuYm9vbCxcbiAgICAvKipcbiAgICAgKiDovpPlhaXmoYbnmoQgaWRcbiAgICAgKi9cbiAgICBpZDogUHJvcFR5cGVzLnN0cmluZyxcbiAgICAvKipcbiAgICAgKiDnsbvlnotcbiAgICAgKi9cbiAgICBpbnRlbnQ6IFByb3BUeXBlcy5vbmVPZihbXCJub3JtYWxcIiwgXCJwcmltYXJ5XCIsIFwic3VjY2Vzc1wiLCBcIndhcm5pbmdcIiwgXCJkYW5nZXJcIl0pLFxuICAgIC8qKlxuICAgICAqIOWJjee9ruWFg+e0oFxuICAgICAqL1xuICAgIGxlZnRFbGVtZW50OiBQcm9wVHlwZXMubm9kZSxcbiAgICAvKipcbiAgICAgKiDpmZDliLbplb/luqZcbiAgICAgKi9cbiAgICBsaW1pdDogKHByb3BzOiBJSW5wdXRQcm9wcykgPT4ge1xuICAgICAgY29uc3QgeyBsaW1pdCwgcmlnaHRFbGVtZW50LCB2YWx1ZSB9ID0gcHJvcHNcbiAgICAgIGlmIChsaW1pdCkge1xuICAgICAgICBpZiAodHlwZW9mIChsaW1pdCkgIT09IFwibnVtYmVyXCIpIHtcbiAgICAgICAgICByZXR1cm4gbmV3IEVycm9yKFwiRmFpbGVkIHByb3AgdHlwZTogSW52YWxpZCBwcm9wIGBsaW1pdGAgc3VwcGxpZWQgdG8gYElucHV0YCwgZXhwZWN0ZWQgYG51bWJlcmAuXCIpXG4gICAgICAgIH1cbiAgICAgICAgaWYgKCEhbGltaXQgJiYgISFyaWdodEVsZW1lbnQpIHtcbiAgICAgICAgICByZXR1cm4gbmV3IEVycm9yKFwiSW5wdXQuanMg5LiN5YWB6K645ZCM5pe25L2/55SoIHByb3AgYGxpbWl0YCDkuI4gcHJvcCBgcmlnaHRFbGVtZW50YFwiKVxuICAgICAgICB9XG4gICAgICAgIGlmICghIWxpbWl0ICYmIHZhbHVlID09PSBudWxsKSB7XG4gICAgICAgICAgcmV0dXJuIG5ldyBFcnJvcihcIklucHV0LmpzIOWmguaenOimgemZkOWItuWtl+aVsO+8jOW/hemhu+S7juWklumDqOaOp+WItiB2YWx1ZeOAglwiKVxuICAgICAgICB9XG4gICAgICB9XG4gICAgICByZXR1cm4gbnVsbFxuICAgIH0sXG4gICAgLyoqXG4gICAgICogaW5wdXQg5qCH562+5Y6f55Sf5bGe5oCnIC0gbmFtZVxuICAgICAqL1xuICAgIG5hbWU6IFByb3BUeXBlcy5zdHJpbmcsXG4gICAgLyoqXG4gICAgICogYmx1ciDml7bnmoQgaGFuZGxlclxuICAgICAqL1xuICAgIG9uQmx1cjogUHJvcFR5cGVzLmZ1bmMsXG4gICAgLyoqXG4gICAgICog5YC85pS55Y+Y5pe255qEIGhhbmRsZXJcbiAgICAgKi9cbiAgICBvbkNoYW5nZTogUHJvcFR5cGVzLmZ1bmMsXG4gICAgLyoqXG4gICAgICogZm9jdXMg5pe255qEIGhhbmRsZXJcbiAgICAgKi9cbiAgICBvbkZvY3VzOiBQcm9wVHlwZXMuZnVuYyxcbiAgICAvKipcbiAgICAgKiBrZXlkb3duIOaXtueahCBoYW5kbGVyXG4gICAgICovXG4gICAgb25LZXlEb3duOiBQcm9wVHlwZXMuZnVuYyxcbiAgICAvKipcbiAgICAgKiBlbnRlciDml7bnmoQgaGFuZGxlclxuICAgICAqL1xuICAgIG9uUHJlc3NFbnRlcjogUHJvcFR5cGVzLmZ1bmMsXG4gICAgLyoqXG4gICAgICogcGxhY2Vob2xkZXJcbiAgICAgKi9cbiAgICBwbGFjZWhvbGRlcjogUHJvcFR5cGVzLnN0cmluZyxcbiAgICAvKipcbiAgICAgKiDlkI7nva7lhYPntKBcbiAgICAgKi9cbiAgICByaWdodEVsZW1lbnQ6IFByb3BUeXBlcy5ub2RlLFxuICAgIC8qKlxuICAgICAqIOiuvue9ruWwuuWvuFxuICAgICAqL1xuICAgIHNpemU6IFByb3BUeXBlcy5vbmVPZihbXCJtaW5pXCIsIFwic21hbGxcIiwgXCJtZWRpdW1cIiwgXCJsYXJnZVwiXSksXG4gICAgLyoqXG4gICAgICog6K6+572u5Li76aKYXG4gICAgICovXG4gICAgdGhlbWU6IFByb3BUeXBlcy5vbmVPZihbbnVsbCwgXCJsaWdodFwiXSksXG4gICAgLyoqXG4gICAgICogaW5wdXQg5qCH562+5Y6f55Sf5bGe5oCnIC0gdHlwZVxuICAgICAqL1xuICAgIHR5cGU6IFByb3BUeXBlcy5zdHJpbmcsXG4gICAgLyoqXG4gICAgICog5YC8IC0g5aSW6YOo5o6n5Yi2XG4gICAgICovXG4gICAgdmFsdWU6IFByb3BUeXBlcy5vbmVPZlR5cGUoW1xuICAgICAgUHJvcFR5cGVzLnN0cmluZyxcbiAgICAgIFByb3BUeXBlcy5udW1iZXIsXG4gICAgXSksXG4gIH1cblxuICBwdWJsaWMgc3RhdGljIGRlZmF1bHRQcm9wczogSUlucHV0UHJvcHMgPSB7XG4gICAgYXV0b0ZvY3VzOiBmYWxzZSxcbiAgICBjbGFzc05hbWU6IHVuZGVmaW5lZCxcbiAgICBjbGVhdmVPcHRpb25zOiB7fSxcbiAgICBjb3VudEhhbnppOiB0cnVlLFxuICAgIGRlZmF1bHRWYWx1ZTogbnVsbCxcbiAgICBkaXNhYmxlZDogZmFsc2UsXG4gICAgaWQ6IG51bGwsXG4gICAgaW50ZW50OiBcIm5vcm1hbFwiLFxuICAgIGxlZnRFbGVtZW50OiB1bmRlZmluZWQsXG4gICAgbGltaXQ6IG51bGwsXG4gICAgbmFtZTogbnVsbCxcbiAgICBvbkJsdXI6IG5vb3AsXG4gICAgb25DaGFuZ2U6IG5vb3AsXG4gICAgb25Gb2N1czogbm9vcCxcbiAgICBvbktleURvd246IG5vb3AsXG4gICAgb25QcmVzc0VudGVyOiBub29wLFxuICAgIHBsYWNlaG9sZGVyOiBcIuivt+i+k+WFpVwiLFxuICAgIHJpZ2h0RWxlbWVudDogdW5kZWZpbmVkLFxuICAgIHNpemU6IFwic21hbGxcIixcbiAgICB0aGVtZTogbnVsbCxcbiAgICB0eXBlOiBudWxsLFxuICAgIHZhbHVlOiBudWxsLFxuICB9XG5cbiAgcHVibGljIHN0YXRlOiBJSW5wdXRTdGF0ZSA9IHtcbiAgICBmb2N1c2VkOiBmYWxzZSxcbiAgICBsZWZ0RWxlbWVudFdpZHRoOiBudWxsLFxuICAgIHJpZ2h0RWxlbWVudFdpZHRoOiBudWxsLFxuICB9XG5cbiAgcHVibGljIGlucHV0OiBIVE1MSW5wdXRFbGVtZW50XG5cbiAgcHVibGljIGxlZnRFbGVtZW50OiBIVE1MRGl2RWxlbWVudFxuXG4gIHB1YmxpYyByaWdodEVsZW1lbnQ6IEhUTUxEaXZFbGVtZW50XG5cbiAgcHVibGljIGNsZWF2ZTogYW55XG5cbiAgcHVibGljIGhhbmRsZUNoYW5nZSA9IChlOiBSZWFjdC5DaGFuZ2VFdmVudDxIVE1MSW5wdXRFbGVtZW50PikgPT4ge1xuICAgIGNvbnN0IHtcbiAgICAgIGRpc2FibGVkLFxuICAgICAgb25DaGFuZ2UsXG4gICAgfSA9IHRoaXMucHJvcHNcbiAgICBpZiAoIWRpc2FibGVkICYmIG9uQ2hhbmdlKSB7XG4gICAgICAvKiBlc2xpbnQtZGlzYWJsZSBuby1jb250cm9sLXJlZ2V4ICovXG4gICAgICAvLyAwOCBCYWNrc3BhY2UsIDA5IFRhYiwgMEEg5o2i6KGM56ymLCAwQiDlnoLnm7TliLbooajnrKYsIDBDIOaNoumhtSwgMEQg5Zue6L2mLCBBMCDkuI3pl7Tmlq3nqbrmoLwsXG4gICAgICAvLyAyMDI4LzIwMjkg5YiG6ZqU56ymLCBGRWZmIOWtl+iKgumhuuW6j+agh+iusOOAglxuICAgICAgY29uc3QgdmFsID0gZS50YXJnZXQudmFsdWUucmVwbGFjZSgvXFx1MDAwOHxcXHUwMDA5fFxcdTAwMEF8XFx1MDAwQnxcXHUwMDBDfFxcdTAwMER8XFx1MDBBMHxcXHUyMDI4fFxcdTIwMjl8XFx1RkVGRi9nLCBcIlwiKVxuICAgICAgb25DaGFuZ2UoZSwgdmFsKVxuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBoYW5kbGVLZXlEb3duID0gKGU6IFJlYWN0LktleWJvYXJkRXZlbnQ8SFRNTElucHV0RWxlbWVudD4pID0+IHtcbiAgICBjb25zdCB7IG9uUHJlc3NFbnRlciwgb25LZXlEb3duIH0gPSB0aGlzLnByb3BzXG4gICAgaWYgKGUua2V5Q29kZSA9PT0gMTMgJiYgb25QcmVzc0VudGVyKSB7XG4gICAgICBvblByZXNzRW50ZXIoZSlcbiAgICB9XG4gICAgaWYgKG9uS2V5RG93bikge1xuICAgICAgb25LZXlEb3duKGUpXG4gICAgfVxuICB9XG5cbiAgcHVibGljIGhhbmRsZUJsdXIgPSAoZTogUmVhY3QuRm9jdXNFdmVudDxIVE1MSW5wdXRFbGVtZW50PikgPT4ge1xuICAgIGNvbnN0IHsgb25CbHVyIH0gPSB0aGlzLnByb3BzXG4gICAgdGhpcy5zZXRTdGF0ZSh7IGZvY3VzZWQ6IGZhbHNlIH0pXG4gICAgaWYgKG9uQmx1cikge1xuICAgICAgb25CbHVyKGUpXG4gICAgfVxuICB9XG5cbiAgcHVibGljIGhhbmRsZUZvY3VzID0gKGU6IFJlYWN0LkZvY3VzRXZlbnQ8SFRNTElucHV0RWxlbWVudD4pID0+IHtcbiAgICBjb25zdCB7IG9uRm9jdXMgfSA9IHRoaXMucHJvcHNcbiAgICB0aGlzLnNldFN0YXRlKHsgZm9jdXNlZDogdHJ1ZSB9KVxuICAgIGlmIChvbkZvY3VzKSB7XG4gICAgICBvbkZvY3VzKGUpXG4gICAgfVxuICB9XG5cbiAgcHVibGljIGhhbmRsZUF0dGFjaGVkRWxlbWVudENsaWNrID0gKHBvc2l0aW9uOiBcImxlZnRcIiB8IFwicmlnaHRcIikgPT4ge1xuICAgIGNvbnN0IHsgaW5wdXQgfSA9IHRoaXNcbiAgICBjb25zdCB7IGxlZnRFbGVtZW50LCByaWdodEVsZW1lbnQgfSA9IHRoaXMucHJvcHNcbiAgICBpZiAocG9zaXRpb24gPT09IFwibGVmdFwiICYmIGxlZnRFbGVtZW50ICYmIGxlZnRFbGVtZW50LnR5cGUgJiYgbGVmdEVsZW1lbnQudHlwZS5uYW1lID09PSBcIkljb25cIikge1xuICAgICAgaW5wdXQuZm9jdXMoKVxuICAgICAgaW5wdXQuc2VsZWN0KClcbiAgICB9XG4gICAgaWYgKHBvc2l0aW9uID09PSBcInJpZ2h0XCIgJiYgcmlnaHRFbGVtZW50ICYmIHJpZ2h0RWxlbWVudC50eXBlICYmIHJpZ2h0RWxlbWVudC50eXBlLm5hbWUgPT09IFwiSWNvblwiKSB7XG4gICAgICBpbnB1dC5mb2N1cygpXG4gICAgICBpbnB1dC5zZWxlY3QoKVxuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBmaXhDb250cm9sbGVkVmFsdWUgPSAodmFsdWU/OiBzdHJpbmcgfCBudWxsKSA9PiB7XG4gICAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gXCJ1bmRlZmluZWRcIiB8fCB2YWx1ZSA9PT0gbnVsbCkge1xuICAgICAgcmV0dXJuIFwiXCJcbiAgICB9XG4gICAgcmV0dXJuIHZhbHVlXG4gIH1cblxuICBwdWJsaWMgdXBkYXRlRWxlbWVudHNXaWR0aCA9ICgpID0+IHtcbiAgICAvKipcbiAgICAgKiDov5nkuKrmlrnms5XkvJrlnKggZGlkVXBkYXRlIOWSjCBkaWRNb3VudCDml7bljrsgc2V0U3RhdGVcbiAgICAgKiDkuIDlrpropoHpgb/lhY3pgKDmiJDlvqrnjq/jgIJcbiAgICAgKi9cbiAgICBjb25zdCB7IGxlZnRFbGVtZW50V2lkdGgsIHJpZ2h0RWxlbWVudFdpZHRoIH0gPSB0aGlzLnN0YXRlXG5cbiAgICBpZiAodGhpcy5sZWZ0RWxlbWVudCkge1xuICAgICAgY29uc3QgeyBjbGllbnRXaWR0aCB9ID0gdGhpcy5sZWZ0RWxlbWVudFxuICAgICAgLy8g6Ziy5q2i5b6q546vXG4gICAgICBpZiAoTWF0aC5hYnMoY2xpZW50V2lkdGggLSAobGVmdEVsZW1lbnRXaWR0aCB8fCAwKSkgPiAyKSB7XG4gICAgICAgIHRoaXMuc2V0U3RhdGUoeyBsZWZ0RWxlbWVudFdpZHRoOiBjbGllbnRXaWR0aCB9KVxuICAgICAgfVxuICAgIH0gZWxzZSBpZiAobGVmdEVsZW1lbnRXaWR0aCkge1xuICAgICAgdGhpcy5zZXRTdGF0ZSh7IGxlZnRFbGVtZW50V2lkdGg6IG51bGwgfSlcbiAgICB9XG5cbiAgICBpZiAodGhpcy5yaWdodEVsZW1lbnQpIHtcbiAgICAgIGNvbnN0IHsgY2xpZW50V2lkdGggfSA9IHRoaXMucmlnaHRFbGVtZW50XG4gICAgICAvLyDpmLLmraLlvqrnjq9cbiAgICAgIGlmIChNYXRoLmFicyhjbGllbnRXaWR0aCAtIChyaWdodEVsZW1lbnRXaWR0aCB8fCAwKSkgPiAyKSB7XG4gICAgICAgIHRoaXMuc2V0U3RhdGUoeyByaWdodEVsZW1lbnRXaWR0aDogY2xpZW50V2lkdGggfSlcbiAgICAgIH1cbiAgICB9IGVsc2UgaWYgKHJpZ2h0RWxlbWVudFdpZHRoKSB7XG4gICAgICB0aGlzLnNldFN0YXRlKHsgcmlnaHRFbGVtZW50V2lkdGg6IG51bGwgfSlcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgc2F2ZUlucHV0ID0gKG5vZGU6IEhUTUxJbnB1dEVsZW1lbnQgfCBhbnkpID0+IHtcbiAgICBpZiAobm9kZSkge1xuICAgICAgY29uc3QgeyBjbGVhdmVPcHRpb25zIH0gPSB0aGlzLnByb3BzXG4gICAgICBpZiAoIWNsZWF2ZU9wdGlvbnMgfHwgT2JqZWN0LmtleXMoY2xlYXZlT3B0aW9ucykubGVuZ3RoID09PSAwKSB7XG4gICAgICAgIHRoaXMuaW5wdXQgPSBub2RlXG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLmNsZWF2ZSA9IG5vZGVcbiAgICAgICAgdGhpcy5pbnB1dCA9IG5vZGUuZWxlbWVudFxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBzYXZlTGVmdEVsZW1lbnQgPSAobm9kZTogSFRNTERpdkVsZW1lbnQpID0+IHtcbiAgICB0aGlzLmxlZnRFbGVtZW50ID0gbm9kZVxuICB9XG5cbiAgcHVibGljIHNhdmVSaWdodEVsZW1lbnQgPSAobm9kZTogSFRNTERpdkVsZW1lbnQpID0+IHtcbiAgICB0aGlzLnJpZ2h0RWxlbWVudCA9IG5vZGVcbiAgfVxuXG4gIHB1YmxpYyBnZXRGb3JtYXRTdHJMZW5nID0gKHN0cjogc3RyaW5nKSA9PiB7XG4gICAgY29uc3QgbGVuID0gc3RyLmxlbmd0aFxuICAgIGxldCByZWFsTGVuZ3RoID0gMFxuICAgIGxldCBjaGFyQ29kZSA9IC0xXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBsZW47IGkgKz0gMSkge1xuICAgICAgY2hhckNvZGUgPSBzdHIuY2hhckNvZGVBdChpKVxuICAgICAgaWYgKGNoYXJDb2RlID49IDAgJiYgY2hhckNvZGUgPD0gMTI4KSB7XG4gICAgICAgIHJlYWxMZW5ndGggKz0gMC41XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZWFsTGVuZ3RoICs9IDFcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIE1hdGguY2VpbChyZWFsTGVuZ3RoKVxuICB9XG5cbiAgcHVibGljIHNob3VsZENvbXBvbmVudFVwZGF0ZSA9IChuZXh0UHJvcHM6IElJbnB1dFByb3BzLCBuZXh0U3RhdGU6IElJbnB1dFN0YXRlKSA9PiAoXG4gICAgIXNoYWxsb3dFcXVhbCh0aGlzLnByb3BzLCBuZXh0UHJvcHMpIHx8ICFzaGFsbG93RXF1YWwodGhpcy5zdGF0ZSwgbmV4dFN0YXRlKVxuICApXG5cbiAgcHVibGljIGNvbXBvbmVudERpZFVwZGF0ZSA9ICgpID0+IHtcbiAgICB0aGlzLnVwZGF0ZUVsZW1lbnRzV2lkdGgoKVxuICAgIGlmICh0aGlzLmNsZWF2ZSkge1xuICAgICAgLyoqXG4gICAgICAgKiDkv67lpI0gY2xlYXZlLjEuNC43IGJ1ZzpcbiAgICAgICAqL1xuICAgICAgY29uc3QgeyB2YWx1ZSB9ID0gdGhpcy5wcm9wc1xuICAgICAgaWYgKHRoaXMuY2xlYXZlLmxhc3RJbnB1dFZhbHVlICE9PSB2YWx1ZSkge1xuICAgICAgICB0aGlzLmNsZWF2ZS5sYXN0SW5wdXRWYWx1ZSA9IHZhbHVlXG4gICAgICB9XG4gICAgICBpZiAodGhpcy5jbGVhdmUuc3RhdGUudmFsdWUgIT09IHZhbHVlKSB7XG4gICAgICAgIHRoaXMuY2xlYXZlLnN0YXRlLnZhbHVlID0gdmFsdWVcbiAgICAgIH1cbiAgICAgIGlmICh0aGlzLmNsZWF2ZS5wcm9wZXJ0aWVzLnJlc3VsdCAhPT0gdmFsdWUpIHtcbiAgICAgICAgdGhpcy5jbGVhdmUucHJvcGVydGllcy5yZXN1bHQgPSB2YWx1ZVxuICAgICAgfVxuICAgICAgaWYgKHRoaXMuaW5wdXQudmFsdWUgIT09IHZhbHVlICYmIHZhbHVlKSB7XG4gICAgICAgIHRoaXMuaW5wdXQudmFsdWUgPSB2YWx1ZVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBjb21wb25lbnREaWRNb3VudCA9ICgpID0+IHRoaXMudXBkYXRlRWxlbWVudHNXaWR0aCgpXG5cbiAgcHVibGljIHJlbmRlcigpIHtcbiAgICBjb25zdCB7XG4gICAgICBhdXRvRm9jdXMsXG4gICAgICBjbGFzc05hbWUsXG4gICAgICBjbGVhdmVPcHRpb25zLFxuICAgICAgY291bnRIYW56aSxcbiAgICAgIGRlZmF1bHRWYWx1ZSxcbiAgICAgIGRpc2FibGVkLFxuICAgICAgaWQsXG4gICAgICBpbnRlbnQsXG4gICAgICBsZWZ0RWxlbWVudCxcbiAgICAgIGxpbWl0LFxuICAgICAgbmFtZSxcbiAgICAgIHBsYWNlaG9sZGVyLFxuICAgICAgcmlnaHRFbGVtZW50LFxuICAgICAgc2l6ZSxcbiAgICAgIHRoZW1lLFxuICAgICAgdHlwZSxcbiAgICAgIHZhbHVlLFxuICAgICAgLi4ub3RoZXJQcm9wc1xuICAgIH0gPSB0aGlzLnByb3BzXG5cbiAgICBjb25zdCByZXN0UHJvcHMgPSBvbWl0KG90aGVyUHJvcHMsIFtcbiAgICAgIFwib25CbHVyXCIsXG4gICAgICBcIm9uQ2hhbmdlXCIsXG4gICAgICBcIm9uRm9jdXNcIixcbiAgICAgIFwib25LZXlEb3duXCIsXG4gICAgICBcIm9uUHJlc3NFbnRlclwiXG4gICAgXSlcblxuICAgIGNvbnN0IHtcbiAgICAgIGZvY3VzZWQsXG4gICAgICBsZWZ0RWxlbWVudFdpZHRoLFxuICAgICAgcmlnaHRFbGVtZW50V2lkdGgsXG4gICAgfSA9IHRoaXMuc3RhdGVcblxuICAgIGNvbnN0IGlucHV0UHJvcHM6IHtba2V5OiBzdHJpbmddOiBhbnl9ID0ge1xuICAgICAgYXV0b0ZvY3VzLFxuICAgICAgY2xhc3NOYW1lOiBgJHtwcmVmaXh9LWJhc2VgLFxuICAgICAgZGlzYWJsZWQsXG4gICAgICBpZCxcbiAgICAgIG5hbWUsXG4gICAgICBvbkJsdXI6IHRoaXMuaGFuZGxlQmx1cixcbiAgICAgIG9uQ2hhbmdlOiB0aGlzLmhhbmRsZUNoYW5nZSxcbiAgICAgIG9uRm9jdXM6IHRoaXMuaGFuZGxlRm9jdXMsXG4gICAgICBvbktleURvd246IHRoaXMuaGFuZGxlS2V5RG93bixcbiAgICAgIHBsYWNlaG9sZGVyLFxuICAgICAgcmVmOiB0aGlzLnNhdmVJbnB1dCxcbiAgICAgIHN0eWxlOiB7XG4gICAgICAgIHBhZGRpbmdMZWZ0OiBsZWZ0RWxlbWVudFdpZHRoID8gYCR7bGVmdEVsZW1lbnRXaWR0aH1weGAgOiBcIlwiLFxuICAgICAgICBwYWRkaW5nUmlnaHQ6IHJpZ2h0RWxlbWVudFdpZHRoID8gYCR7cmlnaHRFbGVtZW50V2lkdGh9cHhgIDogXCJcIixcbiAgICAgIH0sXG4gICAgICB0eXBlLFxuICAgIH1cblxuICAgIGlmICh2YWx1ZSAhPT0gbnVsbCkge1xuICAgICAgaW5wdXRQcm9wcy52YWx1ZSA9IHRoaXMuZml4Q29udHJvbGxlZFZhbHVlKHZhbHVlKVxuICAgIH0gZWxzZSB7XG4gICAgICBpbnB1dFByb3BzLmRlZmF1bHRWYWx1ZSA9IHRoaXMuZml4Q29udHJvbGxlZFZhbHVlKGRlZmF1bHRWYWx1ZSlcbiAgICB9XG5cbiAgICBjb25zdCBpbnB1dCA9ICghY2xlYXZlT3B0aW9ucyB8fCBPYmplY3Qua2V5cyhjbGVhdmVPcHRpb25zKS5sZW5ndGggPT09IDApID8gPGlucHV0IHsuLi5pbnB1dFByb3BzfSAvPiA6IDxDbGVhdmUgb3B0aW9ucz17Y2xlYXZlT3B0aW9uc30gey4uLmlucHV0UHJvcHN9IC8+XG5cbiAgICBsZXQgbGVuZ3RoXG4gICAgaWYgKGxpbWl0KSB7XG4gICAgICBpZiAodmFsdWUpIHtcbiAgICAgICAgbGVuZ3RoID0gY291bnRIYW56aSA/IHRoaXMuZ2V0Rm9ybWF0U3RyTGVuZyh2YWx1ZSkgOiB2YWx1ZS5sZW5ndGhcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGxlbmd0aCA9IDBcbiAgICAgIH1cbiAgICB9XG5cbiAgICBjb25zdCBjbGFzc1NldCA9IGNsYXNzTmFtZXMoXG4gICAgICBjbGFzc05hbWUsXG4gICAgICBgJHtwcmVmaXh9LXdyYXBwZXJgLFxuICAgICAgYCR7cHJlZml4fS0ke3NpemV9YCxcbiAgICAgIHtcbiAgICAgICAgW2Ake3ByZWZpeH0tJHt0aGVtZX1gXTogdGhlbWUsXG4gICAgICAgIFtgJHtwcmVmaXh9LWRpc2FibGVkYF06IGRpc2FibGVkLFxuICAgICAgICBbYCR7cHJlZml4fS1saW1pdGVkYF06ICEhbGltaXQsXG4gICAgICAgIFtgJHtwcmVmaXh9LW5vcm1hbGBdOiBpbnRlbnQgPT09IFwibm9ybWFsXCIsXG4gICAgICAgIFtgJHtwcmVmaXh9LXByaW1hcnlgXTogaW50ZW50ID09PSBcInByaW1hcnlcIixcbiAgICAgICAgW2Ake3ByZWZpeH0tc3VjY2Vzc2BdOiBpbnRlbnQgPT09IFwic3VjY2Vzc1wiLFxuICAgICAgICBbYCR7cHJlZml4fS13YXJuaW5nYF06IGludGVudCA9PT0gXCJ3YXJuaW5nXCIsXG4gICAgICAgIFtgJHtwcmVmaXh9LWRhbmdlcmBdOiBpbnRlbnQgPT09IFwiZGFuZ2VyXCIgfHwgKGxlbmd0aCAmJiBsaW1pdCAmJiBsZW5ndGggPiBsaW1pdCksXG4gICAgICAgIFtgJHtwcmVmaXh9LWZvY3VzZWRgXTogZm9jdXNlZCxcbiAgICAgIH0sXG4gICAgKVxuXG4gICAgY29uc3QgbGVmdFR5cGUgPSAobGVmdEVsZW1lbnQgJiYgbGVmdEVsZW1lbnQudHlwZSkgPyBsZWZ0RWxlbWVudC50eXBlLnR5cGUgOiBcIlwiXG4gICAgY29uc3QgcmlnaHRUeXBlID0gKHJpZ2h0RWxlbWVudCAmJiByaWdodEVsZW1lbnQudHlwZSkgPyByaWdodEVsZW1lbnQudHlwZS50eXBlIDogXCJcIlxuXG4gICAgcmV0dXJuIChcbiAgICAgIDxkaXZcbiAgICAgICAgY2xhc3NOYW1lPXtjbGFzc1NldH1cbiAgICAgICAgey4uLnJlc3RQcm9wc31cbiAgICAgID5cbiAgICAgICAge1xuICAgICAgICAgICEhbGVmdEVsZW1lbnQgJiYgKFxuICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICByZWY9e3RoaXMuc2F2ZUxlZnRFbGVtZW50fVxuICAgICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiB0aGlzLmhhbmRsZUF0dGFjaGVkRWxlbWVudENsaWNrKFwibGVmdFwiKX1cbiAgICAgICAgICAgICAgcm9sZT1cIm5vbmVcIlxuICAgICAgICAgICAgICBjbGFzc05hbWU9e2NsYXNzTmFtZXMoYCR7cHJlZml4fS1sZWZ0YCwge1xuICAgICAgICAgICAgICAgIFtgJHtwcmVmaXh9LWxlZnRfYnV0dG9uYF06IGxlZnRUeXBlID09PSBcIkJ1dHRvblwiLFxuICAgICAgICAgICAgICAgIFtgJHtwcmVmaXh9LWxlZnRfaWNvbmBdOiBsZWZ0VHlwZSA9PT0gXCJJY29uXCIsXG4gICAgICAgICAgICAgICAgW2Ake3ByZWZpeH0tbGVmdF9zZWxlY3RgXTogbGVmdFR5cGUgPT09IFwiU2VsZWN0XCIsXG4gICAgICAgICAgICAgIH0pfVxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICB7bGVmdEVsZW1lbnR9XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICApXG4gICAgICAgIH1cbiAgICAgICAgeyBpbnB1dCB9XG4gICAgICAgIHtcbiAgICAgICAgICAhIXJpZ2h0RWxlbWVudCAmJiAoXG4gICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgIHJlZj17dGhpcy5zYXZlUmlnaHRFbGVtZW50fVxuICAgICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiB0aGlzLmhhbmRsZUF0dGFjaGVkRWxlbWVudENsaWNrKFwicmlnaHRcIil9XG4gICAgICAgICAgICAgIHJvbGU9XCJub25lXCJcbiAgICAgICAgICAgICAgY2xhc3NOYW1lPXtjbGFzc05hbWVzKGAke3ByZWZpeH0tcmlnaHRgLCB7XG4gICAgICAgICAgICAgICAgW2Ake3ByZWZpeH0tcmlnaHRfYnV0dG9uYF06IHJpZ2h0VHlwZSA9PT0gXCJCdXR0b25cIixcbiAgICAgICAgICAgICAgICBbYCR7cHJlZml4fS1yaWdodF9pY29uYF06IHJpZ2h0VHlwZSA9PT0gXCJJY29uXCIsXG4gICAgICAgICAgICAgICAgW2Ake3ByZWZpeH0tcmlnaHRfc2VsZWN0YF06IHJpZ2h0VHlwZSA9PT0gXCJTZWxlY3RcIixcbiAgICAgICAgICAgICAgfSl9XG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIHtyaWdodEVsZW1lbnR9XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICApXG4gICAgICAgIH1cbiAgICAgICAge1xuICAgICAgICAgICEhbGltaXQgJiYgKFxuICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9e2Ake3ByZWZpeH0tbGltaXRgfT5cbiAgICAgICAgICAgICAgPHNwYW4+e2Ake2xlbmd0aH0vJHtsaW1pdH1gfTwvc3Bhbj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIClcbiAgICAgICAgfVxuICAgICAgPC9kaXY+XG4gICAgKVxuICB9XG59Il19
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL2NvbXBvbmVudHMvaW5wdXQvSW5wdXQudHN4Il0sIm5hbWVzIjpbIm5vb3AiLCJwcmVmaXgiLCJJbnB1dCIsInN0YXRlIiwiZm9jdXNlZCIsImxlZnRFbGVtZW50V2lkdGgiLCJyaWdodEVsZW1lbnRXaWR0aCIsImlucHV0IiwibGVmdEVsZW1lbnQiLCJyaWdodEVsZW1lbnQiLCJjbGVhdmUiLCJoYW5kbGVDaGFuZ2UiLCJlIiwicHJvcHMiLCJkaXNhYmxlZCIsIm9uQ2hhbmdlIiwidmFsIiwidGFyZ2V0IiwidmFsdWUiLCJyZXBsYWNlIiwiaGFuZGxlS2V5RG93biIsIm9uUHJlc3NFbnRlciIsIm9uS2V5RG93biIsImtleUNvZGUiLCJoYW5kbGVCbHVyIiwib25CbHVyIiwic2V0U3RhdGUiLCJoYW5kbGVGb2N1cyIsIm9uRm9jdXMiLCJoYW5kbGVBdHRhY2hlZEVsZW1lbnRDbGljayIsInBvc2l0aW9uIiwidHlwZSIsIm5hbWUiLCJmb2N1cyIsInNlbGVjdCIsImZpeENvbnRyb2xsZWRWYWx1ZSIsInVwZGF0ZUVsZW1lbnRzV2lkdGgiLCJjbGllbnRXaWR0aCIsIk1hdGgiLCJhYnMiLCJzYXZlSW5wdXQiLCJub2RlIiwic2F2ZUNsZWF2ZSIsImVsZW1lbnQiLCJzYXZlTGVmdEVsZW1lbnQiLCJzYXZlUmlnaHRFbGVtZW50IiwiZ2V0Rm9ybWF0U3RyTGVuZyIsInN0ciIsImxlbiIsImxlbmd0aCIsInJlYWxMZW5ndGgiLCJjaGFyQ29kZSIsImkiLCJjaGFyQ29kZUF0IiwiY2VpbCIsInNob3VsZENvbXBvbmVudFVwZGF0ZSIsIm5leHRQcm9wcyIsIm5leHRTdGF0ZSIsImNvbXBvbmVudERpZFVwZGF0ZSIsImxhc3RJbnB1dFZhbHVlIiwicHJvcGVydGllcyIsInJlc3VsdCIsImNvbXBvbmVudERpZE1vdW50IiwiYXV0b0ZvY3VzIiwiY2xhc3NOYW1lIiwiY2xlYXZlT3B0aW9ucyIsImNvdW50SGFuemkiLCJkZWZhdWx0VmFsdWUiLCJpZCIsImludGVudCIsImxpbWl0IiwicGxhY2Vob2xkZXIiLCJzaXplIiwidGhlbWUiLCJvdGhlclByb3BzIiwicmVzdFByb3BzIiwiaW5wdXRQcm9wcyIsInJlZiIsInN0eWxlIiwicGFkZGluZ0xlZnQiLCJwYWRkaW5nUmlnaHQiLCJjbGVhdmVJbnB1dFByb3BzIiwiSlNPTiIsInBhcnNlIiwic3RyaW5naWZ5IiwiT2JqZWN0Iiwia2V5cyIsImNsYXNzU2V0IiwibGVmdFR5cGUiLCJyaWdodFR5cGUiLCJSZWFjdCIsIkNvbXBvbmVudCIsIlRleHRhcmVhIiwicHJvcFR5cGVzIiwiUHJvcFR5cGVzIiwiYm9vbCIsInN0cmluZyIsIm9iamVjdCIsIm9uZU9mVHlwZSIsIm51bWJlciIsIm9uZU9mIiwiRXJyb3IiLCJmdW5jIiwiZGVmYXVsdFByb3BzIiwidW5kZWZpbmVkIl0sIm1hcHBpbmdzIjoiOzs7Ozs7O0FBQUE7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBRUEsSUFBTUEsSUFBSSxHQUFHLFNBQVBBLElBQU8sR0FBTSxDQUFFLENBQXJCOztBQUNBLElBQU1DLE1BQU0sR0FBRyxZQUFmOztJQXVHcUJDLEs7Ozs7Ozs7Ozs7Ozs7OztVQTRJWkMsSyxHQUFxQjtBQUMxQkMsTUFBQUEsT0FBTyxFQUFFLEtBRGlCO0FBRTFCQyxNQUFBQSxnQkFBZ0IsRUFBRSxJQUZRO0FBRzFCQyxNQUFBQSxpQkFBaUIsRUFBRTtBQUhPLEs7VUFNckJDLEs7VUFFQUMsVztVQUVBQyxZO1VBRUFDLE07O1VBRUFDLFksR0FBZSxVQUFDQyxDQUFELEVBQTRDO0FBQUEsd0JBSTVELE1BQUtDLEtBSnVEO0FBQUEsVUFFOURDLFFBRjhELGVBRTlEQSxRQUY4RDtBQUFBLFVBRzlEQyxRQUg4RCxlQUc5REEsUUFIOEQ7O0FBS2hFLFVBQUksQ0FBQ0QsUUFBRCxJQUFhQyxRQUFqQixFQUEyQjtBQUl6QixZQUFNQyxHQUFHLEdBQUdKLENBQUMsQ0FBQ0ss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c0J4Q2IsRUFBQUEsS0FBSyxFQUFFO0FBdEJpQyxDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgUmVhY3QgZnJvbSAncmVhY3QnXG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gJ3Byb3AtdHlwZXMnXG5pbXBvcnQgY2xhc3NOYW1lcyBmcm9tICdjbGFzc25hbWVzJ1xuaW1wb3J0IENsZWF2ZSBmcm9tICdjbGVhdmUuanMvcmVhY3QnXG5pbXBvcnQgc2hhbGxvd0VxdWFsIGZyb20gJ3NoYWxsb3dlcXVhbCdcbmltcG9ydCBvbWl0IGZyb20gXCIuLi9fdXRpbC9vbWl0XCJcbmltcG9ydCBUZXh0YXJlYSBmcm9tICcuL1RleHRhcmVhJ1xuaW1wb3J0IFwiLi9zdHlsZVwiXG5cbmNvbnN0IG5vb3AgPSAoKSA9PiB7fVxuY29uc3QgcHJlZml4ID0gXCJhZHVpLWlucHV0XCJcblxuZXhwb3J0IGludGVyZmFjZSBJSW5wdXRQcm9wcyB7XG4gIFtrZXk6IHN0cmluZ106IGFueVxuICAvKipcbiAgICogaW5wdXQg5qCH562+5Y6f55Sf5bGe5oCnIC0gYXV0b0ZvY3VzXG4gICAqL1xuICBhdXRvRm9jdXM/OiBib29sZWFuXG4gIC8qKlxuICAgKiDpmYTliqDnsbvlkI1cbiAgICovXG4gIGNsYXNzTmFtZT86IHN0cmluZ1xuICAvKipcbiAgICog5a6e546w5omL5py65Y+344CB5pel5pyf44CB5pWw5a2X5Y+K6Ieq5a6a5LmJ5qC85byP77yM5Y+v5p+l55yLW+ekuuS+i10oaHR0cDovL3d4YWQuZGVzaWduL2FkdWkvY29tcG9uZW50cy9pbnB1dCnjgIJcbiAgICovXG4gIGNsZWF2ZU9wdGlvbnM/OiBvYmplY3RcbiAgLyoqXG4gICAqIOaYr+WQpuaMieeFp+S4gOS4quaxieWtl+eulyAyIOWtl+aVsOeahOaWueW8j+mZkOWItumVv+W6plxuICAgKi9cbiAgY291bnRIYW56aT86IGJvb2xlYW5cbiAgLyoqXG4gICAqIOm7mOiupOWAvCAtIOWGhemDqOmpseWKqFxuICAgKi9cbiAgZGVmYXVsdFZhbHVlPzogc3RyaW5nIHwgbnVsbFxuICAvKipcbiAgICog5piv5ZCm56aB55SoXG4gICAqL1xuICBkaXNhYmxlZD86IGJvb2xlYW5cbiAgLyoqXG4gICAqIOi+k+WFpeahhueahCBpZFxuICAgKi9cbiAgaWQ/OiBzdHJpbmcgfCBudWxsXG4gIC8qKlxuICAgKiDnsbvlnotcbiAgICovXG4gIGludGVudD86IFwibm9ybWFsXCIgfCBcInByaW1hcnlcIiB8IFwic3VjY2Vzc1wiIHwgXCJ3YXJuaW5nXCIgfCBcImRhbmdlclwiXG4gIC8qKlxuICAgKiDliY3nva7lhYPntKBcbiAgICovXG4gIGxlZnRFbGVtZW50PzogSlNYLkVsZW1lbnRcbiAgLyoqXG4gICAqIOmZkOWItumVv+W6plxuICAgKi9cbiAgbGltaXQ/OiBudW1iZXIgfCBudWxsXG4gIC8qKlxuICAgKiBpbnB1dCDmoIfnrb7ljp/nlJ/lsZ7mgKcgLSBuYW1lXG4gICAqL1xuICBuYW1lPzogc3RyaW5nIHwgbnVsbFxuICAvKipcbiAgICogYmx1ciDml7bnmoQgaGFuZGxlclxuICAgKi9cbiAgb25CbHVyPzogKGU6IFJlYWN0LkZvY3VzRXZlbnQ8SFRNTElucHV0RWxlbWVudD4pID0+IHZvaWRcbiAgLyoqXG4gICAqIOWAvOaUueWPmOaXtueahCBoYW5kbGVyXG4gICAqL1xuICBvbkNoYW5nZT86IChlOiBSZWFjdC5DaGFuZ2VFdmVudDxIVE1MSW5wdXRFbGVtZW50PiwgdmFsdWU/OiBzdHJpbmcpID0+IHZvaWRcbiAgLyoqXG4gICAqIGZvY3VzIOaXtueahCBoYW5kbGVyXG4gICAqL1xuICBvbkZvY3VzPzogKGU6IFJlYWN0LkZvY3VzRXZlbnQ8SFRNTElucHV0RWxlbWVudD4pID0+IHZvaWRcbiAgLyoqXG4gICAqIGtleWRvd24g5pe255qEIGhhbmRsZXJcbiAgICovXG4gIG9uS2V5RG93bj86IChlOiBSZWFjdC5LZXlib2FyZEV2ZW50PEhUTUxJbnB1dEVsZW1lbnQ+KSA9PiB2b2lkXG4gIC8qKlxuICAgKiBlbnRlciDml7bnmoQgaGFuZGxlclxuICAgKi9cbiAgb25QcmVzc0VudGVyPzogKGU6IFJlYWN0LktleWJvYXJkRXZlbnQ8SFRNTElucHV0RWxlbWVudD4pID0+IHZvaWRcbiAgLyoqXG4gICAqIHBsYWNlaG9sZGVyXG4gICAqL1xuICBwbGFjZWhvbGRlcj86IHN0cmluZ1xuICAvKipcbiAgICog5ZCO572u5YWD57SgXG4gICAqL1xuICByaWdodEVsZW1lbnQ/OiBKU1guRWxlbWVudFxuICAvKipcbiAgICog6K6+572u5bC65a+4XG4gICAqL1xuICBzaXplPzogXCJtaW5pXCIgfCBcInNtYWxsXCIgfCBcIm1lZGl1bVwiIHwgXCJsYXJnZVwiXG4gIC8qKlxuICAgKiDorr7nva7kuLvpophcbiAgICovXG4gIHRoZW1lPzogbnVsbCB8IFwibGlnaHRcIlxuICAvKipcbiAgICogaW5wdXQg5qCH562+5Y6f55Sf5bGe5oCnIC0gdHlwZVxuICAgKi9cbiAgdHlwZT86IHN0cmluZyB8IG51bGxcbiAgLyoqXG4gICAqIOWAvCAtIOWklumDqOaOp+WItlxuICAgKi9cbiAgdmFsdWU/OiBzdHJpbmcgfCBudWxsXG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSUlucHV0U3RhdGUge1xuICBmb2N1c2VkOiBib29sZWFuXG4gIGxlZnRFbGVtZW50V2lkdGg6IG51bGwgfCBudW1iZXJcbiAgcmlnaHRFbGVtZW50V2lkdGg6IG51bGwgfCBudW1iZXJcbn1cblxuLyoqXG4gKiDovpPlhaXmoYbnlKjkuo7mlofmnKzovpPlhaXnmoTljLrln5/vvIzlj6/nu5PlkIjlm77moIfjgIHmjInpkq7jgIHpgInmi6nlmajnrYnnu4Tku7bkvb/nlKjjgIJcbiAqL1xuZXhwb3J0IGRlZmF1bHQgY2xhc3MgSW5wdXQgZXh0ZW5kcyBSZWFjdC5Db21wb25lbnQ8SUlucHV0UHJvcHMsIElJbnB1dFN0YXRlPiB7XG5cbiAgcHVibGljIHN0YXRpYyBUZXh0YXJlYTogdHlwZW9mIFRleHRhcmVhID0gVGV4dGFyZWFcblxuICBwdWJsaWMgc3RhdGljIHByb3BUeXBlcyA9IHtcbiAgICAvKipcbiAgICAgKiBpbnB1dCDmoIfnrb7ljp/nlJ/lsZ7mgKcgLSBhdXRvRm9jdXNcbiAgICAgKi9cbiAgICBhdXRvRm9jdXM6IFByb3BUeXBlcy5ib29sLFxuICAgIC8qKlxuICAgICAqIOmZhOWKoOexu+WQjVxuICAgICAqL1xuICAgIGNsYXNzTmFtZTogUHJvcFR5cGVzLnN0cmluZyxcbiAgICAvKipcbiAgICAgKiDlrp7njrDmiYvmnLrlj7fjgIHml6XmnJ/jgIHmlbDlrZflj4roh6rlrprkuYnmoLzlvI/vvIzlj6/mn6XnnItb56S65L6LXShodHRwOi8vd3hhZC5kZXNpZ24vYWR1aS9jb21wb25lbnRzL2lucHV0KeOAglxuICAgICAqL1xuICAgIGNsZWF2ZU9wdGlvbnM6IFByb3BUeXBlcy5vYmplY3QsXG4gICAgLyoqXG4gICAgICog5piv5ZCm5oyJ54Wn5LiA5Liq5rGJ5a2X566XIDIg5a2X5pWw55qE5pa55byP6ZmQ5Yi26ZW/5bqmXG4gICAgICovXG4gICAgY291bnRIYW56aTogUHJvcFR5cGVzLmJvb2wsXG4gICAgLyoqXG4gICAgICog6buY6K6k5YC8IC0g5YaF6YOo6amx5YqoXG4gICAgICovXG4gICAgZGVmYXVsdFZhbHVlOiBQcm9wVHlwZXMub25lT2ZUeXBlKFtcbiAgICAgIFByb3BUeXBlcy5zdHJpbmcsXG4gICAgICBQcm9wVHlwZXMubnVtYmVyLFxuICAgIF0pLFxuICAgIC8qKlxuICAgICAqIOaYr+WQpuemgeeUqFxuICAgICAqL1xuICAgIGRpc2FibGVkOiBQcm9wVHlwZXMuYm9vbCxcbiAgICAvKipcbiAgICAgKiDovpPlhaXmoYbnmoQgaWRcbiAgICAgKi9cbiAgICBpZDogUHJvcFR5cGVzLnN0cmluZyxcbiAgICAvKipcbiAgICAgKiDnsbvlnotcbiAgICAgKi9cbiAgICBpbnRlbnQ6IFByb3BUeXBlcy5vbmVPZihbXCJub3JtYWxcIiwgXCJwcmltYXJ5XCIsIFwic3VjY2Vzc1wiLCBcIndhcm5pbmdcIiwgXCJkYW5nZXJcIl0pLFxuICAgIC8qKlxuICAgICAqIOWJjee9ruWFg+e0oFxuICAgICAqL1xuICAgIGxlZnRFbGVtZW50OiBQcm9wVHlwZXMubm9kZSxcbiAgICAvKipcbiAgICAgKiDpmZDliLbplb/luqZcbiAgICAgKi9cbiAgICBsaW1pdDogKHByb3BzOiBJSW5wdXRQcm9wcykgPT4ge1xuICAgICAgY29uc3QgeyBsaW1pdCwgcmlnaHRFbGVtZW50LCB2YWx1ZSB9ID0gcHJvcHNcbiAgICAgIGlmIChsaW1pdCkge1xuICAgICAgICBpZiAodHlwZW9mIChsaW1pdCkgIT09IFwibnVtYmVyXCIpIHtcbiAgICAgICAgICByZXR1cm4gbmV3IEVycm9yKFwiRmFpbGVkIHByb3AgdHlwZTogSW52YWxpZCBwcm9wIGBsaW1pdGAgc3VwcGxpZWQgdG8gYElucHV0YCwgZXhwZWN0ZWQgYG51bWJlcmAuXCIpXG4gICAgICAgIH1cbiAgICAgICAgaWYgKCEhbGltaXQgJiYgISFyaWdodEVsZW1lbnQpIHtcbiAgICAgICAgICByZXR1cm4gbmV3IEVycm9yKFwiSW5wdXQuanMg5LiN5YWB6K645ZCM5pe25L2/55SoIHByb3AgYGxpbWl0YCDkuI4gcHJvcCBgcmlnaHRFbGVtZW50YFwiKVxuICAgICAgICB9XG4gICAgICAgIGlmICghIWxpbWl0ICYmIHZhbHVlID09PSBudWxsKSB7XG4gICAgICAgICAgcmV0dXJuIG5ldyBFcnJvcihcIklucHV0LmpzIOWmguaenOimgemZkOWItuWtl+aVsO+8jOW/hemhu+S7juWklumDqOaOp+WItiB2YWx1ZeOAglwiKVxuICAgICAgICB9XG4gICAgICB9XG4gICAgICByZXR1cm4gbnVsbFxuICAgIH0sXG4gICAgLyoqXG4gICAgICogaW5wdXQg5qCH562+5Y6f55Sf5bGe5oCnIC0gbmFtZVxuICAgICAqL1xuICAgIG5hbWU6IFByb3BUeXBlcy5zdHJpbmcsXG4gICAgLyoqXG4gICAgICogYmx1ciDml7bnmoQgaGFuZGxlclxuICAgICAqL1xuICAgIG9uQmx1cjogUHJvcFR5cGVzLmZ1bmMsXG4gICAgLyoqXG4gICAgICog5YC85pS55Y+Y5pe255qEIGhhbmRsZXJcbiAgICAgKi9cbiAgICBvbkNoYW5nZTogUHJvcFR5cGVzLmZ1bmMsXG4gICAgLyoqXG4gICAgICogZm9jdXMg5pe255qEIGhhbmRsZXJcbiAgICAgKi9cbiAgICBvbkZvY3VzOiBQcm9wVHlwZXMuZnVuYyxcbiAgICAvKipcbiAgICAgKiBrZXlkb3duIOaXtueahCBoYW5kbGVyXG4gICAgICovXG4gICAgb25LZXlEb3duOiBQcm9wVHlwZXMuZnVuYyxcbiAgICAvKipcbiAgICAgKiBlbnRlciDml7bnmoQgaGFuZGxlclxuICAgICAqL1xuICAgIG9uUHJlc3NFbnRlcjogUHJvcFR5cGVzLmZ1bmMsXG4gICAgLyoqXG4gICAgICogcGxhY2Vob2xkZXJcbiAgICAgKi9cbiAgICBwbGFjZWhvbGRlcjogUHJvcFR5cGVzLnN0cmluZyxcbiAgICAvKipcbiAgICAgKiDlkI7nva7lhYPntKBcbiAgICAgKi9cbiAgICByaWdodEVsZW1lbnQ6IFByb3BUeXBlcy5ub2RlLFxuICAgIC8qKlxuICAgICAqIOiuvue9ruWwuuWvuFxuICAgICAqL1xuICAgIHNpemU6IFByb3BUeXBlcy5vbmVPZihbXCJtaW5pXCIsIFwic21hbGxcIiwgXCJtZWRpdW1cIiwgXCJsYXJnZVwiXSksXG4gICAgLyoqXG4gICAgICog6K6+572u5Li76aKYXG4gICAgICovXG4gICAgdGhlbWU6IFByb3BUeXBlcy5vbmVPZihbbnVsbCwgXCJsaWdodFwiXSksXG4gICAgLyoqXG4gICAgICogaW5wdXQg5qCH562+5Y6f55Sf5bGe5oCnIC0gdHlwZVxuICAgICAqL1xuICAgIHR5cGU6IFByb3BUeXBlcy5zdHJpbmcsXG4gICAgLyoqXG4gICAgICog5YC8IC0g5aSW6YOo5o6n5Yi2XG4gICAgICovXG4gICAgdmFsdWU6IFByb3BUeXBlcy5vbmVPZlR5cGUoW1xuICAgICAgUHJvcFR5cGVzLnN0cmluZyxcbiAgICAgIFByb3BUeXBlcy5udW1iZXIsXG4gICAgXSksXG4gIH1cblxuICBwdWJsaWMgc3RhdGljIGRlZmF1bHRQcm9wczogSUlucHV0UHJvcHMgPSB7XG4gICAgYXV0b0ZvY3VzOiBmYWxzZSxcbiAgICBjbGFzc05hbWU6IHVuZGVmaW5lZCxcbiAgICBjbGVhdmVPcHRpb25zOiB7fSxcbiAgICBjb3VudEhhbnppOiB0cnVlLFxuICAgIGRlZmF1bHRWYWx1ZTogbnVsbCxcbiAgICBkaXNhYmxlZDogZmFsc2UsXG4gICAgaWQ6IG51bGwsXG4gICAgaW50ZW50OiBcIm5vcm1hbFwiLFxuICAgIGxlZnRFbGVtZW50OiB1bmRlZmluZWQsXG4gICAgbGltaXQ6IG51bGwsXG4gICAgbmFtZTogbnVsbCxcbiAgICBvbkJsdXI6IG5vb3AsXG4gICAgb25DaGFuZ2U6IG5vb3AsXG4gICAgb25Gb2N1czogbm9vcCxcbiAgICBvbktleURvd246IG5vb3AsXG4gICAgb25QcmVzc0VudGVyOiBub29wLFxuICAgIHBsYWNlaG9sZGVyOiBcIuivt+i+k+WFpVwiLFxuICAgIHJpZ2h0RWxlbWVudDogdW5kZWZpbmVkLFxuICAgIHNpemU6IFwic21hbGxcIixcbiAgICB0aGVtZTogbnVsbCxcbiAgICB0eXBlOiBudWxsLFxuICAgIHZhbHVlOiBudWxsLFxuICB9XG5cbiAgcHVibGljIHN0YXRlOiBJSW5wdXRTdGF0ZSA9IHtcbiAgICBmb2N1c2VkOiBmYWxzZSxcbiAgICBsZWZ0RWxlbWVudFdpZHRoOiBudWxsLFxuICAgIHJpZ2h0RWxlbWVudFdpZHRoOiBudWxsLFxuICB9XG5cbiAgcHVibGljIGlucHV0OiBIVE1MSW5wdXRFbGVtZW50XG5cbiAgcHVibGljIGxlZnRFbGVtZW50OiBIVE1MRGl2RWxlbWVudFxuXG4gIHB1YmxpYyByaWdodEVsZW1lbnQ6IEhUTUxEaXZFbGVtZW50XG5cbiAgcHVibGljIGNsZWF2ZTogYW55XG5cbiAgcHVibGljIGhhbmRsZUNoYW5nZSA9IChlOiBSZWFjdC5DaGFuZ2VFdmVudDxIVE1MSW5wdXRFbGVtZW50PikgPT4ge1xuICAgIGNvbnN0IHtcbiAgICAgIGRpc2FibGVkLFxuICAgICAgb25DaGFuZ2UsXG4gICAgfSA9IHRoaXMucHJvcHNcbiAgICBpZiAoIWRpc2FibGVkICYmIG9uQ2hhbmdlKSB7XG4gICAgICAvKiBlc2xpbnQtZGlzYWJsZSBuby1jb250cm9sLXJlZ2V4ICovXG4gICAgICAvLyAwOCBCYWNrc3BhY2UsIDA5IFRhYiwgMEEg5o2i6KGM56ymLCAwQiDlnoLnm7TliLbooajnrKYsIDBDIOaNoumhtSwgMEQg5Zue6L2mLCBBMCDkuI3pl7Tmlq3nqbrmoLwsXG4gICAgICAvLyAyMDI4LzIwMjkg5YiG6ZqU56ymLCBGRWZmIOWtl+iKgumhuuW6j+agh+iusOOAglxuICAgICAgY29uc3QgdmFsID0gZS50YXJnZXQudmFsdWUucmVwbGFjZSgvXFx1MDAwOHxcXHUwMDA5fFxcdTAwMEF8XFx1MDAwQnxcXHUwMDBDfFxcdTAwMER8XFx1MDBBMHxcXHUyMDI4fFxcdTIwMjl8XFx1RkVGRi9nLCBcIlwiKVxuICAgICAgb25DaGFuZ2UoZSwgdmFsKVxuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBoYW5kbGVLZXlEb3duID0gKGU6IFJlYWN0LktleWJvYXJkRXZlbnQ8SFRNTElucHV0RWxlbWVudD4pID0+IHtcbiAgICBjb25zdCB7IG9uUHJlc3NFbnRlciwgb25LZXlEb3duIH0gPSB0aGlzLnByb3BzXG4gICAgaWYgKGUua2V5Q29kZSA9PT0gMTMgJiYgb25QcmVzc0VudGVyKSB7XG4gICAgICBvblByZXNzRW50ZXIoZSlcbiAgICB9XG4gICAgaWYgKG9uS2V5RG93bikge1xuICAgICAgb25LZXlEb3duKGUpXG4gICAgfVxuICB9XG5cbiAgcHVibGljIGhhbmRsZUJsdXIgPSAoZTogUmVhY3QuRm9jdXNFdmVudDxIVE1MSW5wdXRFbGVtZW50PikgPT4ge1xuICAgIGNvbnN0IHsgb25CbHVyIH0gPSB0aGlzLnByb3BzXG4gICAgdGhpcy5zZXRTdGF0ZSh7IGZvY3VzZWQ6IGZhbHNlIH0pXG4gICAgaWYgKG9uQmx1cikge1xuICAgICAgb25CbHVyKGUpXG4gICAgfVxuICB9XG5cbiAgcHVibGljIGhhbmRsZUZvY3VzID0gKGU6IFJlYWN0LkZvY3VzRXZlbnQ8SFRNTElucHV0RWxlbWVudD4pID0+IHtcbiAgICBjb25zdCB7IG9uRm9jdXMgfSA9IHRoaXMucHJvcHNcbiAgICB0aGlzLnNldFN0YXRlKHsgZm9jdXNlZDogdHJ1ZSB9KVxuICAgIGlmIChvbkZvY3VzKSB7XG4gICAgICBvbkZvY3VzKGUpXG4gICAgfVxuICB9XG5cbiAgcHVibGljIGhhbmRsZUF0dGFjaGVkRWxlbWVudENsaWNrID0gKHBvc2l0aW9uOiBcImxlZnRcIiB8IFwicmlnaHRcIikgPT4ge1xuICAgIGNvbnN0IHsgaW5wdXQgfSA9IHRoaXNcbiAgICBjb25zdCB7IGxlZnRFbGVtZW50LCByaWdodEVsZW1lbnQgfSA9IHRoaXMucHJvcHNcbiAgICBpZiAocG9zaXRpb24gPT09IFwibGVmdFwiICYmIGxlZnRFbGVtZW50ICYmIGxlZnRFbGVtZW50LnR5cGUgJiYgbGVmdEVsZW1lbnQudHlwZS5uYW1lID09PSBcIkljb25cIikge1xuICAgICAgaW5wdXQuZm9jdXMoKVxuICAgICAgaW5wdXQuc2VsZWN0KClcbiAgICB9XG4gICAgaWYgKHBvc2l0aW9uID09PSBcInJpZ2h0XCIgJiYgcmlnaHRFbGVtZW50ICYmIHJpZ2h0RWxlbWVudC50eXBlICYmIHJpZ2h0RWxlbWVudC50eXBlLm5hbWUgPT09IFwiSWNvblwiKSB7XG4gICAgICBpbnB1dC5mb2N1cygpXG4gICAgICBpbnB1dC5zZWxlY3QoKVxuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBmaXhDb250cm9sbGVkVmFsdWUgPSAodmFsdWU/OiBzdHJpbmcgfCBudWxsKSA9PiB7XG4gICAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gXCJ1bmRlZmluZWRcIiB8fCB2YWx1ZSA9PT0gbnVsbCkge1xuICAgICAgcmV0dXJuIFwiXCJcbiAgICB9XG4gICAgcmV0dXJuIHZhbHVlXG4gIH1cblxuICBwdWJsaWMgdXBkYXRlRWxlbWVudHNXaWR0aCA9ICgpID0+IHtcbiAgICAvKipcbiAgICAgKiDov5nkuKrmlrnms5XkvJrlnKggZGlkVXBkYXRlIOWSjCBkaWRNb3VudCDml7bljrsgc2V0U3RhdGVcbiAgICAgKiDkuIDlrpropoHpgb/lhY3pgKDmiJDlvqrnjq/jgIJcbiAgICAgKi9cbiAgICBjb25zdCB7IGxlZnRFbGVtZW50V2lkdGgsIHJpZ2h0RWxlbWVudFdpZHRoIH0gPSB0aGlzLnN0YXRlXG5cbiAgICBpZiAodGhpcy5sZWZ0RWxlbWVudCkge1xuICAgICAgY29uc3QgeyBjbGllbnRXaWR0aCB9ID0gdGhpcy5sZWZ0RWxlbWVudFxuICAgICAgLy8g6Ziy5q2i5b6q546vXG4gICAgICBpZiAoTWF0aC5hYnMoY2xpZW50V2lkdGggLSAobGVmdEVsZW1lbnRXaWR0aCB8fCAwKSkgPiAyKSB7XG4gICAgICAgIHRoaXMuc2V0U3RhdGUoeyBsZWZ0RWxlbWVudFdpZHRoOiBjbGllbnRXaWR0aCB9KVxuICAgICAgfVxuICAgIH0gZWxzZSBpZiAobGVmdEVsZW1lbnRXaWR0aCkge1xuICAgICAgdGhpcy5zZXRTdGF0ZSh7IGxlZnRFbGVtZW50V2lkdGg6IG51bGwgfSlcbiAgICB9XG5cbiAgICBpZiAodGhpcy5yaWdodEVsZW1lbnQpIHtcbiAgICAgIGNvbnN0IHsgY2xpZW50V2lkdGggfSA9IHRoaXMucmlnaHRFbGVtZW50XG4gICAgICAvLyDpmLLmraLlvqrnjq9cbiAgICAgIGlmIChNYXRoLmFicyhjbGllbnRXaWR0aCAtIChyaWdodEVsZW1lbnRXaWR0aCB8fCAwKSkgPiAyKSB7XG4gICAgICAgIHRoaXMuc2V0U3RhdGUoeyByaWdodEVsZW1lbnRXaWR0aDogY2xpZW50V2lkdGggfSlcbiAgICAgIH1cbiAgICB9IGVsc2UgaWYgKHJpZ2h0RWxlbWVudFdpZHRoKSB7XG4gICAgICB0aGlzLnNldFN0YXRlKHsgcmlnaHRFbGVtZW50V2lkdGg6IG51bGwgfSlcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgc2F2ZUlucHV0ID0gKG5vZGU6IEhUTUxJbnB1dEVsZW1lbnQpID0+IHtcbiAgICBpZiAobm9kZSkge1xuICAgICAgdGhpcy5pbnB1dCA9IG5vZGVcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgc2F2ZUNsZWF2ZSA9IChub2RlOiBhbnkpID0+IHtcbiAgICBpZiAobm9kZSkge1xuICAgICAgdGhpcy5jbGVhdmUgPSBub2RlXG4gICAgICB0aGlzLmlucHV0ID0gbm9kZS5lbGVtZW50XG4gICAgfVxuICB9XG5cbiAgcHVibGljIHNhdmVMZWZ0RWxlbWVudCA9IChub2RlOiBIVE1MRGl2RWxlbWVudCkgPT4ge1xuICAgIHRoaXMubGVmdEVsZW1lbnQgPSBub2RlXG4gIH1cblxuICBwdWJsaWMgc2F2ZVJpZ2h0RWxlbWVudCA9IChub2RlOiBIVE1MRGl2RWxlbWVudCkgPT4ge1xuICAgIHRoaXMucmlnaHRFbGVtZW50ID0gbm9kZVxuICB9XG5cbiAgcHVibGljIGdldEZvcm1hdFN0ckxlbmcgPSAoc3RyOiBzdHJpbmcpID0+IHtcbiAgICBjb25zdCBsZW4gPSBzdHIubGVuZ3RoXG4gICAgbGV0IHJlYWxMZW5ndGggPSAwXG4gICAgbGV0IGNoYXJDb2RlID0gLTFcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IGxlbjsgaSArPSAxKSB7XG4gICAgICBjaGFyQ29kZSA9IHN0ci5jaGFyQ29kZUF0KGkpXG4gICAgICBpZiAoY2hhckNvZGUgPj0gMCAmJiBjaGFyQ29kZSA8PSAxMjgpIHtcbiAgICAgICAgcmVhbExlbmd0aCArPSAwLjVcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJlYWxMZW5ndGggKz0gMVxuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gTWF0aC5jZWlsKHJlYWxMZW5ndGgpXG4gIH1cblxuICBwdWJsaWMgc2hvdWxkQ29tcG9uZW50VXBkYXRlID0gKG5leHRQcm9wczogSUlucHV0UHJvcHMsIG5leHRTdGF0ZTogSUlucHV0U3RhdGUpID0+IChcbiAgICAhc2hhbGxvd0VxdWFsKHRoaXMucHJvcHMsIG5leHRQcm9wcykgfHwgIXNoYWxsb3dFcXVhbCh0aGlzLnN0YXRlLCBuZXh0U3RhdGUpXG4gIClcblxuICBwdWJsaWMgY29tcG9uZW50RGlkVXBkYXRlID0gKCkgPT4ge1xuICAgIHRoaXMudXBkYXRlRWxlbWVudHNXaWR0aCgpXG4gICAgaWYgKHRoaXMuY2xlYXZlKSB7XG4gICAgICAvKipcbiAgICAgICAqIOS/ruWkjSBjbGVhdmUuMS40LjcgYnVnOlxuICAgICAgICovXG4gICAgICBjb25zdCB7IHZhbHVlIH0gPSB0aGlzLnByb3BzXG4gICAgICBpZiAodGhpcy5jbGVhdmUubGFzdElucHV0VmFsdWUgIT09IHZhbHVlKSB7XG4gICAgICAgIHRoaXMuY2xlYXZlLmxhc3RJbnB1dFZhbHVlID0gdmFsdWVcbiAgICAgIH1cbiAgICAgIGlmICh0aGlzLmNsZWF2ZS5zdGF0ZS52YWx1ZSAhPT0gdmFsdWUpIHtcbiAgICAgICAgdGhpcy5jbGVhdmUuc3RhdGUudmFsdWUgPSB2YWx1ZVxuICAgICAgfVxuICAgICAgaWYgKHRoaXMuY2xlYXZlLnByb3BlcnRpZXMucmVzdWx0ICE9PSB2YWx1ZSkge1xuICAgICAgICB0aGlzLmNsZWF2ZS5wcm9wZXJ0aWVzLnJlc3VsdCA9IHZhbHVlXG4gICAgICB9XG4gICAgICBpZiAodGhpcy5pbnB1dC52YWx1ZSAhPT0gdmFsdWUgJiYgdmFsdWUpIHtcbiAgICAgICAgdGhpcy5pbnB1dC52YWx1ZSA9IHZhbHVlXG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcHVibGljIGNvbXBvbmVudERpZE1vdW50ID0gKCkgPT4gdGhpcy51cGRhdGVFbGVtZW50c1dpZHRoKClcblxuICBwdWJsaWMgcmVuZGVyKCkge1xuICAgIGNvbnN0IHtcbiAgICAgIGF1dG9Gb2N1cyxcbiAgICAgIGNsYXNzTmFtZSxcbiAgICAgIGNsZWF2ZU9wdGlvbnMsXG4gICAgICBjb3VudEhhbnppLFxuICAgICAgZGVmYXVsdFZhbHVlLFxuICAgICAgZGlzYWJsZWQsXG4gICAgICBpZCxcbiAgICAgIGludGVudCxcbiAgICAgIGxlZnRFbGVtZW50LFxuICAgICAgbGltaXQsXG4gICAgICBuYW1lLFxuICAgICAgcGxhY2Vob2xkZXIsXG4gICAgICByaWdodEVsZW1lbnQsXG4gICAgICBzaXplLFxuICAgICAgdGhlbWUsXG4gICAgICB0eXBlLFxuICAgICAgdmFsdWUsXG4gICAgICAuLi5vdGhlclByb3BzXG4gICAgfSA9IHRoaXMucHJvcHNcblxuICAgIGNvbnN0IHJlc3RQcm9wcyA9IG9taXQob3RoZXJQcm9wcywgW1xuICAgICAgXCJvbkJsdXJcIixcbiAgICAgIFwib25DaGFuZ2VcIixcbiAgICAgIFwib25Gb2N1c1wiLFxuICAgICAgXCJvbktleURvd25cIixcbiAgICAgIFwib25QcmVzc0VudGVyXCJcbiAgICBdKVxuXG4gICAgY29uc3Qge1xuICAgICAgZm9jdXNlZCxcbiAgICAgIGxlZnRFbGVtZW50V2lkdGgsXG4gICAgICByaWdodEVsZW1lbnRXaWR0aCxcbiAgICB9ID0gdGhpcy5zdGF0ZVxuXG4gICAgY29uc3QgaW5wdXRQcm9wczoge1trZXk6IHN0cmluZ106IGFueX0gPSB7XG4gICAgICBhdXRvRm9jdXMsXG4gICAgICBjbGFzc05hbWU6IGAke3ByZWZpeH0tYmFzZWAsXG4gICAgICBkaXNhYmxlZCxcbiAgICAgIGlkLFxuICAgICAgbmFtZSxcbiAgICAgIG9uQmx1cjogdGhpcy5oYW5kbGVCbHVyLFxuICAgICAgb25DaGFuZ2U6IHRoaXMuaGFuZGxlQ2hhbmdlLFxuICAgICAgb25Gb2N1czogdGhpcy5oYW5kbGVGb2N1cyxcbiAgICAgIG9uS2V5RG93bjogdGhpcy5oYW5kbGVLZXlEb3duLFxuICAgICAgcGxhY2Vob2xkZXIsXG4gICAgICByZWY6IHRoaXMuc2F2ZUlucHV0LFxuICAgICAgc3R5bGU6IHtcbiAgICAgICAgcGFkZGluZ0xlZnQ6IGxlZnRFbGVtZW50V2lkdGggPyBgJHtsZWZ0RWxlbWVudFdpZHRofXB4YCA6IFwiXCIsXG4gICAgICAgIHBhZGRpbmdSaWdodDogcmlnaHRFbGVtZW50V2lkdGggPyBgJHtyaWdodEVsZW1lbnRXaWR0aH1weGAgOiBcIlwiLFxuICAgICAgfSxcbiAgICAgIHR5cGUsXG4gICAgfVxuXG4gICAgY29uc3QgY2xlYXZlSW5wdXRQcm9wcyA9IEpTT04ucGFyc2UoSlNPTi5zdHJpbmdpZnkoaW5wdXRQcm9wcykpXG5cbiAgICBpZiAodmFsdWUgIT09IG51bGwpIHtcbiAgICAgIGlucHV0UHJvcHMudmFsdWUgPSB0aGlzLmZpeENvbnRyb2xsZWRWYWx1ZSh2YWx1ZSlcbiAgICB9IGVsc2Uge1xuICAgICAgaW5wdXRQcm9wcy5kZWZhdWx0VmFsdWUgPSB0aGlzLmZpeENvbnRyb2xsZWRWYWx1ZShkZWZhdWx0VmFsdWUpXG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogY2xlYXZlIOS4jeaOpeaUtuWOn+eUn+eahCBkZWZhdWx0VmFsdWXvvIzlv4XpobvkvKDlhaUgdmFsdWUgcHJvcCDmnaXlrp7njrAgZGVmYXVsdFZhbHVlIOeahOS9nOeUqFxuICAgICAqIGh0dHBzOi8vZ2l0aHViLmNvbS9ub3Npci9jbGVhdmUuanMvYmxvYi9tYXN0ZXIvZG9jL3JlYWN0anMtY29tcG9uZW50LXVzYWdlLm1kI2hvdy10by1wYXNzLWRlZmF1bHQtdmFsdWVcbiAgICAgKi9cbiAgICBjbGVhdmVJbnB1dFByb3BzLnZhbHVlID0gdmFsdWUgfHwgZGVmYXVsdFZhbHVlIHx8IFwiXCJcblxuICAgIGNvbnN0IGlucHV0ID0gKCFjbGVhdmVPcHRpb25zIHx8IE9iamVjdC5rZXlzKGNsZWF2ZU9wdGlvbnMpLmxlbmd0aCA9PT0gMCkgPyAoXG4gICAgICA8aW5wdXQgey4uLmlucHV0UHJvcHN9IC8+XG4gICAgKSA6IChcbiAgICAgIDxDbGVhdmVcbiAgICAgICAgb3B0aW9ucz17Y2xlYXZlT3B0aW9uc31cbiAgICAgICAgey4uLmNsZWF2ZUlucHV0UHJvcHN9XG4gICAgICAgIHJlZj17dGhpcy5zYXZlQ2xlYXZlfVxuICAgICAgLz5cbiAgICApXG5cbiAgICBsZXQgbGVuZ3RoXG4gICAgaWYgKGxpbWl0KSB7XG4gICAgICBpZiAodmFsdWUpIHtcbiAgICAgICAgbGVuZ3RoID0gY291bnRIYW56aSA/IHRoaXMuZ2V0Rm9ybWF0U3RyTGVuZyh2YWx1ZSkgOiB2YWx1ZS5sZW5ndGhcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGxlbmd0aCA9IDBcbiAgICAgIH1cbiAgICB9XG5cbiAgICBjb25zdCBjbGFzc1NldCA9IGNsYXNzTmFtZXMoXG4gICAgICBjbGFzc05hbWUsXG4gICAgICBgJHtwcmVmaXh9LXdyYXBwZXJgLFxuICAgICAgYCR7cHJlZml4fS0ke3NpemV9YCxcbiAgICAgIHtcbiAgICAgICAgW2Ake3ByZWZpeH0tJHt0aGVtZX1gXTogdGhlbWUsXG4gICAgICAgIFtgJHtwcmVmaXh9LWRpc2FibGVkYF06IGRpc2FibGVkLFxuICAgICAgICBbYCR7cHJlZml4fS1saW1pdGVkYF06ICEhbGltaXQsXG4gICAgICAgIFtgJHtwcmVmaXh9LW5vcm1hbGBdOiBpbnRlbnQgPT09IFwibm9ybWFsXCIsXG4gICAgICAgIFtgJHtwcmVmaXh9LXByaW1hcnlgXTogaW50ZW50ID09PSBcInByaW1hcnlcIixcbiAgICAgICAgW2Ake3ByZWZpeH0tc3VjY2Vzc2BdOiBpbnRlbnQgPT09IFwic3VjY2Vzc1wiLFxuICAgICAgICBbYCR7cHJlZml4fS13YXJuaW5nYF06IGludGVudCA9PT0gXCJ3YXJuaW5nXCIsXG4gICAgICAgIFtgJHtwcmVmaXh9LWRhbmdlcmBdOiBpbnRlbnQgPT09IFwiZGFuZ2VyXCIgfHwgKGxlbmd0aCAmJiBsaW1pdCAmJiBsZW5ndGggPiBsaW1pdCksXG4gICAgICAgIFtgJHtwcmVmaXh9LWZvY3VzZWRgXTogZm9jdXNlZCxcbiAgICAgIH0sXG4gICAgKVxuXG4gICAgY29uc3QgbGVmdFR5cGUgPSAobGVmdEVsZW1lbnQgJiYgbGVmdEVsZW1lbnQudHlwZSkgPyBsZWZ0RWxlbWVudC50eXBlLnR5cGUgOiBcIlwiXG4gICAgY29uc3QgcmlnaHRUeXBlID0gKHJpZ2h0RWxlbWVudCAmJiByaWdodEVsZW1lbnQudHlwZSkgPyByaWdodEVsZW1lbnQudHlwZS50eXBlIDogXCJcIlxuXG4gICAgcmV0dXJuIChcbiAgICAgIDxkaXZcbiAgICAgICAgY2xhc3NOYW1lPXtjbGFzc1NldH1cbiAgICAgICAgey4uLnJlc3RQcm9wc31cbiAgICAgID5cbiAgICAgICAge1xuICAgICAgICAgICEhbGVmdEVsZW1lbnQgJiYgKFxuICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICByZWY9e3RoaXMuc2F2ZUxlZnRFbGVtZW50fVxuICAgICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiB0aGlzLmhhbmRsZUF0dGFjaGVkRWxlbWVudENsaWNrKFwibGVmdFwiKX1cbiAgICAgICAgICAgICAgcm9sZT1cIm5vbmVcIlxuICAgICAgICAgICAgICBjbGFzc05hbWU9e2NsYXNzTmFtZXMoYCR7cHJlZml4fS1sZWZ0YCwge1xuICAgICAgICAgICAgICAgIFtgJHtwcmVmaXh9LWxlZnRfYnV0dG9uYF06IGxlZnRUeXBlID09PSBcIkJ1dHRvblwiLFxuICAgICAgICAgICAgICAgIFtgJHtwcmVmaXh9LWxlZnRfaWNvbmBdOiBsZWZ0VHlwZSA9PT0gXCJJY29uXCIsXG4gICAgICAgICAgICAgICAgW2Ake3ByZWZpeH0tbGVmdF9zZWxlY3RgXTogbGVmdFR5cGUgPT09IFwiU2VsZWN0XCIsXG4gICAgICAgICAgICAgIH0pfVxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICB7bGVmdEVsZW1lbnR9XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICApXG4gICAgICAgIH1cbiAgICAgICAgeyBpbnB1dCB9XG4gICAgICAgIHtcbiAgICAgICAgICAhIXJpZ2h0RWxlbWVudCAmJiAoXG4gICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgIHJlZj17dGhpcy5zYXZlUmlnaHRFbGVtZW50fVxuICAgICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiB0aGlzLmhhbmRsZUF0dGFjaGVkRWxlbWVudENsaWNrKFwicmlnaHRcIil9XG4gICAgICAgICAgICAgIHJvbGU9XCJub25lXCJcbiAgICAgICAgICAgICAgY2xhc3NOYW1lPXtjbGFzc05hbWVzKGAke3ByZWZpeH0tcmlnaHRgLCB7XG4gICAgICAgICAgICAgICAgW2Ake3ByZWZpeH0tcmlnaHRfYnV0dG9uYF06IHJpZ2h0VHlwZSA9PT0gXCJCdXR0b25cIixcbiAgICAgICAgICAgICAgICBbYCR7cHJlZml4fS1yaWdodF9pY29uYF06IHJpZ2h0VHlwZSA9PT0gXCJJY29uXCIsXG4gICAgICAgICAgICAgICAgW2Ake3ByZWZpeH0tcmlnaHRfc2VsZWN0YF06IHJpZ2h0VHlwZSA9PT0gXCJTZWxlY3RcIixcbiAgICAgICAgICAgICAgfSl9XG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIHtyaWdodEVsZW1lbnR9XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICApXG4gICAgICAgIH1cbiAgICAgICAge1xuICAgICAgICAgICEhbGltaXQgJiYgKFxuICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9e2Ake3ByZWZpeH0tbGltaXRgfT5cbiAgICAgICAgICAgICAgPHNwYW4+e2Ake2xlbmd0aH0vJHtsaW1pdH1gfTwvc3Bhbj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIClcbiAgICAgICAgfVxuICAgICAgPC9kaXY+XG4gICAgKVxuICB9XG59Il19

@@ -173,3 +173,3 @@ import * as React from 'react';

handleDropdownRender: (menu: JSX.Element) => JSX.Element;
handleSearch: (e?: React.ChangeEvent<HTMLInputElement> | undefined) => void;
handleSearch: (e: React.ChangeEvent<HTMLInputElement>) => void;
handleSearchKeyDown: (e: React.KeyboardEvent<HTMLInputElement>) => void;

@@ -176,0 +176,0 @@ preventVisibleChange: () => void;

@@ -160,4 +160,2 @@ "use strict";

});
_this.handleSearch();
}

@@ -201,3 +199,3 @@ };

if (e && e.target.value && !placeholderShow && !value) {
if (e.target.value && !placeholderShow && !value) {
_this.setState({

@@ -209,30 +207,14 @@ placeholderShow: true

if (_this.select) {
if (_this.select.onInputChange) {
_this.select.onInputChange(e);
}
var val = e.target.value;
var popup = _this.select.getPopupDOMNode() || document.querySelector(".adui-select-dropdown");
var val;
if (e) {
if (_this.select.onInputChange) {
_this.select.onInputChange(e);
}
val = e.target.value;
} else if (_this.search) {
val = _this.search.value;
if (!val) {
return;
}
}
if (popup) {
if (e) {
_this.setState({
loadTimes: 0
});
var list = popup.querySelector('[role="listbox"]');
var searchWrapper = popup.querySelector(".adui-select-search");
if (searchWrapper && searchWrapper.nextElementSibling) {
searchWrapper.nextElementSibling.scrollTop = 0;
}
if (list) {
list.scrollTop = 0;
}

@@ -445,2 +427,2 @@

exports["default"] = _default;
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL2NvbXBvbmVudHMvc2VsZWN0L1NlbGVjdC50c3giXSwibmFtZXMiOlsibm9vcCIsInByZWZpeCIsIlNlbGVjdCIsInByb3BzIiwibG9ja2VkIiwic2VsZWN0Iiwic2VhcmNoIiwic2F2ZVNlbGVjdCIsIm5vZGUiLCJzYXZlU2VhcmNoIiwib25Ecm9wZG93blZpc2libGVDaGFuZ2UiLCJvcGVuIiwib3BlblByb3AiLCJsb2FkVGltZXMiLCJzdGF0ZSIsInNldFN0YXRlIiwicHJldmVudFZpc2libGVDaGFuZ2UiLCJzZXRUaW1lb3V0IiwiZm9jdXMiLCJmb3JjZVBvcHVwQWxpZ24iLCJvblNlbGVjdCIsInZhbHVlIiwib3B0aW9uIiwidmFsdWVQcm9wIiwicGxhY2Vob2xkZXJTaG93Iiwic2V0SW5wdXRWYWx1ZSIsImhhbmRsZVBvcHVwU2Nyb2xsIiwidGFyZ2V0Iiwib2Zmc2V0SGVpZ2h0Iiwic2Nyb2xsSGVpZ2h0Iiwic2Nyb2xsVG9wIiwiaGFuZGxlU2VhcmNoIiwiaGFuZGxlRHJvcGRvd25SZW5kZXIiLCJtZW51Iiwic2VhcmNoYWJsZSIsInNlYXJjaFBsYWNlaG9sZGVyIiwibWVudUl0ZW1zIiwibWVudUl0ZW1zU2xpY2VkIiwic2xpY2UiLCJtZW51Q2xvbmVkIiwiUmVhY3QiLCJjbG9uZUVsZW1lbnQiLCJoYW5kbGVTZWFyY2hLZXlEb3duIiwiZSIsInBvcHVwIiwiZ2V0UG9wdXBET01Ob2RlIiwiZG9jdW1lbnQiLCJxdWVyeVNlbGVjdG9yIiwidmFsIiwib25JbnB1dENoYW5nZSIsInNlYXJjaFdyYXBwZXIiLCJuZXh0RWxlbWVudFNpYmxpbmciLCJpdGVtcyIsInF1ZXJ5U2VsZWN0b3JBbGwiLCJmb3JFYWNoIiwiaXRlbSIsInJlcGxhY2VtZW50Iiwic3RyIiwicmVwbGFjZSIsInNvdXJjZUh0bWwiLCJkYXRhc2V0IiwiaHRtbCIsImlubmVySFRNTCIsImluZGV4T2YiLCJjb21tZW50RW5kSW5kZXgiLCJzdWJzdHIiLCJvbklucHV0S2V5RG93biIsImRlZmF1bHRPcGVuIiwiZGVmYXVsdFZhbHVlIiwidmFsdWVTdGF0ZSIsIm9wZW5TdGF0ZSIsImNoaWxkcmVuIiwiY2xhc3NOYW1lIiwiZHJvcGRvd25NYXRjaFNlbGVjdFdpZHRoIiwicGxhY2Vob2xkZXIiLCJwbGFjZW1lbnQiLCJyaWdodEljb24iLCJzaXplIiwidGhlbWUiLCJvdGhlclByb3BzIiwicmVzdFByb3BzIiwib3BlblByb3BzIiwiYWxpZ25FZGdlIiwiQ29tcG9uZW50IiwidHlwZSIsIk9wdGlvbiIsIk9wdEdyb3VwIiwicHJvcFR5cGVzIiwiUHJvcFR5cGVzIiwic3RyaW5nIiwiYm9vbCIsIm9uZU9mVHlwZSIsIm51bWJlciIsImZ1bmMiLCJvbmVPZiIsIk9iamVjdCIsImtleXMiLCJJY29uU3ZnUGF0aHMiLCJkZWZhdWx0UHJvcHMiLCJ1bmRlZmluZWQiLCJnZXREZXJpdmVkU3RhdGVGcm9tUHJvcHMiLCJuZXdTdGF0ZSIsImxlbmd0aCJdLCJtYXBwaW5ncyI6Ijs7Ozs7OztBQUFBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUVBOztBQUNBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQVNBLElBQU1BLElBQUksR0FBRyxTQUFQQSxJQUFPLEdBQU0sQ0FBRSxDQUFyQjs7QUFDQSxJQUFNQyxNQUFNLEdBQUcsYUFBZjs7SUF5Rk1DLE07OztBQXlISixrQkFBWUMsS0FBWixFQUFpQztBQUFBOztBQUFBOztBQUMvQixnRkFBTUEsS0FBTjtBQUQrQixVQU4xQkMsTUFNMEIsR0FOakIsS0FNaUI7QUFBQSxVQUoxQkMsTUFJMEI7QUFBQSxVQUYxQkMsTUFFMEI7O0FBQUEsVUE4QjFCQyxVQTlCMEIsR0E4QmIsVUFBQ0MsSUFBRCxFQUFtQjtBQUNyQyxZQUFLSCxNQUFMLEdBQWNHLElBQWQ7QUFDRCxLQWhDZ0M7O0FBQUEsVUFrQzFCQyxVQWxDMEIsR0FrQ2IsVUFBQ0QsSUFBRCxFQUE0QjtBQUM5QyxZQUFLRixNQUFMLEdBQWNFLElBQWQ7QUFDRCxLQXBDZ0M7O0FBQUEsVUFzQzFCRSx1QkF0QzBCLEdBc0NBLFVBQUNDLElBQUQsRUFBbUI7QUFBQSx3QkFJOUMsTUFBS1IsS0FKeUM7QUFBQSxVQUVoRE8sdUJBRmdELGVBRWhEQSx1QkFGZ0Q7QUFBQSxVQUcxQ0UsUUFIMEMsZUFHaERELElBSGdEO0FBQUEsVUFNMUNFLFNBTjBDLEdBTTVCLE1BQUtDLEtBTnVCLENBTTFDRCxTQU4wQzs7QUFRbEQsVUFBSSxNQUFLVCxNQUFULEVBQWlCO0FBQ2Y7QUFDRDs7QUFDRCxVQUFJUSxRQUFRLEtBQUssSUFBakIsRUFBdUI7QUFDckIsY0FBS0csUUFBTCxDQUFjO0FBQUVKLFVBQUFBLElBQUksRUFBSkE7QUFBRixTQUFkO0FBQ0Q7O0FBQ0QsVUFBSUEsSUFBSixFQUFVO0FBQ1IsY0FBS0ssb0JBQUw7O0FBQ0FDLFFBQUFBLFVBQVUsQ0FBQyxZQUFNO0FBQ2YsY0FBSSxNQUFLWCxNQUFMLElBQWUsRUFBRU8sU0FBUyxJQUFJQSxTQUFTLEdBQUcsQ0FBM0IsQ0FBbkIsRUFBa0Q7QUFFaEQsa0JBQUtQLE1BQUwsQ0FBWVksS0FBWjtBQUNEO0FBQ0YsU0FMUyxFQUtQLEdBTE8sQ0FBVjtBQU1BRCxRQUFBQSxVQUFVLENBQUMsWUFBTTtBQUNmLGNBQUksTUFBS1osTUFBTCxJQUFlLE1BQUtBLE1BQUwsQ0FBWWMsZUFBL0IsRUFBZ0Q7QUFDOUMsa0JBQUtkLE1BQUwsQ0FBWWMsZUFBWjtBQUNEO0FBQ0YsU0FKUyxFQUlQLEdBSk8sQ0FBVjtBQUtEOztBQUNELFVBQUlULHVCQUFKLEVBQTZCO0FBQzNCQSxRQUFBQSx1QkFBdUIsQ0FBQ0MsSUFBRCxDQUF2QjtBQUNEO0FBQ0YsS0FyRWdDOztBQUFBLFVBdUUxQlMsUUF2RTBCLEdBdUVmLFVBQUNDLEtBQUQsRUFBeUJDLE1BQXpCLEVBQTZEO0FBQUEseUJBSXpFLE1BQUtuQixLQUpvRTtBQUFBLFVBRTNFaUIsUUFGMkUsZ0JBRTNFQSxRQUYyRTtBQUFBLFVBR3BFRyxTQUhvRSxnQkFHM0VGLEtBSDJFOztBQU03RSxVQUFJRSxTQUFTLEtBQUssSUFBbEIsRUFBd0I7QUFDdEIsY0FBS1IsUUFBTCxDQUFjO0FBQ1pNLFVBQUFBLEtBQUssRUFBTEE7QUFEWSxTQUFkO0FBR0Q7O0FBQ0QsVUFBSUQsUUFBSixFQUFjO0FBQ1pBLFFBQUFBLFFBQVEsQ0FBQ0MsS0FBRCxFQUFRQyxNQUFSLENBQVI7QUFDRDs7QUFFRCxZQUFLUCxRQUFMLENBQWM7QUFDWlMsUUFBQUEsZUFBZSxFQUFFO0FBREwsT0FBZDs7QUFHQSxVQUFJLE1BQUtsQixNQUFULEVBQWlCO0FBQ2YsY0FBS0EsTUFBTCxDQUFZZSxLQUFaLEdBQW9CLEVBQXBCO0FBQ0Q7O0FBQ0QsVUFBSSxNQUFLaEIsTUFBTCxJQUFlLE1BQUtBLE1BQUwsQ0FBWW9CLGFBQS9CLEVBQThDO0FBQzVDLGNBQUtwQixNQUFMLENBQVlvQixhQUFaLENBQTBCLEVBQTFCO0FBQ0Q7QUFDRixLQS9GZ0M7O0FBQUEsVUFpRzFCQyxpQkFqRzBCLEdBaUdOLGdCQUFnRTtBQUFBLDZCQUE3REMsTUFBNkQ7QUFBQSxVQUFuREMsWUFBbUQsZUFBbkRBLFlBQW1EO0FBQUEsVUFBckNDLFlBQXFDLGVBQXJDQSxZQUFxQztBQUFBLFVBQXZCQyxTQUF1QixlQUF2QkEsU0FBdUI7O0FBQ3pGLFVBQUtGLFlBQVksR0FBR0UsU0FBaEIsR0FBNkJELFlBQVksR0FBRyxFQUFoRCxFQUFvRDtBQUNsRCxjQUFLZCxRQUFMLENBQWM7QUFBQSxjQUFHRixTQUFILFNBQUdBLFNBQUg7QUFBQSxpQkFBb0I7QUFBRUEsWUFBQUEsU0FBUyxFQUFFLENBQUNBLFNBQVMsSUFBSSxDQUFkLElBQW1CO0FBQWhDLFdBQXBCO0FBQUEsU0FBZDs7QUFDQSxjQUFLa0IsWUFBTDtBQUNEO0FBQ0YsS0F0R2dDOztBQUFBLFVBd0cxQkMsb0JBeEcwQixHQXdHSCxVQUFDQyxJQUFELEVBQXVCO0FBQUEseUJBQ1QsTUFBSzlCLEtBREk7QUFBQSxVQUMzQytCLFVBRDJDLGdCQUMzQ0EsVUFEMkM7QUFBQSxVQUMvQkMsaUJBRCtCLGdCQUMvQkEsaUJBRCtCO0FBQUEsVUFFM0N0QixTQUYyQyxHQUU3QixNQUFLQyxLQUZ3QixDQUUzQ0QsU0FGMkM7QUFBQSxVQUdsQ3VCLFNBSGtDLEdBR2xCSCxJQUhrQixDQUczQzlCLEtBSDJDLENBR2xDaUMsU0FIa0M7QUFJbkQsVUFBTUMsZUFBZSxHQUFHRCxTQUFTLENBQUNFLEtBQVYsQ0FBZ0IsQ0FBaEIsRUFBbUIsTUFBTSxDQUFDekIsU0FBUyxJQUFJLENBQWQsSUFBbUIsQ0FBekIsQ0FBbkIsQ0FBeEI7QUFDQSxVQUFNMEIsVUFBVSxHQUFHQyxLQUFLLENBQUNDLFlBQU4sQ0FBbUJSLElBQW5CLEVBQXlCO0FBQzFDRyxRQUFBQSxTQUFTLEVBQUVDO0FBRCtCLE9BQXpCLENBQW5COztBQUdBLFVBQUlILFVBQUosRUFBZ0I7QUFDZCxlQUNFLGlDQUNFO0FBQ0UsVUFBQSxTQUFTLFlBQUtqQyxNQUFMO0FBRFgsV0FHRTtBQUNFLFVBQUEsR0FBRyxFQUFFLE1BQUtRLFVBRFo7QUFFRSxVQUFBLFdBQVcsRUFBRTBCLGlCQUZmO0FBR0UsVUFBQSxRQUFRLEVBQUUsTUFBS0osWUFIakI7QUFJRSxVQUFBLFNBQVMsRUFBRSxNQUFLVyxtQkFKbEI7QUFLRSxVQUFBLFdBQVcsRUFBRSxNQUFLMUIsb0JBTHBCO0FBTUUsVUFBQSxTQUFTLEVBQUUsTUFBS0E7QUFObEIsVUFIRixFQVdFLG9CQUFDLGdCQUFEO0FBQU0sVUFBQSxJQUFJLEVBQUMsUUFBWDtBQUFvQixVQUFBLFNBQVMsWUFBS2YsTUFBTDtBQUE3QixVQVhGLENBREYsRUFjSXNDLFVBZEosQ0FERjtBQWtCRDs7QUFDRCxhQUFPTixJQUFQO0FBQ0QsS0FySWdDOztBQUFBLFVBdUkxQkYsWUF2STBCLEdBdUlYLFVBQUNZLENBQUQsRUFBNkM7QUFBQSx3QkFDOUIsTUFBSzdCLEtBRHlCO0FBQUEsVUFDekRVLGVBRHlELGVBQ3pEQSxlQUR5RDtBQUFBLFVBQ3hDSCxLQUR3QyxlQUN4Q0EsS0FEd0M7O0FBR2pFLFVBQUlzQixDQUFDLElBQUlBLENBQUMsQ0FBQ2hCLE1BQUYsQ0FBU04sS0FBZCxJQUF1QixDQUFDRyxlQUF4QixJQUEyQyxDQUFDSCxLQUFoRCxFQUF1RDtBQUNyRCxjQUFLTixRQUFMLENBQWM7QUFBRVMsVUFBQUEsZUFBZSxFQUFFO0FBQW5CLFNBQWQ7QUFDRDs7QUFDRCxVQUFJLE1BQUtuQixNQUFULEVBQWlCO0FBQ2YsWUFBTXVDLEtBQUssR0FBRyxNQUFLdkMsTUFBTCxDQUFZd0MsZUFBWixNQUFpQ0MsUUFBUSxDQUFDQyxhQUFULENBQXVCLHVCQUF2QixDQUEvQztBQUNBLFlBQUlDLEdBQUo7O0FBQ0EsWUFBSUwsQ0FBSixFQUFPO0FBQ0wsY0FBSSxNQUFLdEMsTUFBTCxDQUFZNEMsYUFBaEIsRUFBK0I7QUFDN0Isa0JBQUs1QyxNQUFMLENBQVk0QyxhQUFaLENBQTBCTixDQUExQjtBQUNEOztBQUNESyxVQUFBQSxHQUFHLEdBQUdMLENBQUMsQ0FBQ2hCLE1BQUYsQ0FBU04sS0FBZjtBQUNELFNBTEQsTUFLTyxJQUFJLE1BQUtmLE1BQVQsRUFBaUI7QUFDdEIwQyxVQUFBQSxHQUFHLEdBQUcsTUFBSzFDLE1BQUwsQ0FBWWUsS0FBbEI7O0FBQ0EsY0FBSSxDQUFDMkIsR0FBTCxFQUFVO0FBQ1I7QUFDRDtBQUNGOztBQUNELFlBQUlKLEtBQUosRUFBVztBQUNULGNBQUlELENBQUosRUFBTztBQUNMLGtCQUFLNUIsUUFBTCxDQUFjO0FBQUVGLGNBQUFBLFNBQVMsRUFBRTtBQUFiLGFBQWQ7O0FBQ0EsZ0JBQU1xQyxhQUFhLEdBQUdOLEtBQUssQ0FBQ0csYUFBTixDQUFvQixxQkFBcEIsQ0FBdEI7O0FBQ0EsZ0JBQUlHLGFBQWEsSUFBSUEsYUFBYSxDQUFDQyxrQkFBbkMsRUFBdUQ7QUFDckRELGNBQUFBLGFBQWEsQ0FBQ0Msa0JBQWQsQ0FBaUNyQixTQUFqQyxHQUE2QyxDQUE3QztBQUNEO0FBQ0Y7O0FBR0RiLFVBQUFBLFVBQVUsQ0FBQyxZQUFNO0FBQ2YsZ0JBQU1tQyxLQUFLLEdBQUdSLEtBQUssQ0FBQ1MsZ0JBQU4sQ0FBdUIsaUNBQXZCLENBQWQ7QUFDQUQsWUFBQUEsS0FBSyxDQUFDRSxPQUFOLENBQWMsVUFBQ0MsSUFBRCxFQUF1QjtBQUNuQyxrQkFBTUMsV0FBVyxHQUFHLFNBQWRBLFdBQWMsQ0FBQ0MsR0FBRDtBQUFBLHVCQUFpQkEsR0FBRyxDQUFDQyxPQUFKLENBQVlWLEdBQVoseURBQStEQSxHQUEvRCxhQUFqQjtBQUFBLGVBQXBCOztBQUNBLGtCQUFJVyxVQUFVLEdBQUdKLElBQUksQ0FBQ0ssT0FBTCxDQUFhQyxJQUE5Qjs7QUFDQSxrQkFBSSxDQUFDRixVQUFMLEVBQWlCO0FBQ2ZBLGdCQUFBQSxVQUFVLEdBQUdKLElBQUksQ0FBQ08sU0FBbEI7QUFDQVAsZ0JBQUFBLElBQUksQ0FBQ0ssT0FBTCxDQUFhQyxJQUFiLEdBQW9CTixJQUFJLENBQUNPLFNBQXpCO0FBQ0Q7O0FBQ0Qsa0JBQUlQLElBQUksQ0FBQ08sU0FBTCxLQUFtQixPQUF2QixFQUFnQztBQUM5QixvQkFBSWQsR0FBSixFQUFTO0FBRVAsc0JBQUlXLFVBQVUsQ0FBQ0ksT0FBWCxDQUFtQixrQkFBbkIsTUFBMkMsQ0FBL0MsRUFBa0Q7QUFDaEQsd0JBQU1DLGVBQWUsR0FBR0wsVUFBVSxDQUFDSSxPQUFYLENBQW1CLEtBQW5CLENBQXhCOztBQUNBLHdCQUFJSixVQUFVLENBQUNJLE9BQVgsQ0FBbUJmLEdBQW5CLElBQTBCZ0IsZUFBOUIsRUFBK0M7QUFDN0NULHNCQUFBQSxJQUFJLENBQUNPLFNBQUwsR0FBaUJILFVBQVUsQ0FBQ00sTUFBWCxDQUFrQixDQUFsQixFQUFxQkQsZUFBZSxHQUFHLENBQXZDLElBQTRDUixXQUFXLENBQUNHLFVBQVUsQ0FBQ00sTUFBWCxDQUFrQkQsZUFBZSxHQUFHLENBQXBDLENBQUQsQ0FBeEU7QUFDRCxxQkFGRCxNQUVPO0FBQ0xULHNCQUFBQSxJQUFJLENBQUNPLFNBQUwsR0FBaUJOLFdBQVcsQ0FBQ0csVUFBRCxDQUE1QjtBQUNEO0FBQ0YsbUJBUEQsTUFPTztBQUNMSixvQkFBQUEsSUFBSSxDQUFDTyxTQUFMLEdBQWlCTixXQUFXLENBQUNHLFVBQUQsQ0FBNUI7QUFDRDtBQUNGLGlCQVpELE1BWU87QUFDTEosa0JBQUFBLElBQUksQ0FBQ08sU0FBTCxHQUFpQkgsVUFBakI7QUFDRDtBQUNGO0FBQ0YsYUF4QkQ7QUF5QkQsV0EzQlMsRUEyQlAsQ0EzQk8sQ0FBVjtBQTRCRDtBQUNGO0FBQ0YsS0FuTWdDOztBQUFBLFVBcU0xQmpCLG1CQXJNMEIsR0FxTUosVUFBQ0MsQ0FBRCxFQUE4QztBQUN6RSxVQUFJLE1BQUt0QyxNQUFMLElBQWUsTUFBS0EsTUFBTCxDQUFZNkQsY0FBL0IsRUFBK0M7QUFDN0MsY0FBSzdELE1BQUwsQ0FBWTZELGNBQVosQ0FBMkJ2QixDQUEzQjtBQUNEO0FBQ0YsS0F6TWdDOztBQUFBLFVBMk0xQjNCLG9CQTNNMEIsR0EyTUgsWUFBTTtBQUNsQyxZQUFLWixNQUFMLEdBQWMsSUFBZDtBQUNBYSxNQUFBQSxVQUFVLENBQUMsWUFBTTtBQUNmLGNBQUtiLE1BQUwsR0FBYyxLQUFkOztBQUNBLGNBQUtXLFFBQUwsQ0FBYztBQUFFSixVQUFBQSxJQUFJLEVBQUU7QUFBUixTQUFkO0FBQ0QsT0FIUyxFQUdQLEdBSE8sQ0FBVjtBQUlELEtBak5nQzs7QUFBQSxRQUc3QndELFdBSDZCLEdBTzNCaEUsS0FQMkIsQ0FHN0JnRSxXQUg2QjtBQUFBLFFBSTdCQyxZQUo2QixHQU8zQmpFLEtBUDJCLENBSTdCaUUsWUFKNkI7QUFBQSxRQUs3QnpELEtBTDZCLEdBTzNCUixLQVAyQixDQUs3QlEsSUFMNkI7QUFBQSxRQU03QlUsTUFONkIsR0FPM0JsQixLQVAyQixDQU03QmtCLEtBTjZCO0FBUy9CLFFBQUlnRCxVQUFKOztBQUNBLFFBQUloRCxNQUFLLEtBQUssSUFBZCxFQUFvQjtBQUNsQmdELE1BQUFBLFVBQVUsR0FBR2hELE1BQWI7QUFDRCxLQUZELE1BRU8sSUFBSStDLFlBQVksS0FBSyxJQUFyQixFQUEyQjtBQUNoQ0MsTUFBQUEsVUFBVSxHQUFHRCxZQUFiO0FBQ0Q7O0FBRUQsUUFBSUUsU0FBSjs7QUFDQSxRQUFJM0QsS0FBSSxLQUFLLElBQWIsRUFBbUI7QUFDakIyRCxNQUFBQSxTQUFTLEdBQUczRCxLQUFaO0FBQ0QsS0FGRCxNQUVPLElBQUl3RCxXQUFXLEtBQUssSUFBcEIsRUFBMEI7QUFDL0JHLE1BQUFBLFNBQVMsR0FBR0gsV0FBWjtBQUNEOztBQUNELFVBQUtyRCxLQUFMLEdBQWE7QUFDWEQsTUFBQUEsU0FBUyxFQUFFLENBREE7QUFFWEYsTUFBQUEsSUFBSSxFQUFFMkQsU0FGSztBQUdYOUMsTUFBQUEsZUFBZSxFQUFFLEtBSE47QUFJWEgsTUFBQUEsS0FBSyxFQUFFZ0Q7QUFKSSxLQUFiO0FBdEIrQjtBQTRCaEM7Ozs7NkJBdUxlO0FBQUE7O0FBQUEseUJBWVYsS0FBS2xFLEtBWks7QUFBQSxVQUVab0UsUUFGWSxnQkFFWkEsUUFGWTtBQUFBLFVBR1pDLFNBSFksZ0JBR1pBLFNBSFk7QUFBQSxVQUlaQyx3QkFKWSxnQkFJWkEsd0JBSlk7QUFBQSxVQUtaQyxXQUxZLGdCQUtaQSxXQUxZO0FBQUEsVUFNWkMsU0FOWSxnQkFNWkEsU0FOWTtBQUFBLFVBT1pDLFNBUFksZ0JBT1pBLFNBUFk7QUFBQSxVQVFaMUMsVUFSWSxnQkFRWkEsVUFSWTtBQUFBLFVBU1oyQyxJQVRZLGdCQVNaQSxJQVRZO0FBQUEsVUFVWkMsS0FWWSxnQkFVWkEsS0FWWTtBQUFBLFVBV1RDLFVBWFM7O0FBY2QsVUFBTUMsU0FBUyxHQUFHLHNCQUFLRCxVQUFMLEVBQWlCLENBQ2pDLE1BRGlDLEVBRWpDLHlCQUZpQyxFQUdqQyxVQUhpQyxFQUlqQyxtQkFKaUMsRUFLakMsT0FMaUMsQ0FBakIsQ0FBbEI7QUFkYyx5QkEwQlYsS0FBS2pFLEtBMUJLO0FBQUEsVUF1Qk53RCxTQXZCTSxnQkF1QlozRCxJQXZCWTtBQUFBLFVBd0JaYSxlQXhCWSxnQkF3QlpBLGVBeEJZO0FBQUEsVUF5Qkw2QyxVQXpCSyxnQkF5QlpoRCxLQXpCWTtBQTZCZCxVQUFNNEQsU0FBNkQsR0FBRyxFQUF0RTs7QUFDQSxVQUFJLE9BQVFYLFNBQVIsS0FBdUIsU0FBM0IsRUFBc0M7QUFDcENXLFFBQUFBLFNBQVMsQ0FBQ3RFLElBQVYsR0FBaUIyRCxTQUFqQjtBQUNEOztBQUNELFVBQUlELFVBQVUsS0FBSyxJQUFuQixFQUF5QjtBQUN2QlksUUFBQUEsU0FBUyxDQUFDNUQsS0FBVixHQUFrQmdELFVBQWxCO0FBQ0Q7O0FBQ0QsYUFDRSxvQkFBQyxvQkFBRDtBQUNFLFFBQUEsU0FBUyxFQUFFLDRCQUNURyxTQURTLFlBRU52RSxNQUZNLHdCQUdOQSxNQUhNLGNBR0k0RSxJQUhKLDZEQUtINUUsTUFMRyxhQUtjNkUsS0FBSyxLQUFLLE9BTHhCLDBDQU1IN0UsTUFORyw4QkFNK0J1QixlQU4vQixnQkFEYjtBQVVFLFFBQUEsYUFBYSxFQUFFLDRCQUFjO0FBQUUwRCxVQUFBQSxTQUFTLEVBQUU7QUFBYixTQUFkLEVBQW1DUCxTQUFTLElBQUksWUFBaEQsQ0FWakI7QUFXRSxRQUFBLGlCQUFpQixpQ0FBMEJFLElBQTFCLGNBQWtDM0MsVUFBVSxHQUFHLGlDQUFILEdBQXVDLEVBQW5GLENBWG5CO0FBWUUsUUFBQSx3QkFBd0IsRUFBRXVDLHdCQVo1QjtBQWFFLFFBQUEsY0FBYyxFQUFFLEtBQUt6QyxvQkFidkI7QUFjRSxRQUFBLFNBQVMsRUFBRSxvQkFBQyxnQkFBRDtBQUFNLFVBQUEsSUFBSSxFQUFFNEMsU0FBUyxJQUFJLGVBQXpCO0FBQTBDLFVBQUEsS0FBSyxFQUFDO0FBQWhELFVBZGI7QUFlRSxRQUFBLGVBQWUsRUFBQyxnQ0FmbEI7QUFnQkUsUUFBQSx1QkFBdUIsRUFBRSxLQUFLbEUsdUJBaEJoQztBQWlCRSxRQUFBLFFBQVEsRUFBRSxLQUFLVSxRQWpCakI7QUFrQkUsUUFBQSx3QkFBd0IsRUFBRSxLQWxCNUI7QUFtQkUsUUFBQSxhQUFhLEVBQUUsS0FBS00saUJBbkJ0QjtBQW9CRSxRQUFBLGVBQWUsRUFBQyxVQXBCbEI7QUFxQkUsUUFBQSxnQkFBZ0IsRUFBQyxVQXJCbkI7QUFzQkUsUUFBQSxXQUFXLEVBQUVnRCxXQXRCZjtBQXVCRSxRQUFBLFNBQVMsRUFBQyxhQXZCWjtBQXdCRSxRQUFBLFVBQVUsRUFBRSxLQXhCZDtBQXlCRSxRQUFBLEdBQUcsRUFBRSxLQUFLbkUsVUF6Qlo7QUEwQkUsUUFBQSxjQUFjLEVBQUM7QUExQmpCLFNBMkJNMEUsU0EzQk4sRUE0Qk1ELFNBNUJOLEdBOEJJVCxRQTlCSixDQURGO0FBa0NEOzs7O0VBbFprQi9CLEtBQUssQ0FBQzJDLFM7O0FBQXJCakYsTSxDQUVVa0YsSSxHQUFPLFE7QUFGakJsRixNLENBSVVtRixNLEdBQXdCQSxnQjtBQUpsQ25GLE0sQ0FNVW9GLFEsR0FBNEJBLGtCO0FBTnRDcEYsTSxDQVFVcUYsUyxHQUFZO0FBSXhCaEIsRUFBQUEsUUFBUSxFQUFFaUIsc0JBQVVoRixJQUpJO0FBUXhCZ0UsRUFBQUEsU0FBUyxFQUFFZ0Isc0JBQVVDLE1BUkc7QUFZeEJ0QixFQUFBQSxXQUFXLEVBQUVxQixzQkFBVUUsSUFaQztBQWdCeEJ0QixFQUFBQSxZQUFZLEVBQUVvQixzQkFBVUcsU0FBVixDQUFvQixDQUNoQ0gsc0JBQVVDLE1BRHNCLEVBRWhDRCxzQkFBVUksTUFGc0IsQ0FBcEIsQ0FoQlU7QUF1QnhCbkIsRUFBQUEsd0JBQXdCLEVBQUVlLHNCQUFVRSxJQXZCWjtBQTJCeEJoRixFQUFBQSx1QkFBdUIsRUFBRThFLHNCQUFVSyxJQTNCWDtBQStCeEJ6RSxFQUFBQSxRQUFRLEVBQUVvRSxzQkFBVUssSUEvQkk7QUFtQ3hCbEYsRUFBQUEsSUFBSSxFQUFFNkUsc0JBQVVFLElBbkNRO0FBdUN4QmhCLEVBQUFBLFdBQVcsRUFBRWMsc0JBQVVDLE1BdkNDO0FBMkN4QmQsRUFBQUEsU0FBUyxFQUFFYSxzQkFBVU0sS0FBVixDQUFnQixDQUN6QixLQUR5QixFQUNsQixNQURrQixFQUNWLE9BRFUsRUFDRCxRQURDLEVBRXpCLFNBRnlCLEVBRWQsVUFGYyxFQUVGLFlBRkUsRUFFWSxhQUZaLEVBR3pCLFNBSHlCLEVBR2QsWUFIYyxFQUdBLFVBSEEsRUFHWSxhQUhaLENBQWhCLENBM0NhO0FBbUR4QmxCLEVBQUFBLFNBQVMsRUFBRVksc0JBQVVNLEtBQVYsQ0FBZ0JDLE1BQU0sQ0FBQ0MsSUFBUCxDQUFZQyx3QkFBWixDQUFoQixDQW5EYTtBQXVEeEI5RCxFQUFBQSxpQkFBaUIsRUFBRXFELHNCQUFVQyxNQXZETDtBQTJEeEJ2RCxFQUFBQSxVQUFVLEVBQUVzRCxzQkFBVUUsSUEzREU7QUErRHhCYixFQUFBQSxJQUFJLEVBQUVXLHNCQUFVTSxLQUFWLENBQWdCLENBQUMsTUFBRCxFQUFTLE9BQVQsRUFBa0IsUUFBbEIsRUFBNEIsT0FBNUIsQ0FBaEIsQ0EvRGtCO0FBbUV4QmhCLEVBQUFBLEtBQUssRUFBRVUsc0JBQVVNLEtBQVYsQ0FBZ0IsQ0FBQyxJQUFELEVBQU8sT0FBUCxDQUFoQixDQW5FaUI7QUF1RXhCekUsRUFBQUEsS0FBSyxFQUFFbUUsc0JBQVVHLFNBQVYsQ0FBb0IsQ0FDekJILHNCQUFVQyxNQURlLEVBRXpCRCxzQkFBVUksTUFGZSxDQUFwQjtBQXZFaUIsQztBQVJ0QjFGLE0sQ0FxRlVnRyxZLEdBQTZCO0FBQ3pDM0IsRUFBQUEsUUFBUSxFQUFFLElBRCtCO0FBRXpDQyxFQUFBQSxTQUFTLEVBQUUyQixTQUY4QjtBQUd6Q2hDLEVBQUFBLFdBQVcsRUFBRSxJQUg0QjtBQUl6Q0MsRUFBQUEsWUFBWSxFQUFFLElBSjJCO0FBS3pDSyxFQUFBQSx3QkFBd0IsRUFBRSxLQUxlO0FBTXpDL0QsRUFBQUEsdUJBQXVCLEVBQUVWLElBTmdCO0FBT3pDb0IsRUFBQUEsUUFBUSxFQUFFcEIsSUFQK0I7QUFRekNXLEVBQUFBLElBQUksRUFBRSxJQVJtQztBQVN6QytELEVBQUFBLFdBQVcsRUFBRSxLQVQ0QjtBQVV6Q0MsRUFBQUEsU0FBUyxFQUFFLFlBVjhCO0FBV3pDQyxFQUFBQSxTQUFTLEVBQUUsZUFYOEI7QUFZekN6QyxFQUFBQSxpQkFBaUIsRUFBRSxJQVpzQjtBQWF6Q0QsRUFBQUEsVUFBVSxFQUFFLEtBYjZCO0FBY3pDMkMsRUFBQUEsSUFBSSxFQUFFLE9BZG1DO0FBZXpDQyxFQUFBQSxLQUFLLEVBQUUsSUFma0M7QUFnQnpDekQsRUFBQUEsS0FBSyxFQUFFO0FBaEJrQyxDOztBQXJGdkNuQixNLENBd0dVa0csd0IsR0FBMkIsaUJBQW1DO0FBQUEsTUFBaEN6RixJQUFnQyxTQUFoQ0EsSUFBZ0M7QUFBQSxNQUExQlUsS0FBMEIsU0FBMUJBLEtBQTBCO0FBQzFFLE1BQU1nRixRQUFzQixHQUFHLEVBQS9COztBQUNBLE1BQUkxRixJQUFJLEtBQUssSUFBYixFQUFtQjtBQUNqQjBGLElBQUFBLFFBQVEsQ0FBQzFGLElBQVQsR0FBZ0JBLElBQWhCO0FBQ0Q7O0FBQ0QsTUFBSVUsS0FBSyxLQUFLLElBQWQsRUFBb0I7QUFDbEJnRixJQUFBQSxRQUFRLENBQUNoRixLQUFULEdBQWlCQSxLQUFqQjtBQUNEOztBQUNELFNBQU8wRSxNQUFNLENBQUNDLElBQVAsQ0FBWUssUUFBWixFQUFzQkMsTUFBdEIsR0FBK0IsQ0FBL0IsR0FBbUNELFFBQW5DLEdBQThDLElBQXJEO0FBQ0QsQzs7QUFvU0gscUNBQVNuRyxNQUFUO2VBRWVBLE0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyBSZWFjdCBmcm9tICdyZWFjdCdcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSAncHJvcC10eXBlcydcbmltcG9ydCB7IHBvbHlmaWxsIH0gZnJvbSAncmVhY3QtbGlmZWN5Y2xlcy1jb21wYXQnXG5pbXBvcnQgY2xhc3NOYW1lcyBmcm9tICdjbGFzc25hbWVzJ1xuaW1wb3J0IFJjU2VsZWN0LCB7IE9wdGlvbiwgT3B0R3JvdXAgfSBmcm9tICdyYy1zZWxlY3QnXG5pbXBvcnQgb21pdCBmcm9tIFwiLi4vX3V0aWwvb21pdFwiXG5pbXBvcnQgSWNvbiwgeyBJY29uTmFtZXMgfSBmcm9tIFwiLi4vaWNvblwiXG5pbXBvcnQgSWNvblN2Z1BhdGhzIGZyb20gXCIuLi9pY29uL0ljb25TdmdQYXRoc1wiIC8vIEljb25TdmdQYXRocyDnlKjku6XliKTmlq0gaWNvbiDnm7jlhbPnmoQgcHJvcCDmmK/lkKblkIjms5VcbmltcG9ydCB7IFBsYWNlbWVudCB9IGZyb20gXCIuLi9wb3AtdHJpZ2dlclwiXG5pbXBvcnQgZ2V0UGxhY2VtZW50cyBmcm9tIFwiLi4vdG9vbHRpcC9wbGFjZW1lbnRzXCJcbmltcG9ydCBcIi4vc3R5bGVcIlxuXG4vKipcbiAqIFNlbGVjdCDlsIHoo4Xkuo4gcmMtc2VsZWN0OiBodHRwczovL2dpdGh1Yi5jb20vcmVhY3QtY29tcG9uZW50L3NlbGVjdFxuICogcmMtc2VsZWN0IOacrOi6qyBwcm9wcyDpnZ7luLjpnZ7luLjlpJrjgILogIzlpoIgb25Ecm9wZG93blZpc2libGVDaGFuZ2Ug6L+Z5qC355qEIHByb3Ag55Sa6Iez5LiN5Zyo5paH5qGj5Lit77ybXG4gKiDosIPnlKggcmMtc2VsZWN0IOeahOWGhee9ruaWueazle+8jFNlbGVjdCDlrp7njrDkuoblip/og73nmoTlho3lsIHoo4XvvIzlpoLlhoXltYzmkJzntKLkvp3pnaDnmoTmmK8gdGhpcy5zZWxlY3Qub25JbnB1dENoYW5nZe+8m1xuICogcmMtc2VsZWN0IOS7jeeEtuacieiuuOWkmuWAvOW+l+WGjeWwgeijheWSjOe7p+e7reWtpuS5oOeahOS9meWcsO+8jCoq5pyq5p2l55qE5Y+v57u05oqk56m66Ze05piv6Z2e5bi45aSn55qEKirjgIJcbiAqL1xuXG5jb25zdCBub29wID0gKCkgPT4ge31cbmNvbnN0IHByZWZpeCA9IFwiYWR1aS1zZWxlY3RcIlxuXG5leHBvcnQgaW50ZXJmYWNlIElTZWxlY3Qge1xuICBmb3JjZVBvcHVwQWxpZ24/OiAoKSA9PiB2b2lkXG4gIGdldFJvb3REb21Ob2RlPzogKCkgPT4gSFRNTEVsZW1lbnRcbiAgb25JbnB1dENoYW5nZT86IChlOiBSZWFjdC5DaGFuZ2VFdmVudDxIVE1MSW5wdXRFbGVtZW50PikgPT4gdm9pZFxuICBvbklucHV0S2V5RG93bj86IChlOiBSZWFjdC5LZXlib2FyZEV2ZW50PEhUTUxJbnB1dEVsZW1lbnQ+KSA9PiB2b2lkXG4gIHNldElucHV0VmFsdWU/OiAodmFsdWU/OiBzdHJpbmcpID0+IHZvaWRcbiAgZ2V0UG9wdXBET01Ob2RlOiAoKSA9PiBIVE1MRWxlbWVudFxufVxuXG5leHBvcnQgaW50ZXJmYWNlIElTZWxlY3RQcm9wcyB7XG4gIFtrZXk6IHN0cmluZ106IGFueVxuICAvKipcbiAgICog5a2Q6IqC54K5XG4gICAqL1xuICBjaGlsZHJlbj86IFJlYWN0LlJlYWN0Tm9kZVxuICAvKipcbiAgICog6ZmE5Yqg57G75ZCNXG4gICAqL1xuICBjbGFzc05hbWU/OiBzdHJpbmdcbiAgLyoqXG4gICAqIOWGhemDqOmpseWKqO+8muaYr+WQpuWxleW8gFxuICAgKi9cbiAgZGVmYXVsdE9wZW4/OiBib29sZWFuIHwgbnVsbFxuICAvKipcbiAgICog5YaF6YOo6amx5Yqo77ya5b2T5YmN6YCJ5Lit6aG555qE5YC8XG4gICAqL1xuICBkZWZhdWx0VmFsdWU/OiBzdHJpbmcgfCBudW1iZXIgfCBudWxsXG4gIC8qKlxuICAgKiDkuIvmi4noj5zljZXlkozpgInmi6nlmajlkIzlrr1cbiAgICovXG4gIGRyb3Bkb3duTWF0Y2hTZWxlY3RXaWR0aD86IGJvb2xlYW5cbiAgLyoqXG4gICAqIOS4i+aLieWxleekuuWPkeeUn+WPmOWMluaXtueahCBoYW5kZXLvvIzlj4LmlbDvvJpib29sXG4gICAqL1xuICBvbkRyb3Bkb3duVmlzaWJsZUNoYW5nZT86IChvcGVuOiBib29sZWFuKSA9PiB2b2lkXG4gIC8qKlxuICAgKiDpgInmi6nml7bnmoQgaGFuZGVy77yM5Y+C5pWw77yaKHZhbHVlLCBvcHRpb24pXG4gICAqL1xuICBvblNlbGVjdD86ICh2YWx1ZTogc3RyaW5nIHwgbnVtYmVyLCBvcHRpb246IFJlYWN0LlJlYWN0RWxlbWVudDxhbnk+KSA9PiB2b2lkXG4gIC8qKlxuICAgKiDlpJbpg6jmjqfliLbvvJrmmK/lkKblsZXlvIBcbiAgICovXG4gIG9wZW4/OiBudWxsIHwgYm9vbGVhblxuICAvKipcbiAgICog6YCJ5oup5qGG6buY6K6k5paH5a2XXG4gICAqL1xuICBwbGFjZWhvbGRlcj86IHN0cmluZ1xuICAvKipcbiAgICogcmMtc2VsZWN0IDkuMC4yIOS4jeaUr+aMgSBwb3B1cFBsYWNlbWVudCDnmoTorr7nva7vvIzlm6DmraTpnIDopoHliKnnlKggZG9tIGFsaWduIOiuvue9riBwbGFjZW1lbnRcbiAgICovXG4gIHBsYWNlbWVudD86IFBsYWNlbWVudFxuICAvKipcbiAgICog6K6+572u5Y+z5Zu+5qCHXG4gICAqL1xuICByaWdodEljb24/OiBJY29uTmFtZXNcbiAgLyoqXG4gICAqIOaQnOe0ouahhum7mOiupOaWh+Wtl1xuICAgKi9cbiAgc2VhcmNoYWJsZT86IGJvb2xlYW5cbiAgLyoqXG4gICAqIOaYr+WQpumcgOimgeWGheW1jOaQnOe0olxuICAgKi9cbiAgc2VhcmNoUGxhY2Vob2xkZXI/OiBzdHJpbmdcbiAgLyoqXG4gICAqIOiuvue9ruWwuuWvuO+8jOi3n+edgCBidXR0b24g6LWwXG4gICAqL1xuICBzaXplPzogXCJtaW5pXCIgfCBcInNtYWxsXCIgfCBcIm1lZGl1bVwiIHwgXCJsYXJnZVwiXG4gIC8qKlxuICAgKiDorr7nva7kuLvpophcbiAgICovXG4gIHRoZW1lPzogbnVsbCB8IFwibGlnaHRcIlxuICAvKipcbiAgICog5aSW6YOo5o6n5Yi277ya5b2T5YmN6YCJ5Lit6aG555qE5YC8XG4gICAqL1xuICB2YWx1ZT86IHN0cmluZyB8IG51bWJlciB8IG51bGxcbn1cblxuZXhwb3J0IGludGVyZmFjZSBJU2VsZWN0U3RhdGUge1xuICBsb2FkVGltZXM/OiBudW1iZXJcbiAgb3Blbj86IGJvb2xlYW5cbiAgcGxhY2Vob2xkZXJTaG93PzogYm9vbGVhblxuICB2YWx1ZT86IHN0cmluZyB8IG51bWJlciB8IG51bGxcbn1cblxuLyoqXG4gKiDpgInmi6nlmajnlKjkuo7pgInmi6nmn5DpobnlhoXlrrnjgILpgInmi6nlmajlr7nmr5TljZXpgIkgUmFkaW8g55qE5LyY5Yq/5piv77yM5b2T6YCJ6aG56L+H5aSa5pe277yM6YCJ5oup5Zmo5Y+v5a+55YaF5a655pS26LW377yM5bm25pu05YWz5rOo5LqO5bey6YCJ6aG544CC6YCa5bi477yM5b2T55So5oi36IO95aSf6YCa6L+H5bey6YCJ6aG577yM6L275piT5b6X55+l5YW25L2Z6YCJ6aG555qE6KeE5b6L5pe277yI5aaC5bm05Lu944CB5Z+O5biC562J77yJ77yM6YCJ5oup5ZmoIFNlbGVjdCDmmK/mr5TovoPlpb3nmoTpgInmi6njgIJcbiAqL1xuY2xhc3MgU2VsZWN0IGV4dGVuZHMgUmVhY3QuQ29tcG9uZW50PElTZWxlY3RQcm9wcywgSVNlbGVjdFN0YXRlPiB7XG5cbiAgcHVibGljIHN0YXRpYyB0eXBlID0gXCJTZWxlY3RcIlxuXG4gIHB1YmxpYyBzdGF0aWMgT3B0aW9uOiB0eXBlb2YgT3B0aW9uID0gT3B0aW9uXG5cbiAgcHVibGljIHN0YXRpYyBPcHRHcm91cDogdHlwZW9mIE9wdEdyb3VwID0gT3B0R3JvdXBcblxuICBwdWJsaWMgc3RhdGljIHByb3BUeXBlcyA9IHtcbiAgICAvKipcbiAgICAgKiDlrZDoioLngrlcbiAgICAgKi9cbiAgICBjaGlsZHJlbjogUHJvcFR5cGVzLm5vZGUsXG4gICAgLyoqXG4gICAgICog6ZmE5Yqg57G75ZCNXG4gICAgICovXG4gICAgY2xhc3NOYW1lOiBQcm9wVHlwZXMuc3RyaW5nLFxuICAgIC8qKlxuICAgICAqIOWGhemDqOmpseWKqO+8muaYr+WQpuWxleW8gFxuICAgICAqL1xuICAgIGRlZmF1bHRPcGVuOiBQcm9wVHlwZXMuYm9vbCxcbiAgICAvKipcbiAgICAgKiDlhoXpg6jpqbHliqjvvJrlvZPliY3pgInkuK3pobnnmoTlgLxcbiAgICAgKi9cbiAgICBkZWZhdWx0VmFsdWU6IFByb3BUeXBlcy5vbmVPZlR5cGUoW1xuICAgICAgUHJvcFR5cGVzLnN0cmluZyxcbiAgICAgIFByb3BUeXBlcy5udW1iZXIsXG4gICAgXSksXG4gICAgLyoqXG4gICAgICog5LiL5ouJ6I+c5Y2V5ZKM6YCJ5oup5Zmo5ZCM5a69XG4gICAgICovXG4gICAgZHJvcGRvd25NYXRjaFNlbGVjdFdpZHRoOiBQcm9wVHlwZXMuYm9vbCxcbiAgICAvKipcbiAgICAgKiDkuIvmi4nlsZXnpLrlj5HnlJ/lj5jljJbml7bnmoQgaGFuZGVy77yM5Y+C5pWw77yaYm9vbFxuICAgICAqL1xuICAgIG9uRHJvcGRvd25WaXNpYmxlQ2hhbmdlOiBQcm9wVHlwZXMuZnVuYyxcbiAgICAvKipcbiAgICAgKiDpgInmi6nml7bnmoQgaGFuZGVy77yM5Y+C5pWw77yaKHZhbHVlLCBvcHRpb24pXG4gICAgICovXG4gICAgb25TZWxlY3Q6IFByb3BUeXBlcy5mdW5jLFxuICAgIC8qKlxuICAgICAqIOWklumDqOaOp+WItu+8muaYr+WQpuWxleW8gFxuICAgICAqL1xuICAgIG9wZW46IFByb3BUeXBlcy5ib29sLFxuICAgIC8qKlxuICAgICAqIOmAieaLqeahhum7mOiupOaWh+Wtl1xuICAgICAqL1xuICAgIHBsYWNlaG9sZGVyOiBQcm9wVHlwZXMuc3RyaW5nLFxuICAgIC8qKlxuICAgICAqIHJjLXNlbGVjdCA5LjAuMiDkuI3mlK/mjIEgcG9wdXBQbGFjZW1lbnQg55qE6K6+572u77yM5Zug5q2k6ZyA6KaB5Yip55SoIGRvbSBhbGlnbiDorr7nva4gcGxhY2VtZW50XG4gICAgICovXG4gICAgcGxhY2VtZW50OiBQcm9wVHlwZXMub25lT2YoW1xuICAgICAgXCJ0b3BcIiwgXCJsZWZ0XCIsIFwicmlnaHRcIiwgXCJib3R0b21cIixcbiAgICAgIFwidG9wTGVmdFwiLCBcInRvcFJpZ2h0XCIsIFwiYm90dG9tTGVmdFwiLCBcImJvdHRvbVJpZ2h0XCIsXG4gICAgICBcImxlZnRUb3BcIiwgXCJsZWZ0Qm90dG9tXCIsIFwicmlnaHRUb3BcIiwgXCJyaWdodEJvdHRvbVwiLFxuICAgIF0pLFxuICAgIC8qKlxuICAgICAqIOiuvue9ruWPs+Wbvuagh1xuICAgICAqL1xuICAgIHJpZ2h0SWNvbjogUHJvcFR5cGVzLm9uZU9mKE9iamVjdC5rZXlzKEljb25TdmdQYXRocykpLFxuICAgIC8qKlxuICAgICAqIOaQnOe0ouahhum7mOiupOaWh+Wtl1xuICAgICAqL1xuICAgIHNlYXJjaFBsYWNlaG9sZGVyOiBQcm9wVHlwZXMuc3RyaW5nLFxuICAgIC8qKlxuICAgICAqIOaYr+WQpumcgOimgeWGheW1jOaQnOe0olxuICAgICAqL1xuICAgIHNlYXJjaGFibGU6IFByb3BUeXBlcy5ib29sLFxuICAgIC8qKlxuICAgICAqIOiuvue9ruWwuuWvuO+8jOi3n+edgCBidXR0b24g6LWwXG4gICAgICovXG4gICAgc2l6ZTogUHJvcFR5cGVzLm9uZU9mKFtcIm1pbmlcIiwgXCJzbWFsbFwiLCBcIm1lZGl1bVwiLCBcImxhcmdlXCJdKSxcbiAgICAvKipcbiAgICAgKiDorr7nva7kuLvpophcbiAgICAgKi9cbiAgICB0aGVtZTogUHJvcFR5cGVzLm9uZU9mKFtudWxsLCBcImxpZ2h0XCJdKSxcbiAgICAvKipcbiAgICAgKiDlpJbpg6jmjqfliLbvvJrlvZPliY3pgInkuK3pobnnmoTlgLxcbiAgICAgKi9cbiAgICB2YWx1ZTogUHJvcFR5cGVzLm9uZU9mVHlwZShbXG4gICAgICBQcm9wVHlwZXMuc3RyaW5nLFxuICAgICAgUHJvcFR5cGVzLm51bWJlcixcbiAgICBdKSxcbiAgfVxuXG4gIHB1YmxpYyBzdGF0aWMgZGVmYXVsdFByb3BzOiBJU2VsZWN0UHJvcHMgPSB7XG4gICAgY2hpbGRyZW46IG51bGwsXG4gICAgY2xhc3NOYW1lOiB1bmRlZmluZWQsXG4gICAgZGVmYXVsdE9wZW46IG51bGwsXG4gICAgZGVmYXVsdFZhbHVlOiBudWxsLFxuICAgIGRyb3Bkb3duTWF0Y2hTZWxlY3RXaWR0aDogZmFsc2UsXG4gICAgb25Ecm9wZG93blZpc2libGVDaGFuZ2U6IG5vb3AsXG4gICAgb25TZWxlY3Q6IG5vb3AsXG4gICAgb3BlbjogbnVsbCxcbiAgICBwbGFjZWhvbGRlcjogXCLor7fpgInmi6lcIixcbiAgICBwbGFjZW1lbnQ6IFwiYm90dG9tTGVmdFwiLFxuICAgIHJpZ2h0SWNvbjogXCJ0cmlhbmdsZS1kb3duXCIsXG4gICAgc2VhcmNoUGxhY2Vob2xkZXI6IFwi5pCc57SiXCIsXG4gICAgc2VhcmNoYWJsZTogZmFsc2UsXG4gICAgc2l6ZTogXCJzbWFsbFwiLFxuICAgIHRoZW1lOiBudWxsLFxuICAgIHZhbHVlOiBudWxsLFxuICB9XG4gIFxuICBwdWJsaWMgc3RhdGljIGdldERlcml2ZWRTdGF0ZUZyb21Qcm9wcyA9ICh7IG9wZW4sIHZhbHVlIH06IElTZWxlY3RTdGF0ZSkgPT4ge1xuICAgIGNvbnN0IG5ld1N0YXRlOiBJU2VsZWN0U3RhdGUgPSB7fVxuICAgIGlmIChvcGVuICE9PSBudWxsKSB7XG4gICAgICBuZXdTdGF0ZS5vcGVuID0gb3BlblxuICAgIH1cbiAgICBpZiAodmFsdWUgIT09IG51bGwpIHtcbiAgICAgIG5ld1N0YXRlLnZhbHVlID0gdmFsdWVcbiAgICB9XG4gICAgcmV0dXJuIE9iamVjdC5rZXlzKG5ld1N0YXRlKS5sZW5ndGggPiAwID8gbmV3U3RhdGUgOiBudWxsXG4gIH1cblxuICBwdWJsaWMgbG9ja2VkID0gZmFsc2VcblxuICBwdWJsaWMgc2VsZWN0OiBJU2VsZWN0XG5cbiAgcHVibGljIHNlYXJjaDogSFRNTElucHV0RWxlbWVudFxuXG4gIGNvbnN0cnVjdG9yKHByb3BzOiBJU2VsZWN0UHJvcHMpIHtcbiAgICBzdXBlcihwcm9wcylcbiAgICBjb25zdCB7XG4gICAgICBkZWZhdWx0T3BlbixcbiAgICAgIGRlZmF1bHRWYWx1ZSxcbiAgICAgIG9wZW4sXG4gICAgICB2YWx1ZSxcbiAgICB9ID0gcHJvcHNcblxuICAgIGxldCB2YWx1ZVN0YXRlXG4gICAgaWYgKHZhbHVlICE9PSBudWxsKSB7XG4gICAgICB2YWx1ZVN0YXRlID0gdmFsdWVcbiAgICB9IGVsc2UgaWYgKGRlZmF1bHRWYWx1ZSAhPT0gbnVsbCkge1xuICAgICAgdmFsdWVTdGF0ZSA9IGRlZmF1bHRWYWx1ZVxuICAgIH1cblxuICAgIGxldCBvcGVuU3RhdGVcbiAgICBpZiAob3BlbiAhPT0gbnVsbCkge1xuICAgICAgb3BlblN0YXRlID0gb3BlblxuICAgIH0gZWxzZSBpZiAoZGVmYXVsdE9wZW4gIT09IG51bGwpIHtcbiAgICAgIG9wZW5TdGF0ZSA9IGRlZmF1bHRPcGVuXG4gICAgfVxuICAgIHRoaXMuc3RhdGUgPSB7XG4gICAgICBsb2FkVGltZXM6IDAsXG4gICAgICBvcGVuOiBvcGVuU3RhdGUsXG4gICAgICBwbGFjZWhvbGRlclNob3c6IGZhbHNlLFxuICAgICAgdmFsdWU6IHZhbHVlU3RhdGUsXG4gICAgfVxuICB9XG5cbiAgcHVibGljIHNhdmVTZWxlY3QgPSAobm9kZTogSVNlbGVjdCkgPT4ge1xuICAgIHRoaXMuc2VsZWN0ID0gbm9kZVxuICB9XG5cbiAgcHVibGljIHNhdmVTZWFyY2ggPSAobm9kZTogSFRNTElucHV0RWxlbWVudCkgPT4ge1xuICAgIHRoaXMuc2VhcmNoID0gbm9kZVxuICB9XG5cbiAgcHVibGljIG9uRHJvcGRvd25WaXNpYmxlQ2hhbmdlID0gKG9wZW46IGJvb2xlYW4pID0+IHtcbiAgICBjb25zdCB7XG4gICAgICBvbkRyb3Bkb3duVmlzaWJsZUNoYW5nZSxcbiAgICAgIG9wZW46IG9wZW5Qcm9wLFxuICAgIH0gPSB0aGlzLnByb3BzXG5cbiAgICBjb25zdCB7IGxvYWRUaW1lcyB9ID0gdGhpcy5zdGF0ZVxuXG4gICAgaWYgKHRoaXMubG9ja2VkKSB7XG4gICAgICByZXR1cm5cbiAgICB9XG4gICAgaWYgKG9wZW5Qcm9wID09PSBudWxsKSB7XG4gICAgICB0aGlzLnNldFN0YXRlKHsgb3BlbiB9KVxuICAgIH1cbiAgICBpZiAob3Blbikge1xuICAgICAgdGhpcy5wcmV2ZW50VmlzaWJsZUNoYW5nZSgpXG4gICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgaWYgKHRoaXMuc2VhcmNoICYmICEobG9hZFRpbWVzICYmIGxvYWRUaW1lcyA+IDQpKSB7XG4gICAgICAgICAgLy8g5Yqg6L295pWw6YeP6LaF6L+HIDUg5qyh77yM5Y2zIDEwMCDpobnlkI7lj5bmtoggZm9jdXPvvIzpmLLmraIgc2VsZWN0IOa2iOWksVxuICAgICAgICAgIHRoaXMuc2VhcmNoLmZvY3VzKClcbiAgICAgICAgfVxuICAgICAgfSwgMTUwKVxuICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgIGlmICh0aGlzLnNlbGVjdCAmJiB0aGlzLnNlbGVjdC5mb3JjZVBvcHVwQWxpZ24pIHtcbiAgICAgICAgICB0aGlzLnNlbGVjdC5mb3JjZVBvcHVwQWxpZ24oKVxuICAgICAgICB9XG4gICAgICB9LCAyMDApXG4gICAgfVxuICAgIGlmIChvbkRyb3Bkb3duVmlzaWJsZUNoYW5nZSkge1xuICAgICAgb25Ecm9wZG93blZpc2libGVDaGFuZ2Uob3BlbilcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgb25TZWxlY3QgPSAodmFsdWU6IHN0cmluZyB8IG51bWJlciwgb3B0aW9uOiBSZWFjdC5SZWFjdEVsZW1lbnQ8YW55PikgPT4ge1xuICAgIGNvbnN0IHtcbiAgICAgIG9uU2VsZWN0LFxuICAgICAgdmFsdWU6IHZhbHVlUHJvcCxcbiAgICB9ID0gdGhpcy5wcm9wc1xuXG4gICAgaWYgKHZhbHVlUHJvcCA9PT0gbnVsbCkge1xuICAgICAgdGhpcy5zZXRTdGF0ZSh7XG4gICAgICAgIHZhbHVlLFxuICAgICAgfSlcbiAgICB9XG4gICAgaWYgKG9uU2VsZWN0KSB7XG4gICAgICBvblNlbGVjdCh2YWx1ZSwgb3B0aW9uKVxuICAgIH1cblxuICAgIHRoaXMuc2V0U3RhdGUoe1xuICAgICAgcGxhY2Vob2xkZXJTaG93OiBmYWxzZSxcbiAgICB9KVxuICAgIGlmICh0aGlzLnNlYXJjaCkge1xuICAgICAgdGhpcy5zZWFyY2gudmFsdWUgPSBcIlwiXG4gICAgfVxuICAgIGlmICh0aGlzLnNlbGVjdCAmJiB0aGlzLnNlbGVjdC5zZXRJbnB1dFZhbHVlKSB7XG4gICAgICB0aGlzLnNlbGVjdC5zZXRJbnB1dFZhbHVlKFwiXCIpXG4gICAgfVxuICB9XG5cbiAgcHVibGljIGhhbmRsZVBvcHVwU2Nyb2xsID0gKHsgdGFyZ2V0OiB7IG9mZnNldEhlaWdodCwgc2Nyb2xsSGVpZ2h0LCBzY3JvbGxUb3AgfSB9OiBhbnkpID0+IHtcbiAgICBpZiAoKG9mZnNldEhlaWdodCArIHNjcm9sbFRvcCkgPiBzY3JvbGxIZWlnaHQgLSAzNikge1xuICAgICAgdGhpcy5zZXRTdGF0ZSgoeyBsb2FkVGltZXMgfSkgPT4gKHsgbG9hZFRpbWVzOiAobG9hZFRpbWVzIHx8IDApICsgMSB9KSlcbiAgICAgIHRoaXMuaGFuZGxlU2VhcmNoKClcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgaGFuZGxlRHJvcGRvd25SZW5kZXIgPSAobWVudTogSlNYLkVsZW1lbnQpID0+IHtcbiAgICBjb25zdCB7IHNlYXJjaGFibGUsIHNlYXJjaFBsYWNlaG9sZGVyIH0gPSB0aGlzLnByb3BzXG4gICAgY29uc3QgeyBsb2FkVGltZXMgfSA9IHRoaXMuc3RhdGUgXG4gICAgY29uc3QgeyBwcm9wczogeyBtZW51SXRlbXMgfSB9ID0gbWVudVxuICAgIGNvbnN0IG1lbnVJdGVtc1NsaWNlZCA9IG1lbnVJdGVtcy5zbGljZSgwLCAyMCAqICgobG9hZFRpbWVzIHx8IDApICsgMSkpXG4gICAgY29uc3QgbWVudUNsb25lZCA9IFJlYWN0LmNsb25lRWxlbWVudChtZW51LCB7XG4gICAgICBtZW51SXRlbXM6IG1lbnVJdGVtc1NsaWNlZCxcbiAgICB9KVxuICAgIGlmIChzZWFyY2hhYmxlKSB7XG4gICAgICByZXR1cm4gKFxuICAgICAgICA8ZGl2PlxuICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgIGNsYXNzTmFtZT17YCR7cHJlZml4fS1zZWFyY2hgfVxuICAgICAgICAgID5cbiAgICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgICByZWY9e3RoaXMuc2F2ZVNlYXJjaH1cbiAgICAgICAgICAgICAgcGxhY2Vob2xkZXI9e3NlYXJjaFBsYWNlaG9sZGVyfVxuICAgICAgICAgICAgICBvbkNoYW5nZT17dGhpcy5oYW5kbGVTZWFyY2h9XG4gICAgICAgICAgICAgIG9uS2V5RG93bj17dGhpcy5oYW5kbGVTZWFyY2hLZXlEb3dufVxuICAgICAgICAgICAgICBvbk1vdXNlRG93bj17dGhpcy5wcmV2ZW50VmlzaWJsZUNoYW5nZX1cbiAgICAgICAgICAgICAgb25Nb3VzZVVwPXt0aGlzLnByZXZlbnRWaXNpYmxlQ2hhbmdlfVxuICAgICAgICAgICAgLz5cbiAgICAgICAgICAgIDxJY29uIGljb249XCJzZWFyY2hcIiBjbGFzc05hbWU9e2Ake3ByZWZpeH0taWNvbmB9IC8+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgeyBtZW51Q2xvbmVkIH1cbiAgICAgICAgPC9kaXY+XG4gICAgICApXG4gICAgfVxuICAgIHJldHVybiBtZW51XG4gIH1cblxuICBwdWJsaWMgaGFuZGxlU2VhcmNoID0gKGU/OiBSZWFjdC5DaGFuZ2VFdmVudDxIVE1MSW5wdXRFbGVtZW50PikgPT4ge1xuICAgIGNvbnN0IHsgcGxhY2Vob2xkZXJTaG93LCB2YWx1ZSB9ID0gdGhpcy5zdGF0ZVxuXG4gICAgaWYgKGUgJiYgZS50YXJnZXQudmFsdWUgJiYgIXBsYWNlaG9sZGVyU2hvdyAmJiAhdmFsdWUpIHtcbiAgICAgIHRoaXMuc2V0U3RhdGUoeyBwbGFjZWhvbGRlclNob3c6IHRydWUgfSlcbiAgICB9XG4gICAgaWYgKHRoaXMuc2VsZWN0KSB7XG4gICAgICBjb25zdCBwb3B1cCA9IHRoaXMuc2VsZWN0LmdldFBvcHVwRE9NTm9kZSgpIHx8IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoXCIuYWR1aS1zZWxlY3QtZHJvcGRvd25cIilcbiAgICAgIGxldCB2YWw6IHN0cmluZ1xuICAgICAgaWYgKGUpIHtcbiAgICAgICAgaWYgKHRoaXMuc2VsZWN0Lm9uSW5wdXRDaGFuZ2UpIHtcbiAgICAgICAgICB0aGlzLnNlbGVjdC5vbklucHV0Q2hhbmdlKGUpXG4gICAgICAgIH1cbiAgICAgICAgdmFsID0gZS50YXJnZXQudmFsdWVcbiAgICAgIH0gZWxzZSBpZiAodGhpcy5zZWFyY2gpIHtcbiAgICAgICAgdmFsID0gdGhpcy5zZWFyY2gudmFsdWVcbiAgICAgICAgaWYgKCF2YWwpIHtcbiAgICAgICAgICByZXR1cm5cbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgaWYgKHBvcHVwKSB7XG4gICAgICAgIGlmIChlKSB7XG4gICAgICAgICAgdGhpcy5zZXRTdGF0ZSh7IGxvYWRUaW1lczogMCB9KVxuICAgICAgICAgIGNvbnN0IHNlYXJjaFdyYXBwZXIgPSBwb3B1cC5xdWVyeVNlbGVjdG9yKFwiLmFkdWktc2VsZWN0LXNlYXJjaFwiKVxuICAgICAgICAgIGlmIChzZWFyY2hXcmFwcGVyICYmIHNlYXJjaFdyYXBwZXIubmV4dEVsZW1lbnRTaWJsaW5nKSB7XG4gICAgICAgICAgICBzZWFyY2hXcmFwcGVyLm5leHRFbGVtZW50U2libGluZy5zY3JvbGxUb3AgPSAwXG4gICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgLy8gaGlnaGxpZ2h0XG4gICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgIGNvbnN0IGl0ZW1zID0gcG9wdXAucXVlcnlTZWxlY3RvckFsbChcIi5hZHVpLXNlbGVjdC1kcm9wZG93bi1tZW51LWl0ZW1cIilcbiAgICAgICAgICBpdGVtcy5mb3JFYWNoKChpdGVtOiBIVE1MRWxlbWVudCkgPT4ge1xuICAgICAgICAgICAgY29uc3QgcmVwbGFjZW1lbnQgPSAoc3RyOiBzdHJpbmcpID0+IHN0ci5yZXBsYWNlKHZhbCwgYDxzcGFuIHN0eWxlPVwiY29sb3I6IHZhcigtLXByaW1hcnktY29sb3IpO1wiPiR7dmFsfTwvc3Bhbj5gKVxuICAgICAgICAgICAgbGV0IHNvdXJjZUh0bWwgPSBpdGVtLmRhdGFzZXQuaHRtbFxuICAgICAgICAgICAgaWYgKCFzb3VyY2VIdG1sKSB7XG4gICAgICAgICAgICAgIHNvdXJjZUh0bWwgPSBpdGVtLmlubmVySFRNTFxuICAgICAgICAgICAgICBpdGVtLmRhdGFzZXQuaHRtbCA9IGl0ZW0uaW5uZXJIVE1MXG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoaXRlbS5pbm5lckhUTUwgIT09IFwi5peg5Yy56YWN57uT5p6cXCIpIHtcbiAgICAgICAgICAgICAgaWYgKHZhbCkge1xuICAgICAgICAgICAgICAgIC8vIOWIpOaWreaYr+S7pSByZWFjdC10ZXh0IOazqOmHiuW8gOWni+eahO+8jOWImeeVpei/h+azqOmHiumDqOWIhui/m+ihjCBoaWdodGxpZ2h0XG4gICAgICAgICAgICAgICAgaWYgKHNvdXJjZUh0bWwuaW5kZXhPZihcIjwhLS0gcmVhY3QtdGV4dDpcIikgPT09IDApIHtcbiAgICAgICAgICAgICAgICAgIGNvbnN0IGNvbW1lbnRFbmRJbmRleCA9IHNvdXJjZUh0bWwuaW5kZXhPZihcIi0tPlwiKVxuICAgICAgICAgICAgICAgICAgaWYgKHNvdXJjZUh0bWwuaW5kZXhPZih2YWwpIDwgY29tbWVudEVuZEluZGV4KSB7XG4gICAgICAgICAgICAgICAgICAgIGl0ZW0uaW5uZXJIVE1MID0gc291cmNlSHRtbC5zdWJzdHIoMCwgY29tbWVudEVuZEluZGV4ICsgMykgKyByZXBsYWNlbWVudChzb3VyY2VIdG1sLnN1YnN0cihjb21tZW50RW5kSW5kZXggKyAzKSlcbiAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIGl0ZW0uaW5uZXJIVE1MID0gcmVwbGFjZW1lbnQoc291cmNlSHRtbClcbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgaXRlbS5pbm5lckhUTUwgPSByZXBsYWNlbWVudChzb3VyY2VIdG1sKVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBpdGVtLmlubmVySFRNTCA9IHNvdXJjZUh0bWxcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH0pXG4gICAgICAgIH0sIDApXG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcHVibGljIGhhbmRsZVNlYXJjaEtleURvd24gPSAoZTogUmVhY3QuS2V5Ym9hcmRFdmVudDxIVE1MSW5wdXRFbGVtZW50PikgPT4ge1xuICAgIGlmICh0aGlzLnNlbGVjdCAmJiB0aGlzLnNlbGVjdC5vbklucHV0S2V5RG93bikge1xuICAgICAgdGhpcy5zZWxlY3Qub25JbnB1dEtleURvd24oZSlcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgcHJldmVudFZpc2libGVDaGFuZ2UgPSAoKSA9PiB7XG4gICAgdGhpcy5sb2NrZWQgPSB0cnVlXG4gICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICB0aGlzLmxvY2tlZCA9IGZhbHNlXG4gICAgICB0aGlzLnNldFN0YXRlKHsgb3BlbjogdHJ1ZSB9KVxuICAgIH0sIDIwMClcbiAgfVxuXG4gIHB1YmxpYyByZW5kZXIoKSB7XG4gICAgY29uc3Qge1xuICAgICAgY2hpbGRyZW4sXG4gICAgICBjbGFzc05hbWUsXG4gICAgICBkcm9wZG93bk1hdGNoU2VsZWN0V2lkdGgsXG4gICAgICBwbGFjZWhvbGRlcixcbiAgICAgIHBsYWNlbWVudCxcbiAgICAgIHJpZ2h0SWNvbixcbiAgICAgIHNlYXJjaGFibGUsXG4gICAgICBzaXplLFxuICAgICAgdGhlbWUsXG4gICAgICAuLi5vdGhlclByb3BzXG4gICAgfSA9IHRoaXMucHJvcHNcblxuICAgIGNvbnN0IHJlc3RQcm9wcyA9IG9taXQob3RoZXJQcm9wcywgW1xuICAgICAgXCJvcGVuXCIsXG4gICAgICBcIm9uRHJvcGRvd25WaXNpYmxlQ2hhbmdlXCIsXG4gICAgICBcIm9uU2VsZWN0XCIsXG4gICAgICBcInNlYXJjaFBsYWNlaG9sZGVyXCIsXG4gICAgICBcInZhbHVlXCIsXG4gICAgXSlcblxuICAgIGNvbnN0IHtcbiAgICAgIG9wZW46IG9wZW5TdGF0ZSxcbiAgICAgIHBsYWNlaG9sZGVyU2hvdyxcbiAgICAgIHZhbHVlOiB2YWx1ZVN0YXRlLFxuICAgIH0gPSB0aGlzLnN0YXRlXG5cbiAgICAvLyBvcGVuU3RhdGUg5Y+v6IO95pivIHVuZGVmaW5lZCBvciBudWxsXG4gICAgY29uc3Qgb3BlblByb3BzOiB7IG9wZW4/OiBib29sZWFuLCB2YWx1ZT86IHN0cmluZyB8IG51bWJlciB8IG51bGwgfSA9IHt9XG4gICAgaWYgKHR5cGVvZiAob3BlblN0YXRlKSA9PT0gXCJib29sZWFuXCIpIHtcbiAgICAgIG9wZW5Qcm9wcy5vcGVuID0gb3BlblN0YXRlXG4gICAgfVxuICAgIGlmICh2YWx1ZVN0YXRlICE9PSBudWxsKSB7XG4gICAgICBvcGVuUHJvcHMudmFsdWUgPSB2YWx1ZVN0YXRlXG4gICAgfVxuICAgIHJldHVybiAoXG4gICAgICA8UmNTZWxlY3RcbiAgICAgICAgY2xhc3NOYW1lPXtjbGFzc05hbWVzKFxuICAgICAgICAgIGNsYXNzTmFtZSxcbiAgICAgICAgICBgJHtwcmVmaXh9LXNlbGVjdGAsXG4gICAgICAgICAgYCR7cHJlZml4fS0ke3NpemV9YCxcbiAgICAgICAgICB7XG4gICAgICAgICAgICBbYCR7cHJlZml4fS1saWdodGBdOiB0aGVtZSA9PT0gXCJsaWdodFwiLFxuICAgICAgICAgICAgW2Ake3ByZWZpeH0tc2VsZWN0X3BsYWNlaG9sZGVyU2hvd2BdOiBwbGFjZWhvbGRlclNob3csXG4gICAgICAgICAgfSxcbiAgICAgICAgKX1cbiAgICAgICAgZHJvcGRvd25BbGlnbj17Z2V0UGxhY2VtZW50cyh7IGFsaWduRWRnZTogdHJ1ZSB9KVtwbGFjZW1lbnQgfHwgXCJib3R0b21MZWZ0XCJdfVxuICAgICAgICBkcm9wZG93bkNsYXNzTmFtZT17YGFkdWktc2VsZWN0LWRyb3Bkb3duLSR7c2l6ZX0gJHtzZWFyY2hhYmxlID8gXCJhZHVpLXNlbGVjdC1kcm9wZG93bi1zZWFyY2hhYmxlXCIgOiBcIlwifWB9XG4gICAgICAgIGRyb3Bkb3duTWF0Y2hTZWxlY3RXaWR0aD17ZHJvcGRvd25NYXRjaFNlbGVjdFdpZHRofVxuICAgICAgICBkcm9wZG93blJlbmRlcj17dGhpcy5oYW5kbGVEcm9wZG93blJlbmRlcn1cbiAgICAgICAgaW5wdXRJY29uPXs8SWNvbiBpY29uPXtyaWdodEljb24gfHwgXCJ0cmlhbmdsZS1kb3duXCJ9IGNvbG9yPVwidmFyKC0tZ3JheS04MDApXCIgLz59XG4gICAgICAgIG5vdEZvdW5kQ29udGVudD1cIuaXoOWMuemFjee7k+aenFwiXG4gICAgICAgIG9uRHJvcGRvd25WaXNpYmxlQ2hhbmdlPXt0aGlzLm9uRHJvcGRvd25WaXNpYmxlQ2hhbmdlfVxuICAgICAgICBvblNlbGVjdD17dGhpcy5vblNlbGVjdH1cbiAgICAgICAgZGVmYXVsdEFjdGl2ZUZpcnN0T3B0aW9uPXtmYWxzZX1cbiAgICAgICAgb25Qb3B1cFNjcm9sbD17dGhpcy5oYW5kbGVQb3B1cFNjcm9sbH1cbiAgICAgICAgb3B0aW9uTGFiZWxQcm9wPVwiY2hpbGRyZW5cIlxuICAgICAgICBvcHRpb25GaWx0ZXJQcm9wPVwiY2hpbGRyZW5cIlxuICAgICAgICBwbGFjZWhvbGRlcj17cGxhY2Vob2xkZXJ9XG4gICAgICAgIHByZWZpeENscz1cImFkdWktc2VsZWN0XCJcbiAgICAgICAgc2hvd1NlYXJjaD17ZmFsc2V9XG4gICAgICAgIHJlZj17dGhpcy5zYXZlU2VsZWN0fVxuICAgICAgICB0cmFuc2l0aW9uTmFtZT1cInNsaWRlLXVwXCJcbiAgICAgICAgey4uLm9wZW5Qcm9wc31cbiAgICAgICAgey4uLnJlc3RQcm9wc31cbiAgICAgID5cbiAgICAgICAgeyBjaGlsZHJlbiB9XG4gICAgICA8L1JjU2VsZWN0PlxuICAgIClcbiAgfVxufVxuXG5wb2x5ZmlsbChTZWxlY3QpXG5cbmV4cG9ydCBkZWZhdWx0IFNlbGVjdCJdfQ==
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL2NvbXBvbmVudHMvc2VsZWN0L1NlbGVjdC50c3giXSwibmFtZXMiOlsibm9vcCIsInByZWZpeCIsIlNlbGVjdCIsInByb3BzIiwibG9ja2VkIiwic2VsZWN0Iiwic2VhcmNoIiwic2F2ZVNlbGVjdCIsIm5vZGUiLCJzYXZlU2VhcmNoIiwib25Ecm9wZG93blZpc2libGVDaGFuZ2UiLCJvcGVuIiwib3BlblByb3AiLCJsb2FkVGltZXMiLCJzdGF0ZSIsInNldFN0YXRlIiwicHJldmVudFZpc2libGVDaGFuZ2UiLCJzZXRUaW1lb3V0IiwiZm9jdXMiLCJmb3JjZVBvcHVwQWxpZ24iLCJvblNlbGVjdCIsInZhbHVlIiwib3B0aW9uIiwidmFsdWVQcm9wIiwicGxhY2Vob2xkZXJTaG93Iiwic2V0SW5wdXRWYWx1ZSIsImhhbmRsZVBvcHVwU2Nyb2xsIiwidGFyZ2V0Iiwib2Zmc2V0SGVpZ2h0Iiwic2Nyb2xsSGVpZ2h0Iiwic2Nyb2xsVG9wIiwiaGFuZGxlRHJvcGRvd25SZW5kZXIiLCJtZW51Iiwic2VhcmNoYWJsZSIsInNlYXJjaFBsYWNlaG9sZGVyIiwibWVudUl0ZW1zIiwibWVudUl0ZW1zU2xpY2VkIiwic2xpY2UiLCJtZW51Q2xvbmVkIiwiUmVhY3QiLCJjbG9uZUVsZW1lbnQiLCJoYW5kbGVTZWFyY2giLCJoYW5kbGVTZWFyY2hLZXlEb3duIiwiZSIsIm9uSW5wdXRDaGFuZ2UiLCJ2YWwiLCJwb3B1cCIsImdldFBvcHVwRE9NTm9kZSIsImRvY3VtZW50IiwicXVlcnlTZWxlY3RvciIsImxpc3QiLCJpdGVtcyIsInF1ZXJ5U2VsZWN0b3JBbGwiLCJmb3JFYWNoIiwiaXRlbSIsInJlcGxhY2VtZW50Iiwic3RyIiwicmVwbGFjZSIsInNvdXJjZUh0bWwiLCJkYXRhc2V0IiwiaHRtbCIsImlubmVySFRNTCIsImluZGV4T2YiLCJjb21tZW50RW5kSW5kZXgiLCJzdWJzdHIiLCJvbklucHV0S2V5RG93biIsImRlZmF1bHRPcGVuIiwiZGVmYXVsdFZhbHVlIiwidmFsdWVTdGF0ZSIsIm9wZW5TdGF0ZSIsImNoaWxkcmVuIiwiY2xhc3NOYW1lIiwiZHJvcGRvd25NYXRjaFNlbGVjdFdpZHRoIiwicGxhY2Vob2xkZXIiLCJwbGFjZW1lbnQiLCJyaWdodEljb24iLCJzaXplIiwidGhlbWUiLCJvdGhlclByb3BzIiwicmVzdFByb3BzIiwib3BlblByb3BzIiwiYWxpZ25FZGdlIiwiQ29tcG9uZW50IiwidHlwZSIsIk9wdGlvbiIsIk9wdEdyb3VwIiwicHJvcFR5cGVzIiwiUHJvcFR5cGVzIiwic3RyaW5nIiwiYm9vbCIsIm9uZU9mVHlwZSIsIm51bWJlciIsImZ1bmMiLCJvbmVPZiIsIk9iamVjdCIsImtleXMiLCJJY29uU3ZnUGF0aHMiLCJkZWZhdWx0UHJvcHMiLCJ1bmRlZmluZWQiLCJnZXREZXJpdmVkU3RhdGVGcm9tUHJvcHMiLCJuZXdTdGF0ZSIsImxlbmd0aCJdLCJtYXBwaW5ncyI6Ijs7Ozs7OztBQUFBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUVBOztBQUNBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQVNBLElBQU1BLElBQUksR0FBRyxTQUFQQSxJQUFPLEdBQU0sQ0FBRSxDQUFyQjs7QUFDQSxJQUFNQyxNQUFNLEdBQUcsYUFBZjs7SUF5Rk1DLE07OztBQXlISixrQkFBWUMsS0FBWixFQUFpQztBQUFBOztBQUFBOztBQUMvQixnRkFBTUEsS0FBTjtBQUQrQixVQU4xQkMsTUFNMEIsR0FOakIsS0FNaUI7QUFBQSxVQUoxQkMsTUFJMEI7QUFBQSxVQUYxQkMsTUFFMEI7O0FBQUEsVUE4QjFCQyxVQTlCMEIsR0E4QmIsVUFBQ0MsSUFBRCxFQUFtQjtBQUNyQyxZQUFLSCxNQUFMLEdBQWNHLElBQWQ7QUFDRCxLQWhDZ0M7O0FBQUEsVUFrQzFCQyxVQWxDMEIsR0FrQ2IsVUFBQ0QsSUFBRCxFQUE0QjtBQUM5QyxZQUFLRixNQUFMLEdBQWNFLElBQWQ7QUFDRCxLQXBDZ0M7O0FBQUEsVUFzQzFCRSx1QkF0QzBCLEdBc0NBLFVBQUNDLElBQUQsRUFBbUI7QUFBQSx3QkFJOUMsTUFBS1IsS0FKeUM7QUFBQSxVQUVoRE8sdUJBRmdELGVBRWhEQSx1QkFGZ0Q7QUFBQSxVQUcxQ0UsUUFIMEMsZUFHaERELElBSGdEO0FBQUEsVUFNMUNFLFNBTjBDLEdBTTVCLE1BQUtDLEtBTnVCLENBTTFDRCxTQU4wQzs7QUFRbEQsVUFBSSxNQUFLVCxNQUFULEVBQWlCO0FBQ2Y7QUFDRDs7QUFDRCxVQUFJUSxRQUFRLEtBQUssSUFBakIsRUFBdUI7QUFDckIsY0FBS0csUUFBTCxDQUFjO0FBQUVKLFVBQUFBLElBQUksRUFBSkE7QUFBRixTQUFkO0FBQ0Q7O0FBQ0QsVUFBSUEsSUFBSixFQUFVO0FBQ1IsY0FBS0ssb0JBQUw7O0FBQ0FDLFFBQUFBLFVBQVUsQ0FBQyxZQUFNO0FBQ2YsY0FBSSxNQUFLWCxNQUFMLElBQWUsRUFBRU8sU0FBUyxJQUFJQSxTQUFTLEdBQUcsQ0FBM0IsQ0FBbkIsRUFBa0Q7QUFFaEQsa0JBQUtQLE1BQUwsQ0FBWVksS0FBWjtBQUNEO0FBQ0YsU0FMUyxFQUtQLEdBTE8sQ0FBVjtBQU1BRCxRQUFBQSxVQUFVLENBQUMsWUFBTTtBQUNmLGNBQUksTUFBS1osTUFBTCxJQUFlLE1BQUtBLE1BQUwsQ0FBWWMsZUFBL0IsRUFBZ0Q7QUFDOUMsa0JBQUtkLE1BQUwsQ0FBWWMsZUFBWjtBQUNEO0FBQ0YsU0FKUyxFQUlQLEdBSk8sQ0FBVjtBQUtEOztBQUNELFVBQUlULHVCQUFKLEVBQTZCO0FBQzNCQSxRQUFBQSx1QkFBdUIsQ0FBQ0MsSUFBRCxDQUF2QjtBQUNEO0FBQ0YsS0FyRWdDOztBQUFBLFVBdUUxQlMsUUF2RTBCLEdBdUVmLFVBQUNDLEtBQUQsRUFBeUJDLE1BQXpCLEVBQTZEO0FBQUEseUJBSXpFLE1BQUtuQixLQUpvRTtBQUFBLFVBRTNFaUIsUUFGMkUsZ0JBRTNFQSxRQUYyRTtBQUFBLFVBR3BFRyxTQUhvRSxnQkFHM0VGLEtBSDJFOztBQU03RSxVQUFJRSxTQUFTLEtBQUssSUFBbEIsRUFBd0I7QUFDdEIsY0FBS1IsUUFBTCxDQUFjO0FBQ1pNLFVBQUFBLEtBQUssRUFBTEE7QUFEWSxTQUFkO0FBR0Q7O0FBQ0QsVUFBSUQsUUFBSixFQUFjO0FBQ1pBLFFBQUFBLFFBQVEsQ0FBQ0MsS0FBRCxFQUFRQyxNQUFSLENBQVI7QUFDRDs7QUFFRCxZQUFLUCxRQUFMLENBQWM7QUFDWlMsUUFBQUEsZUFBZSxFQUFFO0FBREwsT0FBZDs7QUFHQSxVQUFJLE1BQUtsQixNQUFULEVBQWlCO0FBQ2YsY0FBS0EsTUFBTCxDQUFZZSxLQUFaLEdBQW9CLEVBQXBCO0FBQ0Q7O0FBQ0QsVUFBSSxNQUFLaEIsTUFBTCxJQUFlLE1BQUtBLE1BQUwsQ0FBWW9CLGFBQS9CLEVBQThDO0FBQzVDLGNBQUtwQixNQUFMLENBQVlvQixhQUFaLENBQTBCLEVBQTFCO0FBQ0Q7QUFDRixLQS9GZ0M7O0FBQUEsVUFpRzFCQyxpQkFqRzBCLEdBaUdOLGdCQUFnRTtBQUFBLDZCQUE3REMsTUFBNkQ7QUFBQSxVQUFuREMsWUFBbUQsZUFBbkRBLFlBQW1EO0FBQUEsVUFBckNDLFlBQXFDLGVBQXJDQSxZQUFxQztBQUFBLFVBQXZCQyxTQUF1QixlQUF2QkEsU0FBdUI7O0FBQ3pGLFVBQUtGLFlBQVksR0FBR0UsU0FBaEIsR0FBNkJELFlBQVksR0FBRyxFQUFoRCxFQUFvRDtBQUNsRCxjQUFLZCxRQUFMLENBQWM7QUFBQSxjQUFHRixTQUFILFNBQUdBLFNBQUg7QUFBQSxpQkFBb0I7QUFBRUEsWUFBQUEsU0FBUyxFQUFFLENBQUNBLFNBQVMsSUFBSSxDQUFkLElBQW1CO0FBQWhDLFdBQXBCO0FBQUEsU0FBZDtBQUNEO0FBQ0YsS0FyR2dDOztBQUFBLFVBdUcxQmtCLG9CQXZHMEIsR0F1R0gsVUFBQ0MsSUFBRCxFQUF1QjtBQUFBLHlCQUNULE1BQUs3QixLQURJO0FBQUEsVUFDM0M4QixVQUQyQyxnQkFDM0NBLFVBRDJDO0FBQUEsVUFDL0JDLGlCQUQrQixnQkFDL0JBLGlCQUQrQjtBQUFBLFVBRTNDckIsU0FGMkMsR0FFN0IsTUFBS0MsS0FGd0IsQ0FFM0NELFNBRjJDO0FBQUEsVUFHbENzQixTQUhrQyxHQUdsQkgsSUFIa0IsQ0FHM0M3QixLQUgyQyxDQUdsQ2dDLFNBSGtDO0FBSW5ELFVBQU1DLGVBQWUsR0FBR0QsU0FBUyxDQUFDRSxLQUFWLENBQWdCLENBQWhCLEVBQW1CLE1BQU0sQ0FBQ3hCLFNBQVMsSUFBSSxDQUFkLElBQW1CLENBQXpCLENBQW5CLENBQXhCO0FBQ0EsVUFBTXlCLFVBQVUsR0FBR0MsS0FBSyxDQUFDQyxZQUFOLENBQW1CUixJQUFuQixFQUF5QjtBQUMxQ0csUUFBQUEsU0FBUyxFQUFFQztBQUQrQixPQUF6QixDQUFuQjs7QUFHQSxVQUFJSCxVQUFKLEVBQWdCO0FBQ2QsZUFDRSxpQ0FDRTtBQUNFLFVBQUEsU0FBUyxZQUFLaEMsTUFBTDtBQURYLFdBR0U7QUFDRSxVQUFBLEdBQUcsRUFBRSxNQUFLUSxVQURaO0FBRUUsVUFBQSxXQUFXLEVBQUV5QixpQkFGZjtBQUdFLFVBQUEsUUFBUSxFQUFFLE1BQUtPLFlBSGpCO0FBSUUsVUFBQSxTQUFTLEVBQUUsTUFBS0MsbUJBSmxCO0FBS0UsVUFBQSxXQUFXLEVBQUUsTUFBSzFCLG9CQUxwQjtBQU1FLFVBQUEsU0FBUyxFQUFFLE1BQUtBO0FBTmxCLFVBSEYsRUFXRSxvQkFBQyxnQkFBRDtBQUFNLFVBQUEsSUFBSSxFQUFDLFFBQVg7QUFBb0IsVUFBQSxTQUFTLFlBQUtmLE1BQUw7QUFBN0IsVUFYRixDQURGLEVBY0lxQyxVQWRKLENBREY7QUFrQkQ7O0FBQ0QsYUFBT04sSUFBUDtBQUNELEtBcElnQzs7QUFBQSxVQXNJMUJTLFlBdEkwQixHQXNJWCxVQUFDRSxDQUFELEVBQTRDO0FBQUEsd0JBQzdCLE1BQUs3QixLQUR3QjtBQUFBLFVBQ3hEVSxlQUR3RCxlQUN4REEsZUFEd0Q7QUFBQSxVQUN2Q0gsS0FEdUMsZUFDdkNBLEtBRHVDOztBQUVoRSxVQUFJc0IsQ0FBQyxDQUFDaEIsTUFBRixDQUFTTixLQUFULElBQWtCLENBQUNHLGVBQW5CLElBQXNDLENBQUNILEtBQTNDLEVBQWtEO0FBQ2hELGNBQUtOLFFBQUwsQ0FBYztBQUFFUyxVQUFBQSxlQUFlLEVBQUU7QUFBbkIsU0FBZDtBQUNEOztBQUNELFVBQUksTUFBS25CLE1BQVQsRUFBaUI7QUFDZixZQUFJLE1BQUtBLE1BQUwsQ0FBWXVDLGFBQWhCLEVBQStCO0FBQzdCLGdCQUFLdkMsTUFBTCxDQUFZdUMsYUFBWixDQUEwQkQsQ0FBMUI7QUFDRDs7QUFDRCxZQUFNRSxHQUFHLEdBQUdGLENBQUMsQ0FBQ2hCLE1BQUYsQ0FBU04sS0FBckI7QUFDQSxZQUFNeUIsS0FBSyxHQUFHLE1BQUt6QyxNQUFMLENBQVkwQyxlQUFaLE1BQWlDQyxRQUFRLENBQUNDLGFBQVQsQ0FBdUIsdUJBQXZCLENBQS9DOztBQUNBLFlBQUlILEtBQUosRUFBVztBQUNULGNBQU1JLElBQUksR0FBR0osS0FBSyxDQUFDRyxhQUFOLENBQW9CLGtCQUFwQixDQUFiOztBQUNBLGNBQUlDLElBQUosRUFBVTtBQUNSQSxZQUFBQSxJQUFJLENBQUNwQixTQUFMLEdBQWlCLENBQWpCO0FBQ0Q7O0FBR0RiLFVBQUFBLFVBQVUsQ0FBQyxZQUFNO0FBQ2YsZ0JBQU1rQyxLQUFLLEdBQUdMLEtBQUssQ0FBQ00sZ0JBQU4sQ0FBdUIsaUNBQXZCLENBQWQ7QUFDQUQsWUFBQUEsS0FBSyxDQUFDRSxPQUFOLENBQWMsVUFBQ0MsSUFBRCxFQUF1QjtBQUNuQyxrQkFBTUMsV0FBVyxHQUFHLFNBQWRBLFdBQWMsQ0FBQ0MsR0FBRDtBQUFBLHVCQUFpQkEsR0FBRyxDQUFDQyxPQUFKLENBQVlaLEdBQVoseURBQStEQSxHQUEvRCxhQUFqQjtBQUFBLGVBQXBCOztBQUNBLGtCQUFJYSxVQUFVLEdBQUdKLElBQUksQ0FBQ0ssT0FBTCxDQUFhQyxJQUE5Qjs7QUFDQSxrQkFBSSxDQUFDRixVQUFMLEVBQWlCO0FBQ2ZBLGdCQUFBQSxVQUFVLEdBQUdKLElBQUksQ0FBQ08sU0FBbEI7QUFDQVAsZ0JBQUFBLElBQUksQ0FBQ0ssT0FBTCxDQUFhQyxJQUFiLEdBQW9CTixJQUFJLENBQUNPLFNBQXpCO0FBQ0Q7O0FBQ0Qsa0JBQUlQLElBQUksQ0FBQ08sU0FBTCxLQUFtQixPQUF2QixFQUFnQztBQUM5QixvQkFBSWhCLEdBQUosRUFBUztBQUVQLHNCQUFJYSxVQUFVLENBQUNJLE9BQVgsQ0FBbUIsa0JBQW5CLE1BQTJDLENBQS9DLEVBQWtEO0FBQ2hELHdCQUFNQyxlQUFlLEdBQUdMLFVBQVUsQ0FBQ0ksT0FBWCxDQUFtQixLQUFuQixDQUF4Qjs7QUFDQSx3QkFBSUosVUFBVSxDQUFDSSxPQUFYLENBQW1CakIsR0FBbkIsSUFBMEJrQixlQUE5QixFQUErQztBQUM3Q1Qsc0JBQUFBLElBQUksQ0FBQ08sU0FBTCxHQUFpQkgsVUFBVSxDQUFDTSxNQUFYLENBQWtCLENBQWxCLEVBQXFCRCxlQUFlLEdBQUcsQ0FBdkMsSUFBNENSLFdBQVcsQ0FBQ0csVUFBVSxDQUFDTSxNQUFYLENBQWtCRCxlQUFlLEdBQUcsQ0FBcEMsQ0FBRCxDQUF4RTtBQUNELHFCQUZELE1BRU87QUFDTFQsc0JBQUFBLElBQUksQ0FBQ08sU0FBTCxHQUFpQk4sV0FBVyxDQUFDRyxVQUFELENBQTVCO0FBQ0Q7QUFDRixtQkFQRCxNQU9PO0FBQ0xKLG9CQUFBQSxJQUFJLENBQUNPLFNBQUwsR0FBaUJOLFdBQVcsQ0FBQ0csVUFBRCxDQUE1QjtBQUNEO0FBQ0YsaUJBWkQsTUFZTztBQUNMSixrQkFBQUEsSUFBSSxDQUFDTyxTQUFMLEdBQWlCSCxVQUFqQjtBQUNEO0FBQ0Y7QUFDRixhQXhCRDtBQXlCRCxXQTNCUyxFQTJCUCxDQTNCTyxDQUFWO0FBNEJEO0FBQ0Y7QUFDRixLQXRMZ0M7O0FBQUEsVUF3TDFCaEIsbUJBeEwwQixHQXdMSixVQUFDQyxDQUFELEVBQThDO0FBQ3pFLFVBQUksTUFBS3RDLE1BQUwsSUFBZSxNQUFLQSxNQUFMLENBQVk0RCxjQUEvQixFQUErQztBQUM3QyxjQUFLNUQsTUFBTCxDQUFZNEQsY0FBWixDQUEyQnRCLENBQTNCO0FBQ0Q7QUFDRixLQTVMZ0M7O0FBQUEsVUE4TDFCM0Isb0JBOUwwQixHQThMSCxZQUFNO0FBQ2xDLFlBQUtaLE1BQUwsR0FBYyxJQUFkO0FBQ0FhLE1BQUFBLFVBQVUsQ0FBQyxZQUFNO0FBQ2YsY0FBS2IsTUFBTCxHQUFjLEtBQWQ7O0FBQ0EsY0FBS1csUUFBTCxDQUFjO0FBQUVKLFVBQUFBLElBQUksRUFBRTtBQUFSLFNBQWQ7QUFDRCxPQUhTLEVBR1AsR0FITyxDQUFWO0FBSUQsS0FwTWdDOztBQUFBLFFBRzdCdUQsV0FINkIsR0FPM0IvRCxLQVAyQixDQUc3QitELFdBSDZCO0FBQUEsUUFJN0JDLFlBSjZCLEdBTzNCaEUsS0FQMkIsQ0FJN0JnRSxZQUo2QjtBQUFBLFFBSzdCeEQsS0FMNkIsR0FPM0JSLEtBUDJCLENBSzdCUSxJQUw2QjtBQUFBLFFBTTdCVSxNQU42QixHQU8zQmxCLEtBUDJCLENBTTdCa0IsS0FONkI7QUFTL0IsUUFBSStDLFVBQUo7O0FBQ0EsUUFBSS9DLE1BQUssS0FBSyxJQUFkLEVBQW9CO0FBQ2xCK0MsTUFBQUEsVUFBVSxHQUFHL0MsTUFBYjtBQUNELEtBRkQsTUFFTyxJQUFJOEMsWUFBWSxLQUFLLElBQXJCLEVBQTJCO0FBQ2hDQyxNQUFBQSxVQUFVLEdBQUdELFlBQWI7QUFDRDs7QUFFRCxRQUFJRSxTQUFKOztBQUNBLFFBQUkxRCxLQUFJLEtBQUssSUFBYixFQUFtQjtBQUNqQjBELE1BQUFBLFNBQVMsR0FBRzFELEtBQVo7QUFDRCxLQUZELE1BRU8sSUFBSXVELFdBQVcsS0FBSyxJQUFwQixFQUEwQjtBQUMvQkcsTUFBQUEsU0FBUyxHQUFHSCxXQUFaO0FBQ0Q7O0FBQ0QsVUFBS3BELEtBQUwsR0FBYTtBQUNYRCxNQUFBQSxTQUFTLEVBQUUsQ0FEQTtBQUVYRixNQUFBQSxJQUFJLEVBQUUwRCxTQUZLO0FBR1g3QyxNQUFBQSxlQUFlLEVBQUUsS0FITjtBQUlYSCxNQUFBQSxLQUFLLEVBQUUrQztBQUpJLEtBQWI7QUF0QitCO0FBNEJoQzs7Ozs2QkEwS2U7QUFBQTs7QUFBQSx5QkFZVixLQUFLakUsS0FaSztBQUFBLFVBRVptRSxRQUZZLGdCQUVaQSxRQUZZO0FBQUEsVUFHWkMsU0FIWSxnQkFHWkEsU0FIWTtBQUFBLFVBSVpDLHdCQUpZLGdCQUlaQSx3QkFKWTtBQUFBLFVBS1pDLFdBTFksZ0JBS1pBLFdBTFk7QUFBQSxVQU1aQyxTQU5ZLGdCQU1aQSxTQU5ZO0FBQUEsVUFPWkMsU0FQWSxnQkFPWkEsU0FQWTtBQUFBLFVBUVoxQyxVQVJZLGdCQVFaQSxVQVJZO0FBQUEsVUFTWjJDLElBVFksZ0JBU1pBLElBVFk7QUFBQSxVQVVaQyxLQVZZLGdCQVVaQSxLQVZZO0FBQUEsVUFXVEMsVUFYUzs7QUFjZCxVQUFNQyxTQUFTLEdBQUcsc0JBQUtELFVBQUwsRUFBaUIsQ0FDakMsTUFEaUMsRUFFakMseUJBRmlDLEVBR2pDLFVBSGlDLEVBSWpDLG1CQUppQyxFQUtqQyxPQUxpQyxDQUFqQixDQUFsQjtBQWRjLHlCQTBCVixLQUFLaEUsS0ExQks7QUFBQSxVQXVCTnVELFNBdkJNLGdCQXVCWjFELElBdkJZO0FBQUEsVUF3QlphLGVBeEJZLGdCQXdCWkEsZUF4Qlk7QUFBQSxVQXlCTDRDLFVBekJLLGdCQXlCWi9DLEtBekJZO0FBNkJkLFVBQU0yRCxTQUE2RCxHQUFHLEVBQXRFOztBQUNBLFVBQUksT0FBUVgsU0FBUixLQUF1QixTQUEzQixFQUFzQztBQUNwQ1csUUFBQUEsU0FBUyxDQUFDckUsSUFBVixHQUFpQjBELFNBQWpCO0FBQ0Q7O0FBQ0QsVUFBSUQsVUFBVSxLQUFLLElBQW5CLEVBQXlCO0FBQ3ZCWSxRQUFBQSxTQUFTLENBQUMzRCxLQUFWLEdBQWtCK0MsVUFBbEI7QUFDRDs7QUFDRCxhQUNFLG9CQUFDLG9CQUFEO0FBQ0UsUUFBQSxTQUFTLEVBQUUsNEJBQ1RHLFNBRFMsWUFFTnRFLE1BRk0sd0JBR05BLE1BSE0sY0FHSTJFLElBSEosNkRBS0gzRSxNQUxHLGFBS2M0RSxLQUFLLEtBQUssT0FMeEIsMENBTUg1RSxNQU5HLDhCQU0rQnVCLGVBTi9CLGdCQURiO0FBVUUsUUFBQSxhQUFhLEVBQUUsNEJBQWM7QUFBRXlELFVBQUFBLFNBQVMsRUFBRTtBQUFiLFNBQWQsRUFBbUNQLFNBQVMsSUFBSSxZQUFoRCxDQVZqQjtBQVdFLFFBQUEsaUJBQWlCLGlDQUEwQkUsSUFBMUIsY0FBa0MzQyxVQUFVLEdBQUcsaUNBQUgsR0FBdUMsRUFBbkYsQ0FYbkI7QUFZRSxRQUFBLHdCQUF3QixFQUFFdUMsd0JBWjVCO0FBYUUsUUFBQSxjQUFjLEVBQUUsS0FBS3pDLG9CQWJ2QjtBQWNFLFFBQUEsU0FBUyxFQUFFLG9CQUFDLGdCQUFEO0FBQU0sVUFBQSxJQUFJLEVBQUU0QyxTQUFTLElBQUksZUFBekI7QUFBMEMsVUFBQSxLQUFLLEVBQUM7QUFBaEQsVUFkYjtBQWVFLFFBQUEsZUFBZSxFQUFDLGdDQWZsQjtBQWdCRSxRQUFBLHVCQUF1QixFQUFFLEtBQUtqRSx1QkFoQmhDO0FBaUJFLFFBQUEsUUFBUSxFQUFFLEtBQUtVLFFBakJqQjtBQWtCRSxRQUFBLHdCQUF3QixFQUFFLEtBbEI1QjtBQW1CRSxRQUFBLGFBQWEsRUFBRSxLQUFLTSxpQkFuQnRCO0FBb0JFLFFBQUEsZUFBZSxFQUFDLFVBcEJsQjtBQXFCRSxRQUFBLGdCQUFnQixFQUFDLFVBckJuQjtBQXNCRSxRQUFBLFdBQVcsRUFBRStDLFdBdEJmO0FBdUJFLFFBQUEsU0FBUyxFQUFDLGFBdkJaO0FBd0JFLFFBQUEsVUFBVSxFQUFFLEtBeEJkO0FBeUJFLFFBQUEsR0FBRyxFQUFFLEtBQUtsRSxVQXpCWjtBQTBCRSxRQUFBLGNBQWMsRUFBQztBQTFCakIsU0EyQk15RSxTQTNCTixFQTRCTUQsU0E1Qk4sR0E4QklULFFBOUJKLENBREY7QUFrQ0Q7Ozs7RUFyWWtCL0IsS0FBSyxDQUFDMkMsUzs7QUFBckJoRixNLENBRVVpRixJLEdBQU8sUTtBQUZqQmpGLE0sQ0FJVWtGLE0sR0FBd0JBLGdCO0FBSmxDbEYsTSxDQU1VbUYsUSxHQUE0QkEsa0I7QUFOdENuRixNLENBUVVvRixTLEdBQVk7QUFJeEJoQixFQUFBQSxRQUFRLEVBQUVpQixzQkFBVS9FLElBSkk7QUFReEIrRCxFQUFBQSxTQUFTLEVBQUVnQixzQkFBVUMsTUFSRztBQVl4QnRCLEVBQUFBLFdBQVcsRUFBRXFCLHNCQUFVRSxJQVpDO0FBZ0J4QnRCLEVBQUFBLFlBQVksRUFBRW9CLHNCQUFVRyxTQUFWLENBQW9CLENBQ2hDSCxzQkFBVUMsTUFEc0IsRUFFaENELHNCQUFVSSxNQUZzQixDQUFwQixDQWhCVTtBQXVCeEJuQixFQUFBQSx3QkFBd0IsRUFBRWUsc0JBQVVFLElBdkJaO0FBMkJ4Qi9FLEVBQUFBLHVCQUF1QixFQUFFNkUsc0JBQVVLLElBM0JYO0FBK0J4QnhFLEVBQUFBLFFBQVEsRUFBRW1FLHNCQUFVSyxJQS9CSTtBQW1DeEJqRixFQUFBQSxJQUFJLEVBQUU0RSxzQkFBVUUsSUFuQ1E7QUF1Q3hCaEIsRUFBQUEsV0FBVyxFQUFFYyxzQkFBVUMsTUF2Q0M7QUEyQ3hCZCxFQUFBQSxTQUFTLEVBQUVhLHNCQUFVTSxLQUFWLENBQWdCLENBQ3pCLEtBRHlCLEVBQ2xCLE1BRGtCLEVBQ1YsT0FEVSxFQUNELFFBREMsRUFFekIsU0FGeUIsRUFFZCxVQUZjLEVBRUYsWUFGRSxFQUVZLGFBRlosRUFHekIsU0FIeUIsRUFHZCxZQUhjLEVBR0EsVUFIQSxFQUdZLGFBSFosQ0FBaEIsQ0EzQ2E7QUFtRHhCbEIsRUFBQUEsU0FBUyxFQUFFWSxzQkFBVU0sS0FBVixDQUFnQkMsTUFBTSxDQUFDQyxJQUFQLENBQVlDLHdCQUFaLENBQWhCLENBbkRhO0FBdUR4QjlELEVBQUFBLGlCQUFpQixFQUFFcUQsc0JBQVVDLE1BdkRMO0FBMkR4QnZELEVBQUFBLFVBQVUsRUFBRXNELHNCQUFVRSxJQTNERTtBQStEeEJiLEVBQUFBLElBQUksRUFBRVcsc0JBQVVNLEtBQVYsQ0FBZ0IsQ0FBQyxNQUFELEVBQVMsT0FBVCxFQUFrQixRQUFsQixFQUE0QixPQUE1QixDQUFoQixDQS9Ea0I7QUFtRXhCaEIsRUFBQUEsS0FBSyxFQUFFVSxzQkFBVU0sS0FBVixDQUFnQixDQUFDLElBQUQsRUFBTyxPQUFQLENBQWhCLENBbkVpQjtBQXVFeEJ4RSxFQUFBQSxLQUFLLEVBQUVrRSxzQkFBVUcsU0FBVixDQUFvQixDQUN6Qkgsc0JBQVVDLE1BRGUsRUFFekJELHNCQUFVSSxNQUZlLENBQXBCO0FBdkVpQixDO0FBUnRCekYsTSxDQXFGVStGLFksR0FBNkI7QUFDekMzQixFQUFBQSxRQUFRLEVBQUUsSUFEK0I7QUFFekNDLEVBQUFBLFNBQVMsRUFBRTJCLFNBRjhCO0FBR3pDaEMsRUFBQUEsV0FBVyxFQUFFLElBSDRCO0FBSXpDQyxFQUFBQSxZQUFZLEVBQUUsSUFKMkI7QUFLekNLLEVBQUFBLHdCQUF3QixFQUFFLEtBTGU7QUFNekM5RCxFQUFBQSx1QkFBdUIsRUFBRVYsSUFOZ0I7QUFPekNvQixFQUFBQSxRQUFRLEVBQUVwQixJQVArQjtBQVF6Q1csRUFBQUEsSUFBSSxFQUFFLElBUm1DO0FBU3pDOEQsRUFBQUEsV0FBVyxFQUFFLEtBVDRCO0FBVXpDQyxFQUFBQSxTQUFTLEVBQUUsWUFWOEI7QUFXekNDLEVBQUFBLFNBQVMsRUFBRSxlQVg4QjtBQVl6Q3pDLEVBQUFBLGlCQUFpQixFQUFFLElBWnNCO0FBYXpDRCxFQUFBQSxVQUFVLEVBQUUsS0FiNkI7QUFjekMyQyxFQUFBQSxJQUFJLEVBQUUsT0FkbUM7QUFlekNDLEVBQUFBLEtBQUssRUFBRSxJQWZrQztBQWdCekN4RCxFQUFBQSxLQUFLLEVBQUU7QUFoQmtDLEM7O0FBckZ2Q25CLE0sQ0F3R1VpRyx3QixHQUEyQixpQkFBbUM7QUFBQSxNQUFoQ3hGLElBQWdDLFNBQWhDQSxJQUFnQztBQUFBLE1BQTFCVSxLQUEwQixTQUExQkEsS0FBMEI7QUFDMUUsTUFBTStFLFFBQXNCLEdBQUcsRUFBL0I7O0FBQ0EsTUFBSXpGLElBQUksS0FBSyxJQUFiLEVBQW1CO0FBQ2pCeUYsSUFBQUEsUUFBUSxDQUFDekYsSUFBVCxHQUFnQkEsSUFBaEI7QUFDRDs7QUFDRCxNQUFJVSxLQUFLLEtBQUssSUFBZCxFQUFvQjtBQUNsQitFLElBQUFBLFFBQVEsQ0FBQy9FLEtBQVQsR0FBaUJBLEtBQWpCO0FBQ0Q7O0FBQ0QsU0FBT3lFLE1BQU0sQ0FBQ0MsSUFBUCxDQUFZSyxRQUFaLEVBQXNCQyxNQUF0QixHQUErQixDQUEvQixHQUFtQ0QsUUFBbkMsR0FBOEMsSUFBckQ7QUFDRCxDOztBQXVSSCxxQ0FBU2xHLE1BQVQ7ZUFFZUEsTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIFJlYWN0IGZyb20gJ3JlYWN0J1xuaW1wb3J0IFByb3BUeXBlcyBmcm9tICdwcm9wLXR5cGVzJ1xuaW1wb3J0IHsgcG9seWZpbGwgfSBmcm9tICdyZWFjdC1saWZlY3ljbGVzLWNvbXBhdCdcbmltcG9ydCBjbGFzc05hbWVzIGZyb20gJ2NsYXNzbmFtZXMnXG5pbXBvcnQgUmNTZWxlY3QsIHsgT3B0aW9uLCBPcHRHcm91cCB9IGZyb20gJ3JjLXNlbGVjdCdcbmltcG9ydCBvbWl0IGZyb20gXCIuLi9fdXRpbC9vbWl0XCJcbmltcG9ydCBJY29uLCB7IEljb25OYW1lcyB9IGZyb20gXCIuLi9pY29uXCJcbmltcG9ydCBJY29uU3ZnUGF0aHMgZnJvbSBcIi4uL2ljb24vSWNvblN2Z1BhdGhzXCIgLy8gSWNvblN2Z1BhdGhzIOeUqOS7peWIpOaWrSBpY29uIOebuOWFs+eahCBwcm9wIOaYr+WQpuWQiOazlVxuaW1wb3J0IHsgUGxhY2VtZW50IH0gZnJvbSBcIi4uL3BvcC10cmlnZ2VyXCJcbmltcG9ydCBnZXRQbGFjZW1lbnRzIGZyb20gXCIuLi90b29sdGlwL3BsYWNlbWVudHNcIlxuaW1wb3J0IFwiLi9zdHlsZVwiXG5cbi8qKlxuICogU2VsZWN0IOWwgeijheS6jiByYy1zZWxlY3Q6IGh0dHBzOi8vZ2l0aHViLmNvbS9yZWFjdC1jb21wb25lbnQvc2VsZWN0XG4gKiByYy1zZWxlY3Qg5pys6LqrIHByb3BzIOmdnuW4uOmdnuW4uOWkmuOAguiAjOWmgiBvbkRyb3Bkb3duVmlzaWJsZUNoYW5nZSDov5nmoLfnmoQgcHJvcCDnlJroh7PkuI3lnKjmlofmoaPkuK3vvJtcbiAqIOiwg+eUqCByYy1zZWxlY3Qg55qE5YaF572u5pa55rOV77yMU2VsZWN0IOWunueOsOS6huWKn+iDveeahOWGjeWwgeijhe+8jOWmguWGheW1jOaQnOe0ouS+nemdoOeahOaYryB0aGlzLnNlbGVjdC5vbklucHV0Q2hhbmdl77ybXG4gKiByYy1zZWxlY3Qg5LuN54S25pyJ6K645aSa5YC85b6X5YaN5bCB6KOF5ZKM57un57ut5a2m5Lmg55qE5L2Z5Zyw77yMKirmnKrmnaXnmoTlj6/nu7TmiqTnqbrpl7TmmK/pnZ7luLjlpKfnmoQqKuOAglxuICovXG5cbmNvbnN0IG5vb3AgPSAoKSA9PiB7fVxuY29uc3QgcHJlZml4ID0gXCJhZHVpLXNlbGVjdFwiXG5cbmV4cG9ydCBpbnRlcmZhY2UgSVNlbGVjdCB7XG4gIGZvcmNlUG9wdXBBbGlnbj86ICgpID0+IHZvaWRcbiAgZ2V0Um9vdERvbU5vZGU/OiAoKSA9PiBIVE1MRWxlbWVudFxuICBvbklucHV0Q2hhbmdlPzogKGU6IFJlYWN0LkNoYW5nZUV2ZW50PEhUTUxJbnB1dEVsZW1lbnQ+KSA9PiB2b2lkXG4gIG9uSW5wdXRLZXlEb3duPzogKGU6IFJlYWN0LktleWJvYXJkRXZlbnQ8SFRNTElucHV0RWxlbWVudD4pID0+IHZvaWRcbiAgc2V0SW5wdXRWYWx1ZT86ICh2YWx1ZT86IHN0cmluZykgPT4gdm9pZFxuICBnZXRQb3B1cERPTU5vZGU6ICgpID0+IEhUTUxFbGVtZW50XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSVNlbGVjdFByb3BzIHtcbiAgW2tleTogc3RyaW5nXTogYW55XG4gIC8qKlxuICAgKiDlrZDoioLngrlcbiAgICovXG4gIGNoaWxkcmVuPzogUmVhY3QuUmVhY3ROb2RlXG4gIC8qKlxuICAgKiDpmYTliqDnsbvlkI1cbiAgICovXG4gIGNsYXNzTmFtZT86IHN0cmluZ1xuICAvKipcbiAgICog5YaF6YOo6amx5Yqo77ya5piv5ZCm5bGV5byAXG4gICAqL1xuICBkZWZhdWx0T3Blbj86IGJvb2xlYW4gfCBudWxsXG4gIC8qKlxuICAgKiDlhoXpg6jpqbHliqjvvJrlvZPliY3pgInkuK3pobnnmoTlgLxcbiAgICovXG4gIGRlZmF1bHRWYWx1ZT86IHN0cmluZyB8IG51bWJlciB8IG51bGxcbiAgLyoqXG4gICAqIOS4i+aLieiPnOWNleWSjOmAieaLqeWZqOWQjOWuvVxuICAgKi9cbiAgZHJvcGRvd25NYXRjaFNlbGVjdFdpZHRoPzogYm9vbGVhblxuICAvKipcbiAgICog5LiL5ouJ5bGV56S65Y+R55Sf5Y+Y5YyW5pe255qEIGhhbmRlcu+8jOWPguaVsO+8mmJvb2xcbiAgICovXG4gIG9uRHJvcGRvd25WaXNpYmxlQ2hhbmdlPzogKG9wZW46IGJvb2xlYW4pID0+IHZvaWRcbiAgLyoqXG4gICAqIOmAieaLqeaXtueahCBoYW5kZXLvvIzlj4LmlbDvvJoodmFsdWUsIG9wdGlvbilcbiAgICovXG4gIG9uU2VsZWN0PzogKHZhbHVlOiBzdHJpbmcgfCBudW1iZXIsIG9wdGlvbjogUmVhY3QuUmVhY3RFbGVtZW50PGFueT4pID0+IHZvaWRcbiAgLyoqXG4gICAqIOWklumDqOaOp+WItu+8muaYr+WQpuWxleW8gFxuICAgKi9cbiAgb3Blbj86IG51bGwgfCBib29sZWFuXG4gIC8qKlxuICAgKiDpgInmi6nmoYbpu5jorqTmloflrZdcbiAgICovXG4gIHBsYWNlaG9sZGVyPzogc3RyaW5nXG4gIC8qKlxuICAgKiByYy1zZWxlY3QgOS4wLjIg5LiN5pSv5oyBIHBvcHVwUGxhY2VtZW50IOeahOiuvue9ru+8jOWboOatpOmcgOimgeWIqeeUqCBkb20gYWxpZ24g6K6+572uIHBsYWNlbWVudFxuICAgKi9cbiAgcGxhY2VtZW50PzogUGxhY2VtZW50XG4gIC8qKlxuICAgKiDorr7nva7lj7Plm77moIdcbiAgICovXG4gIHJpZ2h0SWNvbj86IEljb25OYW1lc1xuICAvKipcbiAgICog5pCc57Si5qGG6buY6K6k5paH5a2XXG4gICAqL1xuICBzZWFyY2hhYmxlPzogYm9vbGVhblxuICAvKipcbiAgICog5piv5ZCm6ZyA6KaB5YaF5bWM5pCc57SiXG4gICAqL1xuICBzZWFyY2hQbGFjZWhvbGRlcj86IHN0cmluZ1xuICAvKipcbiAgICog6K6+572u5bC65a+477yM6Lef552AIGJ1dHRvbiDotbBcbiAgICovXG4gIHNpemU/OiBcIm1pbmlcIiB8IFwic21hbGxcIiB8IFwibWVkaXVtXCIgfCBcImxhcmdlXCJcbiAgLyoqXG4gICAqIOiuvue9ruS4u+mimFxuICAgKi9cbiAgdGhlbWU/OiBudWxsIHwgXCJsaWdodFwiXG4gIC8qKlxuICAgKiDlpJbpg6jmjqfliLbvvJrlvZPliY3pgInkuK3pobnnmoTlgLxcbiAgICovXG4gIHZhbHVlPzogc3RyaW5nIHwgbnVtYmVyIHwgbnVsbFxufVxuXG5leHBvcnQgaW50ZXJmYWNlIElTZWxlY3RTdGF0ZSB7XG4gIGxvYWRUaW1lcz86IG51bWJlclxuICBvcGVuPzogYm9vbGVhblxuICBwbGFjZWhvbGRlclNob3c/OiBib29sZWFuXG4gIHZhbHVlPzogc3RyaW5nIHwgbnVtYmVyIHwgbnVsbFxufVxuXG4vKipcbiAqIOmAieaLqeWZqOeUqOS6jumAieaLqeafkOmhueWGheWuueOAgumAieaLqeWZqOWvueavlOWNlemAiSBSYWRpbyDnmoTkvJjlir/mmK/vvIzlvZPpgInpobnov4flpJrml7bvvIzpgInmi6nlmajlj6/lr7nlhoXlrrnmlLbotbfvvIzlubbmm7TlhbPms6jkuo7lt7LpgInpobnjgILpgJrluLjvvIzlvZPnlKjmiLfog73lpJ/pgJrov4flt7LpgInpobnvvIzovbvmmJPlvpfnn6XlhbbkvZnpgInpobnnmoTop4Tlvovml7bvvIjlpoLlubTku73jgIHln47luILnrYnvvInvvIzpgInmi6nlmaggU2VsZWN0IOaYr+avlOi+g+WlveeahOmAieaLqeOAglxuICovXG5jbGFzcyBTZWxlY3QgZXh0ZW5kcyBSZWFjdC5Db21wb25lbnQ8SVNlbGVjdFByb3BzLCBJU2VsZWN0U3RhdGU+IHtcblxuICBwdWJsaWMgc3RhdGljIHR5cGUgPSBcIlNlbGVjdFwiXG5cbiAgcHVibGljIHN0YXRpYyBPcHRpb246IHR5cGVvZiBPcHRpb24gPSBPcHRpb25cblxuICBwdWJsaWMgc3RhdGljIE9wdEdyb3VwOiB0eXBlb2YgT3B0R3JvdXAgPSBPcHRHcm91cFxuXG4gIHB1YmxpYyBzdGF0aWMgcHJvcFR5cGVzID0ge1xuICAgIC8qKlxuICAgICAqIOWtkOiKgueCuVxuICAgICAqL1xuICAgIGNoaWxkcmVuOiBQcm9wVHlwZXMubm9kZSxcbiAgICAvKipcbiAgICAgKiDpmYTliqDnsbvlkI1cbiAgICAgKi9cbiAgICBjbGFzc05hbWU6IFByb3BUeXBlcy5zdHJpbmcsXG4gICAgLyoqXG4gICAgICog5YaF6YOo6amx5Yqo77ya5piv5ZCm5bGV5byAXG4gICAgICovXG4gICAgZGVmYXVsdE9wZW46IFByb3BUeXBlcy5ib29sLFxuICAgIC8qKlxuICAgICAqIOWGhemDqOmpseWKqO+8muW9k+WJjemAieS4remhueeahOWAvFxuICAgICAqL1xuICAgIGRlZmF1bHRWYWx1ZTogUHJvcFR5cGVzLm9uZU9mVHlwZShbXG4gICAgICBQcm9wVHlwZXMuc3RyaW5nLFxuICAgICAgUHJvcFR5cGVzLm51bWJlcixcbiAgICBdKSxcbiAgICAvKipcbiAgICAgKiDkuIvmi4noj5zljZXlkozpgInmi6nlmajlkIzlrr1cbiAgICAgKi9cbiAgICBkcm9wZG93bk1hdGNoU2VsZWN0V2lkdGg6IFByb3BUeXBlcy5ib29sLFxuICAgIC8qKlxuICAgICAqIOS4i+aLieWxleekuuWPkeeUn+WPmOWMluaXtueahCBoYW5kZXLvvIzlj4LmlbDvvJpib29sXG4gICAgICovXG4gICAgb25Ecm9wZG93blZpc2libGVDaGFuZ2U6IFByb3BUeXBlcy5mdW5jLFxuICAgIC8qKlxuICAgICAqIOmAieaLqeaXtueahCBoYW5kZXLvvIzlj4LmlbDvvJoodmFsdWUsIG9wdGlvbilcbiAgICAgKi9cbiAgICBvblNlbGVjdDogUHJvcFR5cGVzLmZ1bmMsXG4gICAgLyoqXG4gICAgICog5aSW6YOo5o6n5Yi277ya5piv5ZCm5bGV5byAXG4gICAgICovXG4gICAgb3BlbjogUHJvcFR5cGVzLmJvb2wsXG4gICAgLyoqXG4gICAgICog6YCJ5oup5qGG6buY6K6k5paH5a2XXG4gICAgICovXG4gICAgcGxhY2Vob2xkZXI6IFByb3BUeXBlcy5zdHJpbmcsXG4gICAgLyoqXG4gICAgICogcmMtc2VsZWN0IDkuMC4yIOS4jeaUr+aMgSBwb3B1cFBsYWNlbWVudCDnmoTorr7nva7vvIzlm6DmraTpnIDopoHliKnnlKggZG9tIGFsaWduIOiuvue9riBwbGFjZW1lbnRcbiAgICAgKi9cbiAgICBwbGFjZW1lbnQ6IFByb3BUeXBlcy5vbmVPZihbXG4gICAgICBcInRvcFwiLCBcImxlZnRcIiwgXCJyaWdodFwiLCBcImJvdHRvbVwiLFxuICAgICAgXCJ0b3BMZWZ0XCIsIFwidG9wUmlnaHRcIiwgXCJib3R0b21MZWZ0XCIsIFwiYm90dG9tUmlnaHRcIixcbiAgICAgIFwibGVmdFRvcFwiLCBcImxlZnRCb3R0b21cIiwgXCJyaWdodFRvcFwiLCBcInJpZ2h0Qm90dG9tXCIsXG4gICAgXSksXG4gICAgLyoqXG4gICAgICog6K6+572u5Y+z5Zu+5qCHXG4gICAgICovXG4gICAgcmlnaHRJY29uOiBQcm9wVHlwZXMub25lT2YoT2JqZWN0LmtleXMoSWNvblN2Z1BhdGhzKSksXG4gICAgLyoqXG4gICAgICog5pCc57Si5qGG6buY6K6k5paH5a2XXG4gICAgICovXG4gICAgc2VhcmNoUGxhY2Vob2xkZXI6IFByb3BUeXBlcy5zdHJpbmcsXG4gICAgLyoqXG4gICAgICog5piv5ZCm6ZyA6KaB5YaF5bWM5pCc57SiXG4gICAgICovXG4gICAgc2VhcmNoYWJsZTogUHJvcFR5cGVzLmJvb2wsXG4gICAgLyoqXG4gICAgICog6K6+572u5bC65a+477yM6Lef552AIGJ1dHRvbiDotbBcbiAgICAgKi9cbiAgICBzaXplOiBQcm9wVHlwZXMub25lT2YoW1wibWluaVwiLCBcInNtYWxsXCIsIFwibWVkaXVtXCIsIFwibGFyZ2VcIl0pLFxuICAgIC8qKlxuICAgICAqIOiuvue9ruS4u+mimFxuICAgICAqL1xuICAgIHRoZW1lOiBQcm9wVHlwZXMub25lT2YoW251bGwsIFwibGlnaHRcIl0pLFxuICAgIC8qKlxuICAgICAqIOWklumDqOaOp+WItu+8muW9k+WJjemAieS4remhueeahOWAvFxuICAgICAqL1xuICAgIHZhbHVlOiBQcm9wVHlwZXMub25lT2ZUeXBlKFtcbiAgICAgIFByb3BUeXBlcy5zdHJpbmcsXG4gICAgICBQcm9wVHlwZXMubnVtYmVyLFxuICAgIF0pLFxuICB9XG5cbiAgcHVibGljIHN0YXRpYyBkZWZhdWx0UHJvcHM6IElTZWxlY3RQcm9wcyA9IHtcbiAgICBjaGlsZHJlbjogbnVsbCxcbiAgICBjbGFzc05hbWU6IHVuZGVmaW5lZCxcbiAgICBkZWZhdWx0T3BlbjogbnVsbCxcbiAgICBkZWZhdWx0VmFsdWU6IG51bGwsXG4gICAgZHJvcGRvd25NYXRjaFNlbGVjdFdpZHRoOiBmYWxzZSxcbiAgICBvbkRyb3Bkb3duVmlzaWJsZUNoYW5nZTogbm9vcCxcbiAgICBvblNlbGVjdDogbm9vcCxcbiAgICBvcGVuOiBudWxsLFxuICAgIHBsYWNlaG9sZGVyOiBcIuivt+mAieaLqVwiLFxuICAgIHBsYWNlbWVudDogXCJib3R0b21MZWZ0XCIsXG4gICAgcmlnaHRJY29uOiBcInRyaWFuZ2xlLWRvd25cIixcbiAgICBzZWFyY2hQbGFjZWhvbGRlcjogXCLmkJzntKJcIixcbiAgICBzZWFyY2hhYmxlOiBmYWxzZSxcbiAgICBzaXplOiBcInNtYWxsXCIsXG4gICAgdGhlbWU6IG51bGwsXG4gICAgdmFsdWU6IG51bGwsXG4gIH1cbiAgXG4gIHB1YmxpYyBzdGF0aWMgZ2V0RGVyaXZlZFN0YXRlRnJvbVByb3BzID0gKHsgb3BlbiwgdmFsdWUgfTogSVNlbGVjdFN0YXRlKSA9PiB7XG4gICAgY29uc3QgbmV3U3RhdGU6IElTZWxlY3RTdGF0ZSA9IHt9XG4gICAgaWYgKG9wZW4gIT09IG51bGwpIHtcbiAgICAgIG5ld1N0YXRlLm9wZW4gPSBvcGVuXG4gICAgfVxuICAgIGlmICh2YWx1ZSAhPT0gbnVsbCkge1xuICAgICAgbmV3U3RhdGUudmFsdWUgPSB2YWx1ZVxuICAgIH1cbiAgICByZXR1cm4gT2JqZWN0LmtleXMobmV3U3RhdGUpLmxlbmd0aCA+IDAgPyBuZXdTdGF0ZSA6IG51bGxcbiAgfVxuXG4gIHB1YmxpYyBsb2NrZWQgPSBmYWxzZVxuXG4gIHB1YmxpYyBzZWxlY3Q6IElTZWxlY3RcblxuICBwdWJsaWMgc2VhcmNoOiBIVE1MSW5wdXRFbGVtZW50XG5cbiAgY29uc3RydWN0b3IocHJvcHM6IElTZWxlY3RQcm9wcykge1xuICAgIHN1cGVyKHByb3BzKVxuICAgIGNvbnN0IHtcbiAgICAgIGRlZmF1bHRPcGVuLFxuICAgICAgZGVmYXVsdFZhbHVlLFxuICAgICAgb3BlbixcbiAgICAgIHZhbHVlLFxuICAgIH0gPSBwcm9wc1xuXG4gICAgbGV0IHZhbHVlU3RhdGVcbiAgICBpZiAodmFsdWUgIT09IG51bGwpIHtcbiAgICAgIHZhbHVlU3RhdGUgPSB2YWx1ZVxuICAgIH0gZWxzZSBpZiAoZGVmYXVsdFZhbHVlICE9PSBudWxsKSB7XG4gICAgICB2YWx1ZVN0YXRlID0gZGVmYXVsdFZhbHVlXG4gICAgfVxuXG4gICAgbGV0IG9wZW5TdGF0ZVxuICAgIGlmIChvcGVuICE9PSBudWxsKSB7XG4gICAgICBvcGVuU3RhdGUgPSBvcGVuXG4gICAgfSBlbHNlIGlmIChkZWZhdWx0T3BlbiAhPT0gbnVsbCkge1xuICAgICAgb3BlblN0YXRlID0gZGVmYXVsdE9wZW5cbiAgICB9XG4gICAgdGhpcy5zdGF0ZSA9IHtcbiAgICAgIGxvYWRUaW1lczogMCxcbiAgICAgIG9wZW46IG9wZW5TdGF0ZSxcbiAgICAgIHBsYWNlaG9sZGVyU2hvdzogZmFsc2UsXG4gICAgICB2YWx1ZTogdmFsdWVTdGF0ZSxcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgc2F2ZVNlbGVjdCA9IChub2RlOiBJU2VsZWN0KSA9PiB7XG4gICAgdGhpcy5zZWxlY3QgPSBub2RlXG4gIH1cblxuICBwdWJsaWMgc2F2ZVNlYXJjaCA9IChub2RlOiBIVE1MSW5wdXRFbGVtZW50KSA9PiB7XG4gICAgdGhpcy5zZWFyY2ggPSBub2RlXG4gIH1cblxuICBwdWJsaWMgb25Ecm9wZG93blZpc2libGVDaGFuZ2UgPSAob3BlbjogYm9vbGVhbikgPT4ge1xuICAgIGNvbnN0IHtcbiAgICAgIG9uRHJvcGRvd25WaXNpYmxlQ2hhbmdlLFxuICAgICAgb3Blbjogb3BlblByb3AsXG4gICAgfSA9IHRoaXMucHJvcHNcblxuICAgIGNvbnN0IHsgbG9hZFRpbWVzIH0gPSB0aGlzLnN0YXRlXG5cbiAgICBpZiAodGhpcy5sb2NrZWQpIHtcbiAgICAgIHJldHVyblxuICAgIH1cbiAgICBpZiAob3BlblByb3AgPT09IG51bGwpIHtcbiAgICAgIHRoaXMuc2V0U3RhdGUoeyBvcGVuIH0pXG4gICAgfVxuICAgIGlmIChvcGVuKSB7XG4gICAgICB0aGlzLnByZXZlbnRWaXNpYmxlQ2hhbmdlKClcbiAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICBpZiAodGhpcy5zZWFyY2ggJiYgIShsb2FkVGltZXMgJiYgbG9hZFRpbWVzID4gNCkpIHtcbiAgICAgICAgICAvLyDliqDovb3mlbDph4/otoXov4cgNSDmrKHvvIzljbMgMTAwIOmhueWQjuWPlua2iCBmb2N1c++8jOmYsuatoiBzZWxlY3Qg5raI5aSxXG4gICAgICAgICAgdGhpcy5zZWFyY2guZm9jdXMoKVxuICAgICAgICB9XG4gICAgICB9LCAxNTApXG4gICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgaWYgKHRoaXMuc2VsZWN0ICYmIHRoaXMuc2VsZWN0LmZvcmNlUG9wdXBBbGlnbikge1xuICAgICAgICAgIHRoaXMuc2VsZWN0LmZvcmNlUG9wdXBBbGlnbigpXG4gICAgICAgIH1cbiAgICAgIH0sIDIwMClcbiAgICB9XG4gICAgaWYgKG9uRHJvcGRvd25WaXNpYmxlQ2hhbmdlKSB7XG4gICAgICBvbkRyb3Bkb3duVmlzaWJsZUNoYW5nZShvcGVuKVxuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBvblNlbGVjdCA9ICh2YWx1ZTogc3RyaW5nIHwgbnVtYmVyLCBvcHRpb246IFJlYWN0LlJlYWN0RWxlbWVudDxhbnk+KSA9PiB7XG4gICAgY29uc3Qge1xuICAgICAgb25TZWxlY3QsXG4gICAgICB2YWx1ZTogdmFsdWVQcm9wLFxuICAgIH0gPSB0aGlzLnByb3BzXG5cbiAgICBpZiAodmFsdWVQcm9wID09PSBudWxsKSB7XG4gICAgICB0aGlzLnNldFN0YXRlKHtcbiAgICAgICAgdmFsdWUsXG4gICAgICB9KVxuICAgIH1cbiAgICBpZiAob25TZWxlY3QpIHtcbiAgICAgIG9uU2VsZWN0KHZhbHVlLCBvcHRpb24pXG4gICAgfVxuXG4gICAgdGhpcy5zZXRTdGF0ZSh7XG4gICAgICBwbGFjZWhvbGRlclNob3c6IGZhbHNlLFxuICAgIH0pXG4gICAgaWYgKHRoaXMuc2VhcmNoKSB7XG4gICAgICB0aGlzLnNlYXJjaC52YWx1ZSA9IFwiXCJcbiAgICB9XG4gICAgaWYgKHRoaXMuc2VsZWN0ICYmIHRoaXMuc2VsZWN0LnNldElucHV0VmFsdWUpIHtcbiAgICAgIHRoaXMuc2VsZWN0LnNldElucHV0VmFsdWUoXCJcIilcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgaGFuZGxlUG9wdXBTY3JvbGwgPSAoeyB0YXJnZXQ6IHsgb2Zmc2V0SGVpZ2h0LCBzY3JvbGxIZWlnaHQsIHNjcm9sbFRvcCB9IH06IGFueSkgPT4ge1xuICAgIGlmICgob2Zmc2V0SGVpZ2h0ICsgc2Nyb2xsVG9wKSA+IHNjcm9sbEhlaWdodCAtIDM2KSB7XG4gICAgICB0aGlzLnNldFN0YXRlKCh7IGxvYWRUaW1lcyB9KSA9PiAoeyBsb2FkVGltZXM6IChsb2FkVGltZXMgfHwgMCkgKyAxIH0pKVxuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBoYW5kbGVEcm9wZG93blJlbmRlciA9IChtZW51OiBKU1guRWxlbWVudCkgPT4ge1xuICAgIGNvbnN0IHsgc2VhcmNoYWJsZSwgc2VhcmNoUGxhY2Vob2xkZXIgfSA9IHRoaXMucHJvcHNcbiAgICBjb25zdCB7IGxvYWRUaW1lcyB9ID0gdGhpcy5zdGF0ZSBcbiAgICBjb25zdCB7IHByb3BzOiB7IG1lbnVJdGVtcyB9IH0gPSBtZW51XG4gICAgY29uc3QgbWVudUl0ZW1zU2xpY2VkID0gbWVudUl0ZW1zLnNsaWNlKDAsIDIwICogKChsb2FkVGltZXMgfHwgMCkgKyAxKSlcbiAgICBjb25zdCBtZW51Q2xvbmVkID0gUmVhY3QuY2xvbmVFbGVtZW50KG1lbnUsIHtcbiAgICAgIG1lbnVJdGVtczogbWVudUl0ZW1zU2xpY2VkLFxuICAgIH0pXG4gICAgaWYgKHNlYXJjaGFibGUpIHtcbiAgICAgIHJldHVybiAoXG4gICAgICAgIDxkaXY+XG4gICAgICAgICAgPGRpdlxuICAgICAgICAgICAgY2xhc3NOYW1lPXtgJHtwcmVmaXh9LXNlYXJjaGB9XG4gICAgICAgICAgPlxuICAgICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICAgIHJlZj17dGhpcy5zYXZlU2VhcmNofVxuICAgICAgICAgICAgICBwbGFjZWhvbGRlcj17c2VhcmNoUGxhY2Vob2xkZXJ9XG4gICAgICAgICAgICAgIG9uQ2hhbmdlPXt0aGlzLmhhbmRsZVNlYXJjaH1cbiAgICAgICAgICAgICAgb25LZXlEb3duPXt0aGlzLmhhbmRsZVNlYXJjaEtleURvd259XG4gICAgICAgICAgICAgIG9uTW91c2VEb3duPXt0aGlzLnByZXZlbnRWaXNpYmxlQ2hhbmdlfVxuICAgICAgICAgICAgICBvbk1vdXNlVXA9e3RoaXMucHJldmVudFZpc2libGVDaGFuZ2V9XG4gICAgICAgICAgICAvPlxuICAgICAgICAgICAgPEljb24gaWNvbj1cInNlYXJjaFwiIGNsYXNzTmFtZT17YCR7cHJlZml4fS1pY29uYH0gLz5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICB7IG1lbnVDbG9uZWQgfVxuICAgICAgICA8L2Rpdj5cbiAgICAgIClcbiAgICB9XG4gICAgcmV0dXJuIG1lbnVcbiAgfVxuXG4gIHB1YmxpYyBoYW5kbGVTZWFyY2ggPSAoZTogUmVhY3QuQ2hhbmdlRXZlbnQ8SFRNTElucHV0RWxlbWVudD4pID0+IHtcbiAgICBjb25zdCB7IHBsYWNlaG9sZGVyU2hvdywgdmFsdWUgfSA9IHRoaXMuc3RhdGVcbiAgICBpZiAoZS50YXJnZXQudmFsdWUgJiYgIXBsYWNlaG9sZGVyU2hvdyAmJiAhdmFsdWUpIHtcbiAgICAgIHRoaXMuc2V0U3RhdGUoeyBwbGFjZWhvbGRlclNob3c6IHRydWUgfSlcbiAgICB9XG4gICAgaWYgKHRoaXMuc2VsZWN0KSB7XG4gICAgICBpZiAodGhpcy5zZWxlY3Qub25JbnB1dENoYW5nZSkge1xuICAgICAgICB0aGlzLnNlbGVjdC5vbklucHV0Q2hhbmdlKGUpXG4gICAgICB9XG4gICAgICBjb25zdCB2YWwgPSBlLnRhcmdldC52YWx1ZVxuICAgICAgY29uc3QgcG9wdXAgPSB0aGlzLnNlbGVjdC5nZXRQb3B1cERPTU5vZGUoKSB8fCBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKFwiLmFkdWktc2VsZWN0LWRyb3Bkb3duXCIpXG4gICAgICBpZiAocG9wdXApIHtcbiAgICAgICAgY29uc3QgbGlzdCA9IHBvcHVwLnF1ZXJ5U2VsZWN0b3IoJ1tyb2xlPVwibGlzdGJveFwiXScpXG4gICAgICAgIGlmIChsaXN0KSB7XG4gICAgICAgICAgbGlzdC5zY3JvbGxUb3AgPSAwXG4gICAgICAgIH1cblxuICAgICAgICAvLyBoaWdobGlnaHRcbiAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgY29uc3QgaXRlbXMgPSBwb3B1cC5xdWVyeVNlbGVjdG9yQWxsKFwiLmFkdWktc2VsZWN0LWRyb3Bkb3duLW1lbnUtaXRlbVwiKVxuICAgICAgICAgIGl0ZW1zLmZvckVhY2goKGl0ZW06IEhUTUxFbGVtZW50KSA9PiB7XG4gICAgICAgICAgICBjb25zdCByZXBsYWNlbWVudCA9IChzdHI6IHN0cmluZykgPT4gc3RyLnJlcGxhY2UodmFsLCBgPHNwYW4gc3R5bGU9XCJjb2xvcjogdmFyKC0tcHJpbWFyeS1jb2xvcik7XCI+JHt2YWx9PC9zcGFuPmApXG4gICAgICAgICAgICBsZXQgc291cmNlSHRtbCA9IGl0ZW0uZGF0YXNldC5odG1sXG4gICAgICAgICAgICBpZiAoIXNvdXJjZUh0bWwpIHtcbiAgICAgICAgICAgICAgc291cmNlSHRtbCA9IGl0ZW0uaW5uZXJIVE1MXG4gICAgICAgICAgICAgIGl0ZW0uZGF0YXNldC5odG1sID0gaXRlbS5pbm5lckhUTUxcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChpdGVtLmlubmVySFRNTCAhPT0gXCLml6DljLnphY3nu5PmnpxcIikge1xuICAgICAgICAgICAgICBpZiAodmFsKSB7XG4gICAgICAgICAgICAgICAgLy8g5Yik5pat5piv5LulIHJlYWN0LXRleHQg5rOo6YeK5byA5aeL55qE77yM5YiZ55Wl6L+H5rOo6YeK6YOo5YiG6L+b6KGMIGhpZ2h0bGlnaHRcbiAgICAgICAgICAgICAgICBpZiAoc291cmNlSHRtbC5pbmRleE9mKFwiPCEtLSByZWFjdC10ZXh0OlwiKSA9PT0gMCkge1xuICAgICAgICAgICAgICAgICAgY29uc3QgY29tbWVudEVuZEluZGV4ID0gc291cmNlSHRtbC5pbmRleE9mKFwiLS0+XCIpXG4gICAgICAgICAgICAgICAgICBpZiAoc291cmNlSHRtbC5pbmRleE9mKHZhbCkgPCBjb21tZW50RW5kSW5kZXgpIHtcbiAgICAgICAgICAgICAgICAgICAgaXRlbS5pbm5lckhUTUwgPSBzb3VyY2VIdG1sLnN1YnN0cigwLCBjb21tZW50RW5kSW5kZXggKyAzKSArIHJlcGxhY2VtZW50KHNvdXJjZUh0bWwuc3Vic3RyKGNvbW1lbnRFbmRJbmRleCArIDMpKVxuICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgaXRlbS5pbm5lckhUTUwgPSByZXBsYWNlbWVudChzb3VyY2VIdG1sKVxuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICBpdGVtLmlubmVySFRNTCA9IHJlcGxhY2VtZW50KHNvdXJjZUh0bWwpXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIGl0ZW0uaW5uZXJIVE1MID0gc291cmNlSHRtbFxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSlcbiAgICAgICAgfSwgMClcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBwdWJsaWMgaGFuZGxlU2VhcmNoS2V5RG93biA9IChlOiBSZWFjdC5LZXlib2FyZEV2ZW50PEhUTUxJbnB1dEVsZW1lbnQ+KSA9PiB7XG4gICAgaWYgKHRoaXMuc2VsZWN0ICYmIHRoaXMuc2VsZWN0Lm9uSW5wdXRLZXlEb3duKSB7XG4gICAgICB0aGlzLnNlbGVjdC5vbklucHV0S2V5RG93bihlKVxuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBwcmV2ZW50VmlzaWJsZUNoYW5nZSA9ICgpID0+IHtcbiAgICB0aGlzLmxvY2tlZCA9IHRydWVcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIHRoaXMubG9ja2VkID0gZmFsc2VcbiAgICAgIHRoaXMuc2V0U3RhdGUoeyBvcGVuOiB0cnVlIH0pXG4gICAgfSwgMjAwKVxuICB9XG5cbiAgcHVibGljIHJlbmRlcigpIHtcbiAgICBjb25zdCB7XG4gICAgICBjaGlsZHJlbixcbiAgICAgIGNsYXNzTmFtZSxcbiAgICAgIGRyb3Bkb3duTWF0Y2hTZWxlY3RXaWR0aCxcbiAgICAgIHBsYWNlaG9sZGVyLFxuICAgICAgcGxhY2VtZW50LFxuICAgICAgcmlnaHRJY29uLFxuICAgICAgc2VhcmNoYWJsZSxcbiAgICAgIHNpemUsXG4gICAgICB0aGVtZSxcbiAgICAgIC4uLm90aGVyUHJvcHNcbiAgICB9ID0gdGhpcy5wcm9wc1xuXG4gICAgY29uc3QgcmVzdFByb3BzID0gb21pdChvdGhlclByb3BzLCBbXG4gICAgICBcIm9wZW5cIixcbiAgICAgIFwib25Ecm9wZG93blZpc2libGVDaGFuZ2VcIixcbiAgICAgIFwib25TZWxlY3RcIixcbiAgICAgIFwic2VhcmNoUGxhY2Vob2xkZXJcIixcbiAgICAgIFwidmFsdWVcIixcbiAgICBdKVxuXG4gICAgY29uc3Qge1xuICAgICAgb3Blbjogb3BlblN0YXRlLFxuICAgICAgcGxhY2Vob2xkZXJTaG93LFxuICAgICAgdmFsdWU6IHZhbHVlU3RhdGUsXG4gICAgfSA9IHRoaXMuc3RhdGVcblxuICAgIC8vIG9wZW5TdGF0ZSDlj6/og73mmK8gdW5kZWZpbmVkIG9yIG51bGxcbiAgICBjb25zdCBvcGVuUHJvcHM6IHsgb3Blbj86IGJvb2xlYW4sIHZhbHVlPzogc3RyaW5nIHwgbnVtYmVyIHwgbnVsbCB9ID0ge31cbiAgICBpZiAodHlwZW9mIChvcGVuU3RhdGUpID09PSBcImJvb2xlYW5cIikge1xuICAgICAgb3BlblByb3BzLm9wZW4gPSBvcGVuU3RhdGVcbiAgICB9XG4gICAgaWYgKHZhbHVlU3RhdGUgIT09IG51bGwpIHtcbiAgICAgIG9wZW5Qcm9wcy52YWx1ZSA9IHZhbHVlU3RhdGVcbiAgICB9XG4gICAgcmV0dXJuIChcbiAgICAgIDxSY1NlbGVjdFxuICAgICAgICBjbGFzc05hbWU9e2NsYXNzTmFtZXMoXG4gICAgICAgICAgY2xhc3NOYW1lLFxuICAgICAgICAgIGAke3ByZWZpeH0tc2VsZWN0YCxcbiAgICAgICAgICBgJHtwcmVmaXh9LSR7c2l6ZX1gLFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIFtgJHtwcmVmaXh9LWxpZ2h0YF06IHRoZW1lID09PSBcImxpZ2h0XCIsXG4gICAgICAgICAgICBbYCR7cHJlZml4fS1zZWxlY3RfcGxhY2Vob2xkZXJTaG93YF06IHBsYWNlaG9sZGVyU2hvdyxcbiAgICAgICAgICB9LFxuICAgICAgICApfVxuICAgICAgICBkcm9wZG93bkFsaWduPXtnZXRQbGFjZW1lbnRzKHsgYWxpZ25FZGdlOiB0cnVlIH0pW3BsYWNlbWVudCB8fCBcImJvdHRvbUxlZnRcIl19XG4gICAgICAgIGRyb3Bkb3duQ2xhc3NOYW1lPXtgYWR1aS1zZWxlY3QtZHJvcGRvd24tJHtzaXplfSAke3NlYXJjaGFibGUgPyBcImFkdWktc2VsZWN0LWRyb3Bkb3duLXNlYXJjaGFibGVcIiA6IFwiXCJ9YH1cbiAgICAgICAgZHJvcGRvd25NYXRjaFNlbGVjdFdpZHRoPXtkcm9wZG93bk1hdGNoU2VsZWN0V2lkdGh9XG4gICAgICAgIGRyb3Bkb3duUmVuZGVyPXt0aGlzLmhhbmRsZURyb3Bkb3duUmVuZGVyfVxuICAgICAgICBpbnB1dEljb249ezxJY29uIGljb249e3JpZ2h0SWNvbiB8fCBcInRyaWFuZ2xlLWRvd25cIn0gY29sb3I9XCJ2YXIoLS1ncmF5LTgwMClcIiAvPn1cbiAgICAgICAgbm90Rm91bmRDb250ZW50PVwi5peg5Yy56YWN57uT5p6cXCJcbiAgICAgICAgb25Ecm9wZG93blZpc2libGVDaGFuZ2U9e3RoaXMub25Ecm9wZG93blZpc2libGVDaGFuZ2V9XG4gICAgICAgIG9uU2VsZWN0PXt0aGlzLm9uU2VsZWN0fVxuICAgICAgICBkZWZhdWx0QWN0aXZlRmlyc3RPcHRpb249e2ZhbHNlfVxuICAgICAgICBvblBvcHVwU2Nyb2xsPXt0aGlzLmhhbmRsZVBvcHVwU2Nyb2xsfVxuICAgICAgICBvcHRpb25MYWJlbFByb3A9XCJjaGlsZHJlblwiXG4gICAgICAgIG9wdGlvbkZpbHRlclByb3A9XCJjaGlsZHJlblwiXG4gICAgICAgIHBsYWNlaG9sZGVyPXtwbGFjZWhvbGRlcn1cbiAgICAgICAgcHJlZml4Q2xzPVwiYWR1aS1zZWxlY3RcIlxuICAgICAgICBzaG93U2VhcmNoPXtmYWxzZX1cbiAgICAgICAgcmVmPXt0aGlzLnNhdmVTZWxlY3R9XG4gICAgICAgIHRyYW5zaXRpb25OYW1lPVwic2xpZGUtdXBcIlxuICAgICAgICB7Li4ub3BlblByb3BzfVxuICAgICAgICB7Li4ucmVzdFByb3BzfVxuICAgICAgPlxuICAgICAgICB7IGNoaWxkcmVuIH1cbiAgICAgIDwvUmNTZWxlY3Q+XG4gICAgKVxuICB9XG59XG5cbnBvbHlmaWxsKFNlbGVjdClcblxuZXhwb3J0IGRlZmF1bHQgU2VsZWN0Il19

@@ -354,3 +354,3 @@ import * as React from 'react';

componentDidMount: () => void;
componentDidUpdate: ({ dataSource: dataSourceOld }: ITableProps) => void;
componentDidUpdate: ({ dataSource: dataSourceOld, getCellProps: getCellPropsOld }: ITableProps) => void;
componentWillUnmount: () => void;

@@ -357,0 +357,0 @@ resizeColumnStart: (e: React.MouseEvent<HTMLDivElement, MouseEvent>, col: IColumnProps) => void;

import * as React from 'react';
import RcTreeSelect from 'rc-tree-select';
import PropTypes from 'prop-types';
import TreeNode, { ITreeNodeProps } from './TreeNode';
import TreeNode from './TreeNode';
import { Placement } from "../pop-trigger";

@@ -14,3 +14,2 @@ import "./style";

disabled?: boolean;
maxNodeCount?: null | number;
maxTagCount?: null | number;

@@ -27,4 +26,2 @@ multiple?: boolean;

value?: TreeNodeValue;
nodes: ITreeNodeProps[];
nodesToRender: ITreeNodeProps[];
}

@@ -70,6 +67,2 @@ export interface ITreeNodeProps {

/**
* 每级最多显示多少个 Node,如果超过了则不显示,但支持搜索出现
*/
maxNodeCount: PropTypes.Requireable<number>;
/**
* 最多显示多少个 tag,如果超过了则以收起的形式出现

@@ -116,9 +109,3 @@ */

static defaultProps: ITreeSelectProps;
static getDerivedStateFromProps: ({ children, maxNodeCount, value }: ITreeSelectProps) => {
nodes: {
[key: string]: any;
}[];
nodesToRender: {
[key: string]: any;
}[];
static getDerivedStateFromProps: ({ value }: ITreeSelectProps) => {
value: string[] | number[] | undefined;

@@ -134,10 +121,7 @@ } | null;

renderSwitcherIcon: (props: ITreeNodeProps) => JSX.Element | null;
handleChange: (value: any) => void;
handleChange: (value: TreeNodeValue) => void;
handleSearch: (val: string) => void;
filterTreeNode: (input: string, { key, props }: JSX.Element) => boolean;
filterTreeNode: (input: string, { key, props }: any) => boolean;
getMaxTagCount: () => 0 | null;
getMaxTagPlaceholder: (nodes: [string]) => JSX.Element | null;
getTreeNodesToRender: (nodes: {
[key: string]: any;
}[]) => JSX.Element[];
componentDidMount: () => void;

@@ -144,0 +128,0 @@ render(): JSX.Element;

@@ -22,6 +22,4 @@ "use strict";

var _core = require("./core");
var _TreeNode = _interopRequireDefault(require("./TreeNode"));
var _TreeNode = _interopRequireWildcard(require("./TreeNode"));
var _icon = _interopRequireDefault(require("../icon"));

@@ -117,10 +115,2 @@

var valueFinal = value;
if (Array.isArray(value)) {
valueFinal = value.filter(function (o) {
return !o.toString().includes("...");
});
}
var _this$props = _this.props,

@@ -134,3 +124,3 @@ disabled = _this$props.disabled,

_this.setState({
value: valueFinal
value: value
});

@@ -140,3 +130,3 @@ }

if (onChange) {
onChange(valueFinal);
onChange(value);
}

@@ -147,15 +137,4 @@ }

_this.handleSearch = function (val) {
var _this$props2 = _this.props,
maxNodeCount = _this$props2.maxNodeCount,
onSearch = _this$props2.onSearch;
var _this$state = _this.state,
nodes = _this$state.nodes,
valueState = _this$state.value;
var onSearch = _this.props.onSearch;
_this.setState({
value: valueState
});
var nodesDuplicated = JSON.parse(JSON.stringify(nodes));
if (onSearch) {

@@ -165,53 +144,2 @@ onSearch(val);

if (maxNodeCount) {
var filterSearchValue = function filterSearchValue(node) {
var children = node.children,
title = node.title,
value = node.value;
var titleMatched = value && title && title.toString().includes(val);
if (children) {
node.children = (Array.isArray(children) ? children : [children]).filter(filterSearchValue);
}
return titleMatched || Array.isArray(children) && children.length;
};
var filterMaxNodeCount = function filterMaxNodeCount(node, i) {
var children = node.children;
if (children) {
node.children = (Array.isArray(children) ? children : [children]).filter(filterMaxNodeCount);
return true;
}
if (i < maxNodeCount) {
return true;
}
if (i === maxNodeCount) {
var random = "...".concat(val).concat(Math.random().toString(36).substring(3, 8));
node.title = random;
node.key = random;
node.value = random;
return true;
}
return false;
};
var nodesFiltered = nodesDuplicated.filter(filterSearchValue);
var nodesFilteredToRender = nodesFiltered.filter(filterMaxNodeCount);
_this.setState({
nodesToRender: nodesFilteredToRender
}, function () {
var _this$select$state = _this.select.state,
missValueList = _this$select$state.missValueList,
valueList = _this$select$state.valueList;
console.log(missValueList, "missValueList");
console.log(valueList, "valueList");
});
}
setTimeout(function () {

@@ -288,5 +216,5 @@ if (_this.select && _this.select.selectTriggerRef) {

var _this$props3 = _this.props,
onChange = _this$props3.onChange,
value = _this$props3.value;
var _this$props2 = _this.props,
onChange = _this$props2.onChange,
value = _this$props2.value;
var length = nodes.length;

@@ -355,21 +283,7 @@ var values = Object.entries(_this.select.state.valueEntities);

_this.getTreeNodesToRender = function (nodes) {
return nodes.map(function (_ref2) {
var children = _ref2.children,
key = _ref2.key,
title = _ref2.title,
value = _ref2.value;
return React.createElement(_TreeNode["default"], {
key: key,
title: title,
value: value
}, children && _this.getTreeNodesToRender(Array.isArray(children) ? children : [children]));
});
};
_this.componentDidMount = function () {
var _this$props4 = _this.props,
maxTagCount = _this$props4.maxTagCount,
placeholder = _this$props4.placeholder,
resultVisible = _this$props4.resultVisible;
var _this$props3 = _this.props,
maxTagCount = _this$props3.maxTagCount,
placeholder = _this$props3.placeholder,
resultVisible = _this$props3.resultVisible;
var value = _this.state.value;

@@ -391,16 +305,6 @@

var _value = _props.value,
_children = _props.children,
defaultValue = _props.defaultValue,
_maxNodeCount = _props.maxNodeCount;
var _nodes = (0, _core.normalize)(_children);
var nodesToRender = (0, _core.normalize)(_children, _maxNodeCount);
var _valueState = _value !== null ? _value : defaultValue;
defaultValue = _props.defaultValue;
var valueState = _value !== null ? _value : defaultValue;
_this.state = {
nodes: _nodes,
nodesToRender: nodesToRender,
value: _valueState
value: valueState
};

@@ -413,18 +317,16 @@ return _this;

value: function render() {
var _this$props5 = this.props,
autoClearSearchValue = _this$props5.autoClearSearchValue,
className = _this$props5.className,
maxTagCount = _this$props5.maxTagCount,
multiple = _this$props5.multiple,
placement = _this$props5.placement,
placeholder = _this$props5.placeholder,
rightIcon = _this$props5.rightIcon,
resultVisible = _this$props5.resultVisible,
showCheckedStrategy = _this$props5.showCheckedStrategy,
otherProps = _objectWithoutProperties(_this$props5, ["autoClearSearchValue", "className", "maxTagCount", "multiple", "placement", "placeholder", "rightIcon", "resultVisible", "showCheckedStrategy"]);
var _this$props4 = this.props,
autoClearSearchValue = _this$props4.autoClearSearchValue,
className = _this$props4.className,
maxTagCount = _this$props4.maxTagCount,
multiple = _this$props4.multiple,
placement = _this$props4.placement,
placeholder = _this$props4.placeholder,
rightIcon = _this$props4.rightIcon,
resultVisible = _this$props4.resultVisible,
showCheckedStrategy = _this$props4.showCheckedStrategy,
otherProps = _objectWithoutProperties(_this$props4, ["autoClearSearchValue", "className", "maxTagCount", "multiple", "placement", "placeholder", "rightIcon", "resultVisible", "showCheckedStrategy"]);
var restProps = (0, _omit["default"])(otherProps, ["children", "onChange", "onSearch", "value"]);
var _this$state2 = this.state,
nodesToRender = _this$state2.nodesToRender,
value = _this$state2.value;
var restProps = (0, _omit["default"])(otherProps, ["onChange", "onSearch", "value"]);
var value = this.state.value;
var classSet = (0, _classnames["default"])(className, "".concat(prefix, "-wrapper"), _defineProperty({}, "".concat(prefix, "_resultHidden"), !resultVisible));

@@ -468,3 +370,2 @@ var checkbox = multiple;

console.log(this.getTreeNodesToRender(nodesToRender), "最后 render");
return React.createElement("div", {

@@ -507,3 +408,3 @@ className: (0, _classnames["default"])("adui-tree-select-wrapper", {

treeNodeFilterProp: "title"
}, restProps), this.getTreeNodesToRender(nodesToRender)), !!rightIcon && React.createElement(_icon["default"], {
}, restProps)), !!rightIcon && React.createElement(_icon["default"], {
icon: rightIcon,

@@ -523,3 +424,2 @@ className: "adui-tree-select-icon"

disabled: _propTypes["default"].bool,
maxNodeCount: _propTypes["default"].number,
maxTagCount: _propTypes["default"].number,

@@ -541,3 +441,2 @@ multiple: _propTypes["default"].bool,

disabled: false,
maxNodeCount: null,
maxTagCount: null,

@@ -555,11 +454,7 @@ multiple: true,

TreeSelect.getDerivedStateFromProps = function (_ref3) {
var children = _ref3.children,
maxNodeCount = _ref3.maxNodeCount,
value = _ref3.value;
TreeSelect.getDerivedStateFromProps = function (_ref2) {
var value = _ref2.value;
if (value !== null) {
return {
nodes: (0, _core.normalize)(children),
nodesToRender: (0, _core.normalize)(children, maxNodeCount),
value: value

@@ -576,2 +471,2 @@ };

exports["default"] = _default;
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL2NvbXBvbmVudHMvdHJlZS1zZWxlY3QvVHJlZVNlbGVjdC50c3giXSwibmFtZXMiOlsicHJlZml4Iiwibm9vcCIsInN0cmF0ZWdpZXMiLCJTSE9XX0FMTCIsIlNIT1dfQ0hJTEQiLCJTSE9XX1BBUkVOVCIsIlRyZWVTZWxlY3QiLCJwcm9wcyIsInNlbGVjdCIsIndyYXBwZXIiLCJzaG91bGRDb21wb25lbnRVcGRhdGUiLCJuZXh0UHJvcHMiLCJuZXh0U3RhdGUiLCJzdGF0ZSIsInNhdmVTZWxlY3QiLCJub2RlIiwic2F2ZVdyYXBwZXIiLCJyZW5kZXJTd2l0Y2hlckljb24iLCJpc0xlYWYiLCJoYW5kbGVDaGFuZ2UiLCJ2YWx1ZSIsImRvY3VtZW50IiwiYWN0aXZlRWxlbWVudCIsInRhZ05hbWUiLCJ0b1VwcGVyQ2FzZSIsInZhbHVlRmluYWwiLCJBcnJheSIsImlzQXJyYXkiLCJmaWx0ZXIiLCJvIiwidG9TdHJpbmciLCJpbmNsdWRlcyIsImRpc2FibGVkIiwib25DaGFuZ2UiLCJ2YWx1ZVByb3AiLCJzZXRTdGF0ZSIsImhhbmRsZVNlYXJjaCIsInZhbCIsIm1heE5vZGVDb3VudCIsIm9uU2VhcmNoIiwibm9kZXMiLCJ2YWx1ZVN0YXRlIiwibm9kZXNEdXBsaWNhdGVkIiwiSlNPTiIsInBhcnNlIiwic3RyaW5naWZ5IiwiZmlsdGVyU2VhcmNoVmFsdWUiLCJjaGlsZHJlbiIsInRpdGxlIiwidGl0bGVNYXRjaGVkIiwibGVuZ3RoIiwiZmlsdGVyTWF4Tm9kZUNvdW50IiwiaSIsInJhbmRvbSIsIk1hdGgiLCJzdWJzdHJpbmciLCJrZXkiLCJub2Rlc0ZpbHRlcmVkIiwibm9kZXNGaWx0ZXJlZFRvUmVuZGVyIiwibm9kZXNUb1JlbmRlciIsIm1pc3NWYWx1ZUxpc3QiLCJ2YWx1ZUxpc3QiLCJjb25zb2xlIiwibG9nIiwic2V0VGltZW91dCIsInNlbGVjdFRyaWdnZXJSZWYiLCJsaXN0IiwiY3VycmVudCIsInRyaWdnZXJSZWYiLCJfY29tcG9uZW50Iiwicm9vdE5vZGUiLCJpdGVtcyIsInF1ZXJ5U2VsZWN0b3JBbGwiLCJmb3JFYWNoIiwiaXRlbSIsInJlcGxhY2VtZW50Iiwic3RyIiwicmVwbGFjZSIsInNvdXJjZUh0bWwiLCJkYXRhc2V0IiwiaHRtbCIsImlubmVySFRNTCIsImluZGV4T2YiLCJjb21tZW50RW5kSW5kZXgiLCJzdWJzdHIiLCJmaWx0ZXJUcmVlTm9kZSIsImlucHV0IiwiU3RyaW5nIiwiZ2V0TWF4VGFnQ291bnQiLCJtYXhUYWdDb3VudCIsImdldE1heFRhZ1BsYWNlaG9sZGVyIiwidmFsdWVzIiwiT2JqZWN0IiwiZW50cmllcyIsInZhbHVlRW50aXRpZXMiLCJwbGFjZWhvbGRlckZpcnN0T2JqZWN0IiwiZmluZCIsInBsYWNlaG9sZGVyVGV4dCIsIm1hcCIsImZvdW5kSXRlbSIsInNwbGljZSIsImUiLCJzdG9wUHJvcGFnYXRpb24iLCJnZXRUcmVlTm9kZXNUb1JlbmRlciIsImNvbXBvbmVudERpZE1vdW50IiwicGxhY2Vob2xkZXIiLCJyZXN1bHRWaXNpYmxlIiwiZm9yY2VVcGRhdGUiLCJxdWVyeVNlbGVjdG9yIiwiZGVmYXVsdFZhbHVlIiwiYXV0b0NsZWFyU2VhcmNoVmFsdWUiLCJjbGFzc05hbWUiLCJtdWx0aXBsZSIsInBsYWNlbWVudCIsInJpZ2h0SWNvbiIsInNob3dDaGVja2VkU3RyYXRlZ3kiLCJvdGhlclByb3BzIiwicmVzdFByb3BzIiwiY2xhc3NTZXQiLCJjaGVja2JveCIsImNvdW50IiwiYWxpZ25FZGdlIiwiZGlzcGxheSIsIlJlYWN0IiwiQ29tcG9uZW50IiwicHJvcFR5cGVzIiwiUHJvcFR5cGVzIiwiYm9vbCIsInN0cmluZyIsIm9uZU9mVHlwZSIsImFycmF5IiwibnVtYmVyIiwiZnVuYyIsIm9uZU9mIiwiZGVmYXVsdFByb3BzIiwidW5kZWZpbmVkIiwiZ2V0RGVyaXZlZFN0YXRlRnJvbVByb3BzIiwiVHJlZU5vZGUiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7QUFBQTs7QUFDQTs7QUFLQTs7QUFDQTs7QUFD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QUFBQSxRQUFRLEVBQUUsSUFQbUM7QUFRN0MvRSxFQUFBQSxRQUFRLEVBQUVoQyxJQVJtQztBQVM3Q3NDLEVBQUFBLFFBQVEsRUFBRXRDLElBVG1DO0FBVTdDZ0gsRUFBQUEsU0FBUyxFQUFFLFlBVmtDO0FBVzdDUixFQUFBQSxXQUFXLEVBQUUsS0FYZ0M7QUFZN0NDLEVBQUFBLGFBQWEsRUFBRSxJQVo4QjtBQWE3Q1EsRUFBQUEsU0FBUyxFQUFFLE1BYmtDO0FBYzdDQyxFQUFBQSxtQkFBbUIsRUFBRSxhQWR3QjtBQWU3Qy9GLEVBQUFBLEtBQUssRUFBRTtBQWZzQyxDOztBQTNFM0NkLFUsQ0E2RlVrSSx3QixHQUEyQixpQkFBeUQ7QUFBQSxNQUF0RHpGLFFBQXNELFNBQXREQSxRQUFzRDtBQUFBLE1BQTVDVCxZQUE0QyxTQUE1Q0EsWUFBNEM7QUFBQSxNQUE5QmxCLEtBQThCLFNBQTlCQSxLQUE4Qjs7QUFDaEcsTUFBSUEsS0FBSyxLQUFLLElBQWQsRUFBb0I7QUFDbEIsV0FBTztBQUNMb0IsTUFBQUEsS0FBSyxFQUFFLHFCQUFVTyxRQUFWLENBREY7QUFFTFksTUFBQUEsYUFBYSxFQUFFLHFCQUFVWixRQUFWLEVBQW9CVCxZQUFwQixDQUZWO0FBR0xsQixNQUFBQSxLQUFLLEVBQUxBO0FBSEssS0FBUDtBQUtEOztBQUNELFNBQU8sSUFBUDtBQUNELEM7O0FBdEdHZCxVLENBd0dVbUksUSxHQUE0QkEsb0I7QUFtWDVDLHFDQUFTbkksVUFBVDtlQUVlQSxVIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgUmVhY3QgZnJvbSAncmVhY3QnXG5pbXBvcnQgUmNUcmVlU2VsZWN0LCB7XG4gIFNIT1dfQUxMLFxuICBTSE9XX1BBUkVOVCxcbiAgU0hPV19DSElMRCxcbn0gZnJvbSAncmMtdHJlZS1zZWxlY3QnXG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gJ3Byb3AtdHlwZXMnXG5pbXBvcnQgeyBwb2x5ZmlsbCB9IGZyb20gJ3JlYWN0LWxpZmVjeWNsZXMtY29tcGF0J1xuaW1wb3J0IHNoYWxsb3dFcXVhbCBmcm9tICdzaGFsbG93ZXF1YWwnXG5pbXBvcnQgY2xhc3NOYW1lcyBmcm9tICdjbGFzc25hbWVzJ1xuaW1wb3J0IG9taXQgZnJvbSBcIi4uL191dGlsL29taXRcIlxuaW1wb3J0IHsgbm9ybWFsaXplIH0gZnJvbSAnLi9jb3JlJ1xuaW1wb3J0IFRyZWVOb2RlLCB7IElUcmVlTm9kZVByb3BzIH0gZnJvbSAnLi9UcmVlTm9kZSdcbmltcG9ydCBJY29uIGZyb20gJy4uL2ljb24nXG5pbXBvcnQgUG9wb3ZlciBmcm9tICcuLi9wb3BvdmVyJ1xuaW1wb3J0IGdldFBsYWNlbWVudHMgZnJvbSAnLi4vdG9vbHRpcC9wbGFjZW1lbnRzJ1xuaW1wb3J0IHsgUGxhY2VtZW50IH0gZnJvbSBcIi4uL3BvcC10cmlnZ2VyXCJcbmltcG9ydCBcIi4vc3R5bGVcIlxuXG5jb25zdCBwcmVmaXggPSBcImFkdWktdHJlZS1zZWxlY3RcIlxuY29uc3Qgbm9vcCA9ICgpID0+IHt9XG5cbmNvbnN0IHN0cmF0ZWdpZXMgPSB7XG4gIFwic2hvdy1hbGxcIjogU0hPV19BTEwsXG4gIFwic2hvdy1jaGlsZFwiOiBTSE9XX0NISUxELFxuICBcInNob3ctcGFyZW50XCI6IFNIT1dfUEFSRU5ULFxufVxuXG5leHBvcnQgdHlwZSBUcmVlTm9kZVZhbHVlID0gc3RyaW5nW10gfCBudW1iZXJbXSB8IG51bGxcblxuZXhwb3J0IGludGVyZmFjZSBJVHJlZVNlbGVjdFByb3BzIHtcbiAgW2tleTogc3RyaW5nXTogYW55XG4gIGF1dG9DbGVhclNlYXJjaFZhbHVlPzogYm9vbGVhblxuICBjbGFzc05hbWU/OiBzdHJpbmdcbiAgZGVmYXVsdFZhbHVlPzogVHJlZU5vZGVWYWx1ZVxuICBkaXNhYmxlZD86IGJvb2xlYW5cbiAgbWF4Tm9kZUNvdW50PzogbnVsbCB8IG51bWJlclxuICBtYXhUYWdDb3VudD86IG51bGwgfCBudW1iZXJcbiAgbXVsdGlwbGU/OiBib29sZWFuXG4gIG9uQ2hhbmdlPzogKHZhbHVlOiBUcmVlTm9kZVZhbHVlKSA9PiB2b2lkXG4gIG9uU2VhcmNoPzogKHZhbHVlOiBzdHJpbmcpID0+IHZvaWRcbiAgcGxhY2VtZW50PzogUGxhY2VtZW50XG4gIHJlc3VsdFZpc2libGU/OiBib29sZWFuXG4gIHNob3dDaGVja2VkU3RyYXRlZ3k/OiBcInNob3ctYWxsXCIgfCBcInNob3ctY2hpbGRcIiB8IFwic2hvdy1wYXJlbnRcIlxuICB2YWx1ZT86IFRyZWVOb2RlVmFsdWVcbn1cblxuZXhwb3J0IGludGVyZmFjZSBJVHJlZVNlbGVjdFN0YXRlIHtcbiAgdmFsdWU/OiBUcmVlTm9kZVZhbHVlXG4gIG5vZGVzOiBJVHJlZU5vZGVQcm9wc1tdXG4gIG5vZGVzVG9SZW5kZXI6IElUcmVlTm9kZVByb3BzW11cbn1cblxuZXhwb3J0IGludGVyZmFjZSBJVHJlZU5vZGVQcm9wcyB7XG4gIFtrZXk6IHN0cmluZ106IGFueVxuICBjbGFzc05hbWU/OiBzdHJpbmdcbiAgY2hlY2thYmxlPzogYm9vbGVhblxuICBkaXNhYmxlZD86IGJvb2xlYW5cbiAgZGlzYWJsZUNoZWNrYm94PzogYm9vbGVhblxuICB0aXRsZT86IHN0cmluZyB8IFJlYWN0LlJlYWN0Tm9kZVxuICBrZXk/OiBzdHJpbmdcbiAgZXZlbnRLZXk/OiBzdHJpbmdcbiAgaXNMZWFmPzogYm9vbGVhblxuICBjaGVja2VkPzogYm9vbGVhblxuICBleHBhbmRlZD86IGJvb2xlYW5cbiAgbG9hZGluZz86IGJvb2xlYW5cbiAgc2VsZWN0ZWQ/OiBib29sZWFuXG4gIHNlbGVjdGFibGU/OiBib29sZWFuXG4gIGNoaWxkcmVuPzogUmVhY3QuUmVhY3ROb2RlXG59XG5cbi8qKlxuICog5qCR5b2i6YCJ5oupXG4gKi9cbmNsYXNzIFRyZWVTZWxlY3QgZXh0ZW5kcyBSZWFjdC5Db21wb25lbnQ8SVRyZWVTZWxlY3RQcm9wcywgSVRyZWVTZWxlY3RTdGF0ZT4ge1xuXG4gIHB1YmxpYyBzdGF0aWMgcHJvcFR5cGVzID0ge1xuICAgIC8qKlxuICAgICAqIOWAvOiiq+mAieaLqeWQju+8jOaYr+WQpumcgOimgea4heepuuaQnOe0ouahhlxuICAgICAqL1xuICAgIGF1dG9DbGVhclNlYXJjaFZhbHVlOiBQcm9wVHlwZXMuYm9vbCxcbiAgICAvKipcbiAgICAgKiDpmYTliqDnsbvlkI1cbiAgICAgKi9cbiAgICBjbGFzc05hbWU6IFByb3BUeXBlcy5zdHJpbmcsXG4gICAgLyoqXG4gICAgICog6buY6K6k6YCJ5Lit55qEIGtleVxuICAgICAqL1xuICAgIGRlZmF1bHRWYWx1ZTogUHJvcFR5cGVzLm9uZU9mVHlwZShbXG4gICAgICBQcm9wVHlwZXMuc3RyaW5nLFxuICAgICAgUHJvcFR5cGVzLmFycmF5LFxuICAgIF0pLFxuICAgIC8qKlxuICAgICAqIOaYr+WQpuemgeeUqFxuICAgICAqL1xuICAgIGRpc2FibGVkOiBQcm9wVHlwZXMuYm9vbCxcbiAgICAvKipcbiAgICAgKiDmr4/nuqfmnIDlpJrmmL7npLrlpJrlsJHkuKogTm9kZe+8jOWmguaenOi2hei/h+S6huWImeS4jeaYvuekuu+8jOS9huaUr+aMgeaQnOe0ouWHuueOsFxuICAgICAqL1xuICAgIG1heE5vZGVDb3VudDogUHJvcFR5cGVzLm51bWJlcixcbiAgICAvKipcbiAgICAgKiDmnIDlpJrmmL7npLrlpJrlsJHkuKogdGFn77yM5aaC5p6c6LaF6L+H5LqG5YiZ5Lul5pS26LW355qE5b2i5byP5Ye6546wXG4gICAgICovXG4gICAgbWF4VGFnQ291bnQ6IFByb3BUeXBlcy5udW1iZXIsXG4gICAgLyoqXG4gICAgICog5piv5ZCm5aSa6YCJ5qih5byPXG4gICAgICovXG4gICAgbXVsdGlwbGU6IFByb3BUeXBlcy5ib29sLFxuICAgIC8qKlxuICAgICAqIOWAvOWPmOWMluaXtueahOWbnuiwg++8jOWPguaVsDogdmFsdWVcbiAgICAgKi9cbiAgICBvbkNoYW5nZTogUHJvcFR5cGVzLmZ1bmMsXG4gICAgLyoqXG4gICAgICog5pCc57Si5pe255qE5Zue6LCD77yM5Y+C5pWwOiB2YWx1ZVxuICAgICAqL1xuICAgIG9uU2VhcmNoOiBQcm9wVHlwZXMuZnVuYyxcbiAgICAvKipcbiAgICAgKiDorr7nva7lvLnlh7rkvY3nva5cbiAgICAgKi9cbiAgICBwbGFjZW1lbnQ6IFByb3BUeXBlcy5vbmVPZihbXG4gICAgICBcInRvcFwiLCBcImxlZnRcIiwgXCJyaWdodFwiLCBcImJvdHRvbVwiLFxuICAgICAgXCJ0b3BMZWZ0XCIsIFwidG9wUmlnaHRcIiwgXCJib3R0b21MZWZ0XCIsIFwiYm90dG9tUmlnaHRcIixcbiAgICAgIFwibGVmdFRvcFwiLCBcImxlZnRCb3R0b21cIiwgXCJyaWdodFRvcFwiLCBcInJpZ2h0Qm90dG9tXCIsXG4gICAgXSksXG4gICAgLyoqXG4gICAgICog6K6+572u6L6T5YWl5qGG55qE6buY6K6k5YaF5a65XG4gICAgICovXG4gICAgcGxhY2Vob2xkZXI6IFByb3BUeXBlcy5zdHJpbmcsXG4gICAgLyoqXG4gICAgICog6L6T5YWl5qGG5YaF55qE5qCH562+5piv5ZCm5pi+56S677yM5q2kIFByb3Ag55So5LqO5oOz6KaB5bCG57uT5p6c5Yy65bGV56S65Zyo5Yir55qE5Zyw5pa555qE6ZyA5rGCXG4gICAgICovXG4gICAgcmVzdWx0VmlzaWJsZTogUHJvcFR5cGVzLmJvb2wsXG4gICAgLyoqXG4gICAgICog5a6a5Yi25qCR5b2i6YCJ5oup5Zmo55qEaWNvblxuICAgICAqL1xuICAgIHJpZ2h0SWNvbjogUHJvcFR5cGVzLnN0cmluZyxcbiAgICAvKipcbiAgICAgKiDlrprkuYnpgInkuK3pobnlm57loavnmoTmlrnlvI/vvJoxLiBzaG93LWFsbO+8muaYvuekuuWMheaLrOeItuiKgueCueeahOaJgOaciemAieS4reiKgueCue+8mzIuIHNob3ctcGFyZW5077ya5Y+q5pi+56S654i26IqC54K577ybMy4gc2hvdy1jaGlsZO+8muWPquaYvuekuuWtkOiKgueCueOAgum7mOiupOWAvO+8mnNob3ctcGFyZW50XG4gICAgICovXG4gICAgc2hvd0NoZWNrZWRTdHJhdGVneTogUHJvcFR5cGVzLm9uZU9mKFtcInNob3ctYWxsXCIsIFwic2hvdy1wYXJlbnRcIiwgXCJzaG93LWNoaWxkXCJdKSxcbiAgICAvKipcbiAgICAgKiDlpJbpg6jmjqfliLbvvJrpgInkuK3nmoQga2V5XG4gICAgICovXG4gICAgdmFsdWU6IFByb3BUeXBlcy5vbmVPZlR5cGUoW1xuICAgICAgUHJvcFR5cGVzLnN0cmluZyxcbiAgICAgIFByb3BUeXBlcy5hcnJheSxcbiAgICBdKSxcbiAgfVxuXG4gIHB1YmxpYyBzdGF0aWMgZGVmYXVsdFByb3BzOiBJVHJlZVNlbGVjdFByb3BzID0ge1xuICAgIGF1dG9DbGVhclNlYXJjaFZhbHVlOiBmYWxzZSxcbiAgICBjbGFzc05hbWU6IHVuZGVmaW5lZCxcbiAgICBkZWZhdWx0VmFsdWU6IG51bGwsXG4gICAgZGlzYWJsZWQ6IGZhbHNlLFxuICAgIG1heE5vZGVDb3VudDogbnVsbCxcbiAgICBtYXhUYWdDb3VudDogbnVsbCxcbiAgICBtdWx0aXBsZTogdHJ1ZSxcbiAgICBvbkNoYW5nZTogbm9vcCxcbiAgICBvblNlYXJjaDogbm9vcCxcbiAgICBwbGFjZW1lbnQ6IFwiYm90dG9tTGVmdFwiLFxuICAgIHBsYWNlaG9sZGVyOiBcIuivt+mAieaLqVwiLFxuICAgIHJlc3VsdFZpc2libGU6IHRydWUsXG4gICAgcmlnaHRJY29uOiBcIm1lbnVcIixcbiAgICBzaG93Q2hlY2tlZFN0cmF0ZWd5OiBcInNob3ctcGFyZW50XCIsXG4gICAgdmFsdWU6IG51bGwsXG4gIH1cblxuICBwdWJsaWMgc3RhdGljIGdldERlcml2ZWRTdGF0ZUZyb21Qcm9wcyA9ICh7IGNoaWxkcmVuLCBtYXhOb2RlQ291bnQsIHZhbHVlIH06IElUcmVlU2VsZWN0UHJvcHMpID0+IHtcbiAgICBpZiAodmFsdWUgIT09IG51bGwpIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIG5vZGVzOiBub3JtYWxpemUoY2hpbGRyZW4pLFxuICAgICAgICBub2Rlc1RvUmVuZGVyOiBub3JtYWxpemUoY2hpbGRyZW4sIG1heE5vZGVDb3VudCksXG4gICAgICAgIHZhbHVlLFxuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gbnVsbFxuICB9XG5cbiAgcHVibGljIHN0YXRpYyBUcmVlTm9kZTogdHlwZW9mIFRyZWVOb2RlID0gVHJlZU5vZGVcblxuICBwdWJsaWMgc2VsZWN0OiB0eXBlb2YgUmNUcmVlU2VsZWN0XG4gIFxuICBwdWJsaWMgd3JhcHBlcjogSFRNTERpdkVsZW1lbnRcblxuICBjb25zdHJ1Y3Rvcihwcm9wczogSVRyZWVTZWxlY3RQcm9wcykge1xuICAgIHN1cGVyKHByb3BzKVxuICAgIGNvbnN0IHsgdmFsdWUsIGNoaWxkcmVuLCBkZWZhdWx0VmFsdWUsIG1heE5vZGVDb3VudCB9ID0gcHJvcHNcbiAgICBjb25zdCBub2RlcyA9IG5vcm1hbGl6ZShjaGlsZHJlbilcbiAgICBjb25zdCBub2Rlc1RvUmVuZGVyID0gbm9ybWFsaXplKGNoaWxkcmVuLCBtYXhOb2RlQ291bnQpXG4gICAgY29uc3QgdmFsdWVTdGF0ZSA9IHZhbHVlICE9PSBudWxsID8gdmFsdWUgOiBkZWZhdWx0VmFsdWVcbiAgICB0aGlzLnN0YXRlID0ge1xuICAgICAgbm9kZXMsXG4gICAgICBub2Rlc1RvUmVuZGVyLFxuICAgICAgdmFsdWU6IHZhbHVlU3RhdGUsXG4gICAgfVxuICB9XG5cbiAgcHVibGljIHNob3VsZENvbXBvbmVudFVwZGF0ZSA9IChuZXh0UHJvcHM6IElUcmVlU2VsZWN0UHJvcHMsIG5leHRTdGF0ZTogSVRyZWVTZWxlY3RTdGF0ZSkgPT4gKFxuICAgICFzaGFsbG93RXF1YWwodGhpcy5wcm9wcywgbmV4dFByb3BzKSB8fCAhc2hhbGxvd0VxdWFsKHRoaXMuc3RhdGUsIG5leHRTdGF0ZSlcbiAgKVxuXG4gIHB1YmxpYyBzYXZlU2VsZWN0ID0gKG5vZGU6IFJlYWN0LlJlYWN0Tm9kZSkgPT4ge1xuICAgIHRoaXMuc2VsZWN0ID0gbm9kZVxuICB9XG5cbiAgcHVibGljIHNhdmVXcmFwcGVyID0gKG5vZGU6IEhUTUxEaXZFbGVtZW50KSA9PiB7XG4gICAgdGhpcy53cmFwcGVyID0gbm9kZVxuICB9XG5cbiAgcHVibGljIHJlbmRlclN3aXRjaGVySWNvbiA9IChwcm9wczogSVRyZWVOb2RlUHJvcHMpID0+IHtcbiAgICBjb25zdCB7IGlzTGVhZiB9ID0gcHJvcHNcbiAgICBpZiAoaXNMZWFmKSB7XG4gICAgICByZXR1cm4gbnVsbFxuICAgIH1cbiAgICByZXR1cm4gPEljb24gaWNvbj1cImFycm93LXJpZ2h0XCIgY2xhc3NOYW1lPVwiYWR1aS10cmVlLXNlbGVjdC1zd2l0Y2hlci1pY29uXCIgLz5cbiAgfVxuXG4gIHB1YmxpYyBoYW5kbGVDaGFuZ2UgPSAodmFsdWU6IGFueSkgPT4ge1xuICAgIGlmIChkb2N1bWVudC5hY3RpdmVFbGVtZW50ICYmIGRvY3VtZW50LmFjdGl2ZUVsZW1lbnQudGFnTmFtZS50b1VwcGVyQ2FzZSgpID09PSBcIklOUFVUXCIpIHtcbiAgICAgIHJldHVyblxuICAgIH1cblxuICAgIGxldCB2YWx1ZUZpbmFsID0gdmFsdWVcbiAgICBpZiAoQXJyYXkuaXNBcnJheSh2YWx1ZSkpIHtcbiAgICAgIHZhbHVlRmluYWwgPSB2YWx1ZS5maWx0ZXIoKG86IHN0cmluZyB8IG51bWJlcikgPT4gIW8udG9TdHJpbmcoKS5pbmNsdWRlcyhcIi4uLlwiKSlcbiAgICB9XG5cbiAgICBjb25zdCB7XG4gICAgICBkaXNhYmxlZCxcbiAgICAgIG9uQ2hhbmdlLFxuICAgICAgdmFsdWU6IHZhbHVlUHJvcCxcbiAgICB9ID0gdGhpcy5wcm9wc1xuICAgIGlmICghZGlzYWJsZWQpIHtcbiAgICAgIGlmICh2YWx1ZVByb3AgPT09IG51bGwpIHtcbiAgICAgICAgdGhpcy5zZXRTdGF0ZSh7IHZhbHVlOiB2YWx1ZUZpbmFsIH0pXG4gICAgICB9XG4gICAgICBpZiAob25DaGFuZ2UpIHtcbiAgICAgICAgb25DaGFuZ2UodmFsdWVGaW5hbClcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBwdWJsaWMgaGFuZGxlU2VhcmNoID0gKHZhbDogc3RyaW5nKSA9PiB7XG4gICAgY29uc3QgeyBtYXhOb2RlQ291bnQsIG9uU2VhcmNoIH0gPSB0aGlzLnByb3BzXG4gICAgY29uc3QgeyBub2RlcywgdmFsdWU6IHZhbHVlU3RhdGUgfSA9IHRoaXMuc3RhdGVcbiAgICB0aGlzLnNldFN0YXRlKHsgdmFsdWU6IHZhbHVlU3RhdGUgfSlcbiAgICBjb25zdCBub2Rlc0R1cGxpY2F0ZWQgPSBKU09OLnBhcnNlKEpTT04uc3RyaW5naWZ5KG5vZGVzKSlcbiAgICBpZiAob25TZWFyY2gpIHtcbiAgICAgIG9uU2VhcmNoKHZhbClcbiAgICB9XG5cbiAgICBpZiAobWF4Tm9kZUNvdW50KSB7XG4gICAgICAvLyDlv4Xpobvmi6XmnIkgbm9kZS52YWx1ZSDlm6DkuLrmsqHmnIkgdmFsdWUg55qE5oOF5Ya1IFRyZWVOb2RlIOinhuS4uuaZrumAmiBkaXZcbiAgICAgIGNvbnN0IGZpbHRlclNlYXJjaFZhbHVlID0gKG5vZGU6IGFueSkgPT4ge1xuICAgICAgICBjb25zdCB7IGNoaWxkcmVuLCB0aXRsZSwgdmFsdWUgfSA9IG5vZGVcbiAgICAgICAgY29uc3QgdGl0bGVNYXRjaGVkID0gdmFsdWUgJiYgdGl0bGUgJiYgdGl0bGUudG9TdHJpbmcoKS5pbmNsdWRlcyh2YWwpXG4gICAgICAgIGlmIChjaGlsZHJlbikge1xuICAgICAgICAgIG5vZGUuY2hpbGRyZW4gPSAoQXJyYXkuaXNBcnJheShjaGlsZHJlbikgPyBjaGlsZHJlbiA6IFtjaGlsZHJlbl0pLmZpbHRlcihmaWx0ZXJTZWFyY2hWYWx1ZSlcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdGl0bGVNYXRjaGVkIHx8IChBcnJheS5pc0FycmF5KGNoaWxkcmVuKSAmJiBjaGlsZHJlbi5sZW5ndGgpXG4gICAgICB9XG4gICAgICBjb25zdCBmaWx0ZXJNYXhOb2RlQ291bnQgPSAobm9kZTogSVRyZWVOb2RlUHJvcHMsIGk6IG51bWJlcikgPT4ge1xuICAgICAgICBjb25zdCB7IGNoaWxkcmVuIH0gPSBub2RlXG4gICAgICAgIGlmIChjaGlsZHJlbikge1xuICAgICAgICAgIG5vZGUuY2hpbGRyZW4gPSAoQXJyYXkuaXNBcnJheShjaGlsZHJlbikgPyBjaGlsZHJlbiA6IFtjaGlsZHJlbl0pLmZpbHRlcihmaWx0ZXJNYXhOb2RlQ291bnQpXG4gICAgICAgICAgcmV0dXJuIHRydWVcbiAgICAgICAgfVxuICAgICAgICBpZiAoaSA8IG1heE5vZGVDb3VudCkge1xuICAgICAgICAgIHJldHVybiB0cnVlXG4gICAgICAgIH1cbiAgICAgICAgaWYgKGkgPT09IG1heE5vZGVDb3VudCkge1xuICAgICAgICAgIGNvbnN0IHJhbmRvbSA9IGAuLi4ke3ZhbH0ke01hdGgucmFuZG9tKCkudG9TdHJpbmcoMzYpLnN1YnN0cmluZygzLCA4KX1gXG4gICAgICAgICAgbm9kZS50aXRsZSA9IHJhbmRvbVxuICAgICAgICAgIG5vZGUua2V5ID0gcmFuZG9tXG4gICAgICAgICAgbm9kZS52YWx1ZSA9IHJhbmRvbVxuICAgICAgICAgIHJldHVybiB0cnVlXG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGZhbHNlXG4gICAgICB9XG4gICAgICBjb25zdCBub2Rlc0ZpbHRlcmVkID0gbm9kZXNEdXBsaWNhdGVkLmZpbHRlcihmaWx0ZXJTZWFyY2hWYWx1ZSlcbiAgICAgIGNvbnN0IG5vZGVzRmlsdGVyZWRUb1JlbmRlciA9IG5vZGVzRmlsdGVyZWQuZmlsdGVyKGZpbHRlck1heE5vZGVDb3VudClcbiAgICAgIHRoaXMuc2V0U3RhdGUoeyBub2Rlc1RvUmVuZGVyOiBub2Rlc0ZpbHRlcmVkVG9SZW5kZXIgfSwgKCkgPT4ge1xuICAgICAgICBjb25zdCB7IG1pc3NWYWx1ZUxpc3QsIHZhbHVlTGlzdCB9ID0gdGhpcy5zZWxlY3Quc3RhdGVcbiAgICAgICAgY29uc29sZS5sb2cobWlzc1ZhbHVlTGlzdCwgXCJtaXNzVmFsdWVMaXN0XCIpXG4gICAgICAgIGNvbnNvbGUubG9nKHZhbHVlTGlzdCwgXCJ2YWx1ZUxpc3RcIilcbiAgICAgIH0pXG4gICAgfVxuXG4gICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAvKipcbiAgICAgICAqIGhpZ2hsaWdodFxuICAgICAgICovXG4gICAgICBpZiAodGhpcy5zZWxlY3QgJiYgdGhpcy5zZWxlY3Quc2VsZWN0VHJpZ2dlclJlZikge1xuICAgICAgICAvLyDliKvpl67miJHmi7/liLAgc2VsZWN0IG5vZGUg5Li65LuA5LmI6ZyA6KaB6L+Z5LmI6ZW/IOKAlOKAlCDor5Xlh7rmnaXnmoTjgIJcYlxuICAgICAgICAvKiBlc2xpbnQtZGlzYWJsZSBuby11bmRlcnNjb3JlLWRhbmdsZSAqL1xuICAgICAgICBjb25zdCBsaXN0ID0gdGhpcy5zZWxlY3Quc2VsZWN0VHJpZ2dlclJlZi5jdXJyZW50LnRyaWdnZXJSZWYuY3VycmVudC5fY29tcG9uZW50LnJvb3ROb2RlXG4gICAgICAgIGNvbnN0IGl0ZW1zID0gbGlzdC5xdWVyeVNlbGVjdG9yQWxsKFwiLmFkdWktdHJlZS1zZWxlY3QtdHJlZS10aXRsZVwiKVxuICAgICAgICBpdGVtcy5mb3JFYWNoKChpdGVtOiBIVE1MRWxlbWVudCkgPT4ge1xuICAgICAgICAgIGNvbnN0IHJlcGxhY2VtZW50ID0gKHN0cjogc3RyaW5nKSA9PiBzdHIucmVwbGFjZSh2YWwsIGA8c3BhbiBzdHlsZT1cImNvbG9yOiB2YXIoLS1wcmltYXJ5LWNvbG9yKTtcIj4ke3ZhbH08L3NwYW4+YClcbiAgICAgICAgICBsZXQgc291cmNlSHRtbCA9IGl0ZW0uZGF0YXNldC5odG1sXG4gICAgICAgICAgaWYgKCFzb3VyY2VIdG1sKSB7XG4gICAgICAgICAgICBzb3VyY2VIdG1sID0gaXRlbS5pbm5lckhUTUxcbiAgICAgICAgICAgIGl0ZW0uZGF0YXNldC5odG1sID0gaXRlbS5pbm5lckhUTUxcbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKGl0ZW0uaW5uZXJIVE1MICE9PSBcIuaXoOWMuemFjee7k+aenFwiKSB7XG4gICAgICAgICAgICBpZiAodmFsKSB7XG4gICAgICAgICAgICAgIC8vIOWIpOaWreaYr+S7pSByZWFjdC10ZXh0IOazqOmHiuW8gOWni+eahO+8jOWImeeVpei/h+azqOmHiumDqOWIhui/m+ihjCBoaWdodGxpZ2h0XG4gICAgICAgICAgICAgIGlmIChzb3VyY2VIdG1sLmluZGV4T2YoXCI8IS0tIHJlYWN0LXRleHQ6XCIpID09PSAwKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgY29tbWVudEVuZEluZGV4ID0gc291cmNlSHRtbC5pbmRleE9mKFwiLS0+XCIpXG4gICAgICAgICAgICAgICAgaWYgKHNvdXJjZUh0bWwuaW5kZXhPZih2YWwpIDwgY29tbWVudEVuZEluZGV4KSB7XG4gICAgICAgICAgICAgICAgICBpdGVtLmlubmVySFRNTCA9IHNvdXJjZUh0bWwuc3Vic3RyKDAsIGNvbW1lbnRFbmRJbmRleCArIDMpICsgcmVwbGFjZW1lbnQoc291cmNlSHRtbC5zdWJzdHIoY29tbWVudEVuZEluZGV4ICsgMykpXG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgIGl0ZW0uaW5uZXJIVE1MID0gcmVwbGFjZW1lbnQoc291cmNlSHRtbClcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgaXRlbS5pbm5lckhUTUwgPSByZXBsYWNlbWVudChzb3VyY2VIdG1sKVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICBpdGVtLmlubmVySFRNTCA9IHNvdXJjZUh0bWxcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH0pXG4gICAgICB9XG4gICAgfSwgMClcbiAgfVxuXG4gIHB1YmxpYyBmaWx0ZXJUcmVlTm9kZSA9IChpbnB1dDogc3RyaW5nLCB7IGtleSwgcHJvcHMgfTogSlNYLkVsZW1lbnQpID0+IHtcbiAgICBpZiAoIXByb3BzKSB7XG4gICAgICByZXR1cm4gZmFsc2VcbiAgICB9XG4gICAgY29uc3QgeyB2YWx1ZSB9ID0gcHJvcHNcbiAgICBpZiAoIWtleSB8fCAhdmFsdWUpIHtcbiAgICAgIHJldHVybiBmYWxzZVxuICAgIH1cbiAgICByZXR1cm4gU3RyaW5nKHByb3BzLnRpdGxlKS5pbmNsdWRlcyhpbnB1dClcbiAgfVxuXG4gIHB1YmxpYyBnZXRNYXhUYWdDb3VudCA9ICgpID0+IHtcbiAgICBjb25zdCB7IG1heFRhZ0NvdW50IH0gPSB0aGlzLnByb3BzXG4gICAgY29uc3QgeyB2YWx1ZSB9ID0gdGhpcy5zdGF0ZVxuXG4gICAgaWYgKCFtYXhUYWdDb3VudCB8fCAhdmFsdWUgfHwgdmFsdWUubGVuZ3RoIDw9IG1heFRhZ0NvdW50KSB7XG4gICAgICByZXR1cm4gbnVsbFxuICAgIH1cbiAgICByZXR1cm4gMFxuICB9XG5cbiAgcHVibGljIGdldE1heFRhZ1BsYWNlaG9sZGVyID0gKG5vZGVzOiBbc3RyaW5nXSkgPT4ge1xuICAgIGlmICghdGhpcy5zZWxlY3QpIHtcbiAgICAgIHJldHVybiBudWxsXG4gICAgfVxuICAgIC8qKlxuICAgICAqIOi/memHjOS9v+eUqOWPjOetieWPt+aYr+WboOS4uiByYy10cmVlLXNlbGVjdCDlrp7pmYXkuI3lhYHorrggbnVtYmVyIOexu+Wei+eahCB2YWx1ZSDlgLzvvIzkvYbmmK/lrp7pmYXkuIrnu4/luLjkvJrov5nmoLfkvb/nlKhcbiAgICAgKiDlm6DmraTlnKjmr5TovoMgc3RyaW5nIOWSjCBudW1iZXIg57G75Z6L5YC85pe26ZyA6KaBID09XG4gICAgICovXG4gICAgLyogZXNsaW50LWRpc2FibGUgZXFlcWVxICovXG4gICAgY29uc3QgeyBvbkNoYW5nZSwgdmFsdWUgfSA9IHRoaXMucHJvcHNcbiAgICBjb25zdCB7IGxlbmd0aCB9ID0gbm9kZXNcblxuICAgIGNvbnN0IHZhbHVlczogQXJyYXk8W3N0cmluZywgYW55XT4gPSBPYmplY3QuZW50cmllcyh0aGlzLnNlbGVjdC5zdGF0ZS52YWx1ZUVudGl0aWVzKVxuICAgIGNvbnN0IHBsYWNlaG9sZGVyRmlyc3RPYmplY3Q9IHZhbHVlcy5maW5kKG8gPT4gb1swXSA9PT0gbm9kZXNbMF0pXG4gICAgY29uc3QgcGxhY2Vob2xkZXJUZXh0ID0gYCR7cGxhY2Vob2xkZXJGaXJzdE9iamVjdCA/IHBsYWNlaG9sZGVyRmlyc3RPYmplY3RbMV0ubm9kZS5wcm9wcy50aXRsZSA6IG5vZGVzWzBdfS4uLuetiSR7bGVuZ3RofeS4qmBcblxuICAgIHJldHVybiAoXG4gICAgICA8UG9wb3ZlclxuICAgICAgICBhbGlnbkVkZ2U9e2ZhbHNlfVxuICAgICAgICBwbGFjZW1lbnQ9XCJ0b3BcIlxuICAgICAgICBwb3B1cD17XG4gICAgICAgICAgbm9kZXMubWFwKChub2RlLCBpKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBmb3VuZEl0ZW0gPSB2YWx1ZXMuZmluZChvID0+IG9bMF0gPT09IG5vZGUpXG4gICAgICAgICAgICBsZXQgdGl0bGUgPSBub2RlXG4gICAgICAgICAgICBpZiAoZm91bmRJdGVtKSB7XG4gICAgICAgICAgICAgICh7IHRpdGxlIH0gPSBmb3VuZEl0ZW1bMV0ubm9kZS5wcm9wcylcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICBjbGFzc05hbWU9XCJhZHVpLXRyZWUtc2VsZWN0LW1heFBvcG92ZXItaXRlbVwiXG4gICAgICAgICAgICAgICAga2V5PXtub2RlfVxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPHNwYW4+eyB0aXRsZSB8fCBub2RlIH08L3NwYW4+XG4gICAgICAgICAgICAgICAgPEljb25cbiAgICAgICAgICAgICAgICAgIGljb249XCJjYW5jZWxcIlxuICAgICAgICAgICAgICAgICAgb25DbGljaz17KCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBub2Rlcy5zcGxpY2UoaSwgMSlcbiAgICAgICAgICAgICAgICAgICAgaWYgKHZhbHVlID09PSBudWxsKSB7XG4gICAgICAgICAgICAgICAgICAgICAgdGhpcy5zZXRTdGF0ZSh7IHZhbHVlOiBub2RlcyB9KVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGlmIChvbkNoYW5nZSkge1xuICAgICAgICAgICAgICAgICAgICAgIG9uQ2hhbmdlKG5vZGVzKVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgKVxuICAgICAgICAgIH0pXG4gICAgICAgIH1cbiAgICAgICAgcG9wdXBDbGFzc05hbWU9XCJhZHVpLXRyZWUtc2VsZWN0LW1heFBvcG92ZXJcIlxuICAgICAgPlxuICAgICAgICA8ZGl2XG4gICAgICAgICAgY2xhc3NOYW1lPVwiYWR1aS10cmVlLXNlbGVjdC1tYXhQbGFjZWhvbGRlclwiXG4gICAgICAgICAgcm9sZT1cIm5vbmVcIlxuICAgICAgICAgIG9uQ2xpY2s9e2UgPT4gZS5zdG9wUHJvcGFnYXRpb24oKX1cbiAgICAgICAgPlxuICAgICAgICAgIHsgcGxhY2Vob2xkZXJUZXh0IH1cbiAgICAgICAgICA8SWNvblxuICAgICAgICAgICAgaWNvbj1cImNhbmNlbFwiXG4gICAgICAgICAgICBzaXplPXsxNH1cbiAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IHtcbiAgICAgICAgICAgICAgaWYgKHZhbHVlID09PSBudWxsKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5zZXRTdGF0ZSh7IHZhbHVlOiBbXSB9KVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIGlmIChvbkNoYW5nZSkge1xuICAgICAgICAgICAgICAgIG9uQ2hhbmdlKFtdKVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9fVxuICAgICAgICAgIC8+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9Qb3BvdmVyPlxuICAgIClcbiAgfVxuXG4gIHB1YmxpYyBnZXRUcmVlTm9kZXNUb1JlbmRlciA9IChub2RlczogeyBba2V5OiBzdHJpbmddOiBhbnkgfVtdKSA9PiAoXG4gICAgbm9kZXMubWFwKCh7IGNoaWxkcmVuLCBrZXksIHRpdGxlLCB2YWx1ZSB9KSA9PiAoXG4gICAgICA8VHJlZU5vZGVcbiAgICAgICAga2V5PXtrZXl9XG4gICAgICAgIHRpdGxlPXt0aXRsZX1cbiAgICAgICAgdmFsdWU9e3ZhbHVlfVxuICAgICAgPlxuICAgICAgICB7IGNoaWxkcmVuICYmIHRoaXMuZ2V0VHJlZU5vZGVzVG9SZW5kZXIoQXJyYXkuaXNBcnJheShjaGlsZHJlbikgPyBjaGlsZHJlbiA6IFtjaGlsZHJlbl0pIH1cbiAgICAgIDwvVHJlZU5vZGU+XG4gICAgKSlcbiAgKVxuXG4gIHB1YmxpYyBjb21wb25lbnREaWRNb3VudCA9ICgpID0+IHtcbiAgICBjb25zdCB7IG1heFRhZ0NvdW50LCBwbGFjZWhvbGRlciwgcmVzdWx0VmlzaWJsZSB9ID0gdGhpcy5wcm9wc1xuICAgIGNvbnN0IHsgdmFsdWUgfSA9IHRoaXMuc3RhdGVcbiAgICBpZiAobWF4VGFnQ291bnQgIT09IG51bGwgJiYgdmFsdWUpIHtcbiAgICAgIHRoaXMuZm9yY2VVcGRhdGUoKVxuICAgIH1cbiAgICBpZiAoIXJlc3VsdFZpc2libGUgJiYgdGhpcy53cmFwcGVyKSB7XG4gICAgICBjb25zdCBpbnB1dCA9IHRoaXMud3JhcHBlci5xdWVyeVNlbGVjdG9yKFwiaW5wdXRcIilcbiAgICAgIGlmIChpbnB1dCkge1xuICAgICAgICBpbnB1dC5wbGFjZWhvbGRlciA9IHBsYWNlaG9sZGVyXG4gICAgICB9ICAgICAgXG4gICAgfVxuICB9XG5cbiAgcHVibGljIHJlbmRlcigpIHtcbiAgICBjb25zdCB7XG4gICAgICBhdXRvQ2xlYXJTZWFyY2hWYWx1ZSxcbiAgICAgIGNsYXNzTmFtZSxcbiAgICAgIG1heFRhZ0NvdW50LFxuICAgICAgbXVsdGlwbGUsXG4gICAgICBwbGFjZW1lbnQsXG4gICAgICBwbGFjZWhvbGRlcixcbiAgICAgIHJpZ2h0SWNvbixcbiAgICAgIHJlc3VsdFZpc2libGUsXG4gICAgICBzaG93Q2hlY2tlZFN0cmF0ZWd5LFxuICAgICAgLi4ub3RoZXJQcm9wc1xuICAgIH0gPSB0aGlzLnByb3BzXG5cbiAgICBjb25zdCByZXN0UHJvcHM6IGFueSA9IG9taXQob3RoZXJQcm9wcywgW1xuICAgICAgXCJjaGlsZHJlblwiLFxuICAgICAgXCJvbkNoYW5nZVwiLFxuICAgICAgXCJvblNlYXJjaFwiLFxuICAgICAgXCJ2YWx1ZVwiLFxuICAgIF0pXG5cbiAgICBjb25zdCB7XG4gICAgICBub2Rlc1RvUmVuZGVyLFxuICAgICAgdmFsdWUsXG4gICAgfSA9IHRoaXMuc3RhdGVcblxuICAgIGNvbnN0IGNsYXNzU2V0ID0gY2xhc3NOYW1lcyhcbiAgICAgIGNsYXNzTmFtZSxcbiAgICAgIGAke3ByZWZpeH0td3JhcHBlcmAsXG4gICAgICB7XG4gICAgICAgIFtgJHtwcmVmaXh9X3Jlc3VsdEhpZGRlbmBdOiAhcmVzdWx0VmlzaWJsZSxcbiAgICAgIH1cbiAgICApXG5cbiAgICBsZXQgY2hlY2tib3g6IGFueSA9IG11bHRpcGxlXG4gICAgaWYgKG11bHRpcGxlKSB7XG4gICAgICBjaGVja2JveCA9IChcbiAgICAgICAgPGRpdj5cbiAgICAgICAgICA8c3ZnIHdpZHRoPVwiMTJcIiBoZWlnaHQ9XCIxMFwiIGNsYXNzTmFtZT1cImFkdWktdHJlZS1zZWxlY3QtdHJlZS1jaGVja2JveC1pbmRldGVybWluYXRlU3ZnXCI+XG4gICAgICAgICAgICA8cmVjdCB4PVwiMVwiIHk9XCI0XCIgd2lkdGg9XCIxMFwiIGhlaWdodD1cIjJcIiByeD1cIi41XCIgZmlsbD1cIiNmZmZcIiBmaWxsUnVsZT1cImV2ZW5vZGRcIiAvPlxuICAgICAgICAgIDwvc3ZnPlxuICAgICAgICAgIDxzdmcgd2lkdGg9XCIxMlwiIGhlaWdodD1cIjEwXCIgY2xhc3NOYW1lPVwiYWR1aS10cmVlLXNlbGVjdC10cmVlLWNoZWNrYm94LWNoZWNrZWRTdmdcIj5cbiAgICAgICAgICAgIDxwYXRoXG4gICAgICAgICAgICAgIGQ9XCJNLjYxOCA1LjgyN2EuNDYzLjQ2MyAwIDAgMS0uMDItLjY3NWwuODA0LS44MDRhLjUyLjUyIDAgMCAxIC43MTYtLjAxTDQuNzUgNi43NWw0LjkyMi01LjYyNWEuNTEzLjUxMyAwIDAgMSAuNzA3LS4wNmwuNzQyLjYyYS40NzguNDc4IDAgMCAxIC4wNDQuNjg3bC02LjA4IDYuNzU2YS41MDYuNTA2IDAgMCAxLS43MDMuMDQ1TC42MTggNS44Mjd6XCJcbiAgICAgICAgICAgICAgZmlsbFJ1bGU9XCJldmVub2RkXCJcbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgPC9zdmc+XG4gICAgICAgIDwvZGl2PlxuICAgICAgKVxuICAgIH1cblxuICAgIGlmICh2YWx1ZSAhPT0gbnVsbCkge1xuICAgICAgcmVzdFByb3BzLnZhbHVlID0gdmFsdWVcbiAgICB9XG5cbiAgICBpZiAobWF4VGFnQ291bnQgIT09IG51bGwpIHtcbiAgICAgIGNvbnN0IGNvdW50ID0gdGhpcy5nZXRNYXhUYWdDb3VudCgpXG4gICAgICBpZiAoY291bnQgIT09IG51bGwpIHtcbiAgICAgICAgcmVzdFByb3BzLm1heFRhZ0NvdW50ID0gY291bnRcbiAgICAgIH1cbiAgICB9XG5cbiAgICBjb25zb2xlLmxvZyh0aGlzLmdldFRyZWVOb2Rlc1RvUmVuZGVyKG5vZGVzVG9SZW5kZXIpLCBcIuacgOWQjiByZW5kZXJcIilcblxuICAgIHJldHVybiAoXG4gICAgICA8ZGl2XG4gICAgICAgIGNsYXNzTmFtZT17Y2xhc3NOYW1lcyhcImFkdWktdHJlZS1zZWxlY3Qtd3JhcHBlclwiLCB7XG4gICAgICAgICAgJ2FkdWktdHJlZS1zZWxlY3Qtd3JhcHBlci1tYXhUYWcnOiB0aGlzLmdldE1heFRhZ0NvdW50KCkgIT09IG51bGwsXG4gICAgICAgIH0pfVxuICAgICAgICByZWY9e3RoaXMuc2F2ZVdyYXBwZXJ9XG4gICAgICA+XG4gICAgICAgIDxSY1RyZWVTZWxlY3RcbiAgICAgICAgICBhdXRvQ2xlYXJTZWFyY2hWYWx1ZT17YXV0b0NsZWFyU2VhcmNoVmFsdWV9XG4gICAgICAgICAgY2xhc3NOYW1lPXtjbGFzc1NldH1cbiAgICAgICAgICBkcm9wZG93blBvcHVwQWxpZ249e3BsYWNlbWVudCAmJiBnZXRQbGFjZW1lbnRzKHsgYWxpZ25FZGdlOiB0cnVlIH0pW3BsYWNlbWVudF19XG4gICAgICAgICAgZmlsdGVyVHJlZU5vZGU9e3RoaXMuZmlsdGVyVHJlZU5vZGV9XG4gICAgICAgICAgaW5wdXRJY29uPXs8SWNvbiBpY29uPVwidHJpYW5nbGUtZG93blwiIC8+fVxuICAgICAgICAgIG1heFRhZ1BsYWNlaG9sZGVyPXt0aGlzLmdldE1heFRhZ1BsYWNlaG9sZGVyfVxuICAgICAgICAgIG5vdEZvdW5kQ29udGVudD1cIuaXoOWMuemFjee7k+aenFwiXG4gICAgICAgICAgb25DaGFuZ2U9e3RoaXMuaGFuZGxlQ2hhbmdlfVxuICAgICAgICAgIG9uU2VhcmNoPXt0aGlzLmhhbmRsZVNlYXJjaH1cbiAgICAgICAgICBwbGFjZWhvbGRlcj17cGxhY2Vob2xkZXJ9XG4gICAgICAgICAgcHJlZml4Q2xzPVwiYWR1aS10cmVlLXNlbGVjdFwiXG4gICAgICAgICAgcmVmPXt0aGlzLnNhdmVTZWxlY3R9XG4gICAgICAgICAgcmVtb3ZlSWNvbj17PEljb24gaWNvbj1cImNhbmNlbFwiIGludGVyYWN0aXZlIHNpemU9ezE0fSBzdHlsZT17eyBkaXNwbGF5OiBcImJsb2NrXCIgfX0gLz59XG4gICAgICAgICAgc2VhcmNoUGxhY2Vob2xkZXI9XCLmkJzntKJcIlxuICAgICAgICAgIHNob3dDaGVja2VkU3RyYXRlZ3k9e3Nob3dDaGVja2VkU3RyYXRlZ3kgJiYgc3RyYXRlZ2llc1tzaG93Q2hlY2tlZFN0cmF0ZWd5XX1cbiAgICAgICAgICBzaG93U2VhcmNoPXttdWx0aXBsZX1cbiAgICAgICAgICBzd2l0Y2hlckljb249e3RoaXMucmVuZGVyU3dpdGNoZXJJY29ufVxuICAgICAgICAgIHRyYW5zaXRpb25OYW1lPVwic2xpZGUtdXBcIlxuICAgICAgICAgIHRyZWVDaGVja2FibGU9e2NoZWNrYm94fVxuICAgICAgICAgIHRyZWVOb2RlRmlsdGVyUHJvcD1cInRpdGxlXCJcbiAgICAgICAgICB7Li4ucmVzdFByb3BzfVxuICAgICAgICA+XG4gICAgICAgICAgeyB0aGlzLmdldFRyZWVOb2Rlc1RvUmVuZGVyKG5vZGVzVG9SZW5kZXIpIH1cbiAgICAgICAgPC9SY1RyZWVTZWxlY3Q+XG4gICAgICAgIHshIXJpZ2h0SWNvbiAmJiA8SWNvbiBpY29uPXtyaWdodEljb259IGNsYXNzTmFtZT1cImFkdWktdHJlZS1zZWxlY3QtaWNvblwiIC8+fVxuICAgICAgPC9kaXY+XG4gICAgKVxuICB9XG59XG5cbnBvbHlmaWxsKFRyZWVTZWxlY3QpXG5cbmV4cG9ydCBkZWZhdWx0IFRyZWVTZWxlY3QiXX0=
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL2NvbXBvbmVudHMvdHJlZS1zZWxlY3QvVHJlZVNlbGVjdC50c3giXSwibmFtZXMiOlsicHJlZml4Iiwibm9vcCIsInN0cmF0ZWdpZXMiLCJTSE9XX0FMTCIsIlNIT1dfQ0hJTEQiLCJTSE9XX1BBUkVOVCIsIlRyZWVTZWxlY3QiLCJwcm9wcyIsInNlbGVjdCIsIndyYXBwZXIiLCJzaG91bGRDb21wb25lbnRVcGRhdGUiLCJuZXh0UHJvcHMiLCJuZXh0U3RhdGUiLCJzdGF0ZSIsInNhdmVTZWxlY3QiLCJub2RlIiwic2F2ZVdyYXBwZXIiLCJyZW5kZXJTd2l0Y2hlckljb24iLCJpc0xlYWYiLCJoYW5kbGVDaGFuZ2UiLCJ2YWx1ZSIsImRvY3VtZW50IiwiYWN0aXZlRWxlbWVudCIsInRhZ05hbWUiLCJ0b1VwcGVyQ2FzZSIsImRpc2FibGVkIiwib25DaGFuZ2UiLCJ2YWx1ZVByb3AiLCJzZXRTdGF0ZSIsImhhbmRsZVNlYXJjaCIsInZhbCIsIm9uU2VhcmNoIiwic2V0VGltZW91dCIsInNlbGVjdFRyaWdnZXJSZWYiLCJsaXN0IiwiY3VycmVudCIsInRyaWdnZXJSZWYiLCJfY29tcG9uZW50Iiwicm9vdE5vZGUiLCJpdGVtcyIsInF1ZXJ5U2VsZWN0b3JBbGwiLCJmb3JFYWNoIiwiaXRlbSIsInJlcGxhY2VtZW50Iiwic3RyIiwicmVwbGFjZSIsInNvdXJjZUh0bWwiLCJkYXRhc2V0IiwiaHRtbCIsImlubmVySFRNTCIsImluZGV4T2YiLCJjb21tZW50RW5kSW5kZXgiLCJzdWJzdHIiLCJmaWx0ZXJUcmVlTm9kZSIsImlucHV0Iiwia2V5IiwiU3RyaW5nIiwidGl0bGUiLCJpbmNsdWRlcyIsImdldE1heFRhZ0NvdW50IiwibWF4VGFnQ291bnQiLCJsZW5ndGgiLCJnZXRNYXhUYWdQbGFjZWhvbGRlciIsIm5vZGVzIiwidmFsdWVzIiwiT2JqZWN0IiwiZW50cmllcyIsInZhbHVlRW50aXRpZXMiLCJwbGFjZWhvbGRlckZpcnN0T2JqZWN0IiwiZmluZCIsIm8iLCJwbGFjZWhvbGRlclRleHQiLCJtYXAiLCJpIiwiZm91bmRJdGVtIiwic3BsaWNlIiwiZSIsInN0b3BQcm9wYWdhdGlvbiIsImNvbXBvbmVudERpZE1vdW50IiwicGxhY2Vob2xkZXIiLCJyZXN1bHRWaXNpYmxlIiwiZm9yY2VVcGRhdGUiLCJxdWVyeVNlbGVjdG9yIiwiZGVmYXVsdFZhbHVlIiwidmFsdWVTdGF0ZSIsImF1dG9DbGVhclNlYXJjaFZhbHVlIiwiY2xhc3NOYW1lIiwibXVsdGlwbGUiLCJwbGFjZW1lbnQiLCJyaWdodEljb24iLCJzaG93Q2hlY2tlZFN0cmF0ZWd5Iiwib3RoZXJQcm9wcyIsInJlc3RQcm9wcyIsImNsYXNzU2V0IiwiY2hlY2tib3giLCJjb3VudCIsImFsaWduRWRnZSIsImRpc3BsYXkiLCJSZWFjdCIsIkNvbXBvbmVudCIsInByb3BUeXBlcyIsIlByb3BUeXBlcyIsImJvb2wiLCJzdHJpbmciLCJvbmVPZlR5cGUiLCJhcnJheSIsIm51bWJlciIsImZ1bmMiLCJvbmVPZiIsImRlZmF1bHRQcm9wcyIsInVuZGVmaW5lZCIsImdldERlcml2ZWRTdGF0ZUZyb21Qcm9wcyIsIlRyZWVOb2RlIl0sIm1hcHBpbmdzIjoiOzs7Ozs7O0FBQUE7O0FBQ0E7O0FBS0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBRUE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBRUEsSUFBTUEsTUFBTSxHQUFHLGtCQUFmOztBQUNBLElBQU1DLElBQUksR0FBRyxTQUFQQSxJQUFPLEdBQU0sQ0FBRSxDQUFyQjs7QUFFQSxJQUFNQyxVQUFVLEdBQUc7QUFDakIsY0FBWUMsc0JBREs7QUFFakIsZ0JBQWNDLHdCQUZHO0FBR2pCLGlCQUFlQztBQUhFLENBQW5COztJQWlETUMsVTs7O0FBd0dKLHNCQUFZQyxNQUFaLEVBQXFDO0FBQUE7O0FBQUE7O0FBQ25DLG9GQUFNQSxNQUFOO0FBRG1DLFVBSjlCQyxNQUk4QjtBQUFBLFVBRjlCQyxPQUU4Qjs7QUFBQSxVQVM5QkMscUJBVDhCLEdBU04sVUFBQ0MsU0FBRCxFQUE4QkMsU0FBOUI7QUFBQSxhQUM3QixDQUFDLDhCQUFhLE1BQUtMLEtBQWxCLEVBQXlCSSxTQUF6QixDQUFELElBQXdDLENBQUMsOEJBQWEsTUFBS0UsS0FBbEIsRUFBeUJELFNBQXpCLENBRFo7QUFBQSxLQVRNOztBQUFBLFVBYTlCRSxVQWI4QixHQWFqQixVQUFDQyxJQUFELEVBQTJCO0FBQzdDLFlBQUtQLE1BQUwsR0FBY08sSUFBZDtBQUNELEtBZm9DOztBQUFBLFVBaUI5QkMsV0FqQjhCLEdBaUJoQixVQUFDRCxJQUFELEVBQTBCO0FBQzdDLFlBQUtOLE9BQUwsR0FBZU0sSUFBZjtBQUNELEtBbkJvQzs7QUFBQSxVQXFCOUJFLGtCQXJCOEIsR0FxQlQsVUFBQ1YsS0FBRCxFQUEyQjtBQUFBLFVBQzdDVyxNQUQ2QyxHQUNsQ1gsS0FEa0MsQ0FDN0NXLE1BRDZDOztBQUVyRCxVQUFJQSxNQUFKLEVBQVk7QUFDVixlQUFPLElBQVA7QUFDRDs7QUFDRCxhQUFPLG9CQUFDLGdCQUFEO0FBQU0sUUFBQSxJQUFJLEVBQUMsYUFBWDtBQUF5QixRQUFBLFNBQVMsRUFBQztBQUFuQyxRQUFQO0FBQ0QsS0EzQm9DOztBQUFBLFVBNkI5QkMsWUE3QjhCLEdBNkJmLFVBQUNDLEtBQUQsRUFBMEI7QUFDOUMsVUFBSUMsUUFBUSxDQUFDQyxhQUFULElBQTBCRCxRQUFRLENBQUNDLGFBQVQsQ0FBdUJDLE9BQXZCLENBQStCQyxXQUEvQixPQUFpRCxPQUEvRSxFQUF3RjtBQUN0RjtBQUNEOztBQUg2Qyx3QkFTMUMsTUFBS2pCLEtBVHFDO0FBQUEsVUFNNUNrQixRQU40QyxlQU01Q0EsUUFONEM7QUFBQSxVQU81Q0MsUUFQNEMsZUFPNUNBLFFBUDRDO0FBQUEsVUFRckNDLFNBUnFDLGVBUTVDUCxLQVI0Qzs7QUFVOUMsVUFBSSxDQUFDSyxRQUFMLEVBQWU7QUFDYixZQUFJRSxTQUFTLEtBQUssSUFBbEIsRUFBd0I7QUFDdEIsZ0JBQUtDLFFBQUwsQ0FBYztBQUFFUixZQUFBQSxLQUFLLEVBQUxBO0FBQUYsV0FBZDtBQUNEOztBQUNELFlBQUlNLFFBQUosRUFBYztBQUNaQSxVQUFBQSxRQUFRLENBQUNOLEtBQUQsQ0FBUjtBQUNEO0FBQ0Y7QUFDRixLQS9Db0M7O0FBQUEsVUFpRDlCUyxZQWpEOEIsR0FpRGYsVUFBQ0MsR0FBRCxFQUFpQjtBQUFBLFVBQzdCQyxRQUQ2QixHQUNoQixNQUFLeEIsS0FEVyxDQUM3QndCLFFBRDZCOztBQUVyQyxVQUFJQSxRQUFKLEVBQWM7QUFDWkEsUUFBQUEsUUFBUSxDQUFDRCxHQUFELENBQVI7QUFDRDs7QUFFREUsTUFBQUEsVUFBVSxDQUFDLFlBQU07QUFJZixZQUFJLE1BQUt4QixNQUFMLElBQWUsTUFBS0EsTUFBTCxDQUFZeUIsZ0JBQS9CLEVBQWlEO0FBRy9DLGNBQU1DLElBQUksR0FBRyxNQUFLMUIsTUFBTCxDQUFZeUIsZ0JBQVosQ0FBNkJFLE9BQTdCLENBQXFDQyxVQUFyQyxDQUFnREQsT0FBaEQsQ0FBd0RFLFVBQXhELENBQW1FQyxRQUFoRjtBQUNBLGNBQU1DLEtBQUssR0FBR0wsSUFBSSxDQUFDTSxnQkFBTCxDQUFzQiw4QkFBdEIsQ0FBZDtBQUNBRCxVQUFBQSxLQUFLLENBQUNFLE9BQU4sQ0FBYyxVQUFDQyxJQUFELEVBQXVCO0FBQ25DLGdCQUFNQyxXQUFXLEdBQUcsU0FBZEEsV0FBYyxDQUFDQyxHQUFEO0FBQUEscUJBQWlCQSxHQUFHLENBQUNDLE9BQUosQ0FBWWYsR0FBWix5REFBK0RBLEdBQS9ELGFBQWpCO0FBQUEsYUFBcEI7O0FBQ0EsZ0JBQUlnQixVQUFVLEdBQUdKLElBQUksQ0FBQ0ssT0FBTCxDQUFhQyxJQUE5Qjs7QUFDQSxnQkFBSSxDQUFDRixVQUFMLEVBQWlCO0FBQ2ZBLGNBQUFBLFVBQVUsR0FBR0osSUFBSSxDQUFDTyxTQUFsQjtBQUNBUCxjQUFBQSxJQUFJLENBQUNLLE9BQUwsQ0FBYUMsSUFBYixHQUFvQk4sSUFBSSxDQUFDTyxTQUF6QjtBQUNEOztBQUNELGdCQUFJUCxJQUFJLENBQUNPLFNBQUwsS0FBbUIsT0FBdkIsRUFBZ0M7QUFDOUIsa0JBQUluQixHQUFKLEVBQVM7QUFFUCxvQkFBSWdCLFVBQVUsQ0FBQ0ksT0FBWCxDQUFtQixrQkFBbkIsTUFBMkMsQ0FBL0MsRUFBa0Q7QUFDaEQsc0JBQU1DLGVBQWUsR0FBR0wsVUFBVSxDQUFDSSxPQUFYLENBQW1CLEtBQW5CLENBQXhCOztBQUNBLHNCQUFJSixVQUFVLENBQUNJLE9BQVgsQ0FBbUJwQixHQUFuQixJQUEwQnFCLGVBQTlCLEVBQStDO0FBQzdDVCxvQkFBQUEsSUFBSSxDQUFDTyxTQUFMLEdBQWlCSCxVQUFVLENBQUNNLE1BQVgsQ0FBa0IsQ0FBbEIsRUFBcUJELGVBQWUsR0FBRyxDQUF2QyxJQUE0Q1IsV0FBVyxDQUFDRyxVQUFVLENBQUNNLE1BQVgsQ0FBa0JELGVBQWUsR0FBRyxDQUFwQyxDQUFELENBQXhFO0FBQ0QsbUJBRkQsTUFFTztBQUNMVCxvQkFBQUEsSUFBSSxDQUFDTyxTQUFMLEdBQWlCTixXQUFXLENBQUNHLFVBQUQsQ0FBNUI7QUFDRDtBQUNGLGlCQVBELE1BT087QUFDTEosa0JBQUFBLElBQUksQ0FBQ08sU0FBTCxHQUFpQk4sV0FBVyxDQUFDRyxVQUFELENBQTVCO0FBQ0Q7QUFDRixlQVpELE1BWU87QUFDTEosZ0JBQUFBLElBQUksQ0FBQ08sU0FBTCxHQUFpQkgsVUFBakI7QUFDRDtBQUNGO0FBQ0YsV0F4QkQ7QUF5QkQ7QUFDRixPQW5DUyxFQW1DUCxDQW5DTyxDQUFWO0FBb0NELEtBM0ZvQzs7QUFBQSxVQTZGOUJPLGNBN0Y4QixHQTZGYixVQUFDQyxLQUFELFFBQXdDO0FBQUEsVUFBdEJDLEdBQXNCLFFBQXRCQSxHQUFzQjtBQUFBLFVBQWpCaEQsS0FBaUIsUUFBakJBLEtBQWlCOztBQUM5RCxVQUFJLENBQUNBLEtBQUwsRUFBWTtBQUNWLGVBQU8sS0FBUDtBQUNEOztBQUg2RCxVQUl0RGEsS0FKc0QsR0FJNUNiLEtBSjRDLENBSXREYSxLQUpzRDs7QUFLOUQsVUFBSSxDQUFDbUMsR0FBRCxJQUFRLENBQUNuQyxLQUFiLEVBQW9CO0FBQ2xCLGVBQU8sS0FBUDtBQUNEOztBQUNELGFBQU9vQyxNQUFNLENBQUNqRCxLQUFLLENBQUNrRCxLQUFQLENBQU4sQ0FBb0JDLFFBQXBCLENBQTZCSixLQUE3QixDQUFQO0FBQ0QsS0F0R29DOztBQUFBLFVBd0c5QkssY0F4RzhCLEdBd0diLFlBQU07QUFBQSxVQUNwQkMsV0FEb0IsR0FDSixNQUFLckQsS0FERCxDQUNwQnFELFdBRG9CO0FBQUEsVUFFcEJ4QyxLQUZvQixHQUVWLE1BQUtQLEtBRkssQ0FFcEJPLEtBRm9COztBQUk1QixVQUFJLENBQUN3QyxXQUFELElBQWdCLENBQUN4QyxLQUFqQixJQUEwQkEsS0FBSyxDQUFDeUMsTUFBTixJQUFnQkQsV0FBOUMsRUFBMkQ7QUFDekQsZUFBTyxJQUFQO0FBQ0Q7O0FBQ0QsYUFBTyxDQUFQO0FBQ0QsS0FoSG9DOztBQUFBLFVBa0g5QkUsb0JBbEg4QixHQWtIUCxVQUFDQyxLQUFELEVBQXFCO0FBQ2pELFVBQUksQ0FBQyxNQUFLdkQsTUFBVixFQUFrQjtBQUNoQixlQUFPLElBQVA7QUFDRDs7QUFIZ0QseUJBU3JCLE1BQUtELEtBVGdCO0FBQUEsVUFTekNtQixRQVR5QyxnQkFTekNBLFFBVHlDO0FBQUEsVUFTL0JOLEtBVCtCLGdCQVMvQkEsS0FUK0I7QUFBQSxVQVV6Q3lDLE1BVnlDLEdBVTlCRSxLQVY4QixDQVV6Q0YsTUFWeUM7QUFZakQsVUFBTUcsTUFBNEIsR0FBR0MsTUFBTSxDQUFDQyxPQUFQLENBQWUsTUFBSzFELE1BQUwsQ0FBWUssS0FBWixDQUFrQnNELGFBQWpDLENBQXJDO0FBQ0EsVUFBTUMsc0JBQXNCLEdBQUVKLE1BQU0sQ0FBQ0ssSUFBUCxDQUFZLFVBQUFDLENBQUM7QUFBQSxlQUFJQSxDQUFDLENBQUMsQ0FBRCxDQUFELEtBQVNQLEtBQUssQ0FBQyxDQUFELENBQWxCO0FBQUEsT0FBYixDQUE5QjtBQUNBLFVBQU1RLGVBQWUsYUFBTUgsc0JBQXNCLEdBQUdBLHNCQUFzQixDQUFDLENBQUQsQ0FBdEIsQ0FBMEJyRCxJQUExQixDQUErQlIsS0FBL0IsQ0FBcUNrRCxLQUF4QyxHQUFnRE0sS0FBSyxDQUFDLENBQUQsQ0FBakYsc0JBQTJGRixNQUEzRixXQUFyQjtBQUVBLGFBQ0Usb0JBQUMsbUJBQUQ7QUFDRSxRQUFBLFNBQVMsRUFBRSxLQURiO0FBRUUsUUFBQSxTQUFTLEVBQUMsS0FGWjtBQUdFLFFBQUEsS0FBSyxFQUNIRSxLQUFLLENBQUNTLEdBQU4sQ0FBVSxVQUFDekQsSUFBRCxFQUFPMEQsQ0FBUCxFQUFhO0FBQ3JCLGNBQU1DLFNBQVMsR0FBR1YsTUFBTSxDQUFDSyxJQUFQLENBQVksVUFBQUMsQ0FBQztBQUFBLG1CQUFJQSxDQUFDLENBQUMsQ0FBRCxDQUFELEtBQVN2RCxJQUFiO0FBQUEsV0FBYixDQUFsQjtBQUNBLGNBQUkwQyxLQUFLLEdBQUcxQyxJQUFaOztBQUNBLGNBQUkyRCxTQUFKLEVBQWU7QUFDVmpCLFlBQUFBLEtBRFUsR0FDQWlCLFNBQVMsQ0FBQyxDQUFELENBQVQsQ0FBYTNELElBQWIsQ0FBa0JSLEtBRGxCLENBQ1ZrRCxLQURVO0FBRWQ7O0FBQ0QsaUJBQ0U7QUFDRSxZQUFBLFNBQVMsRUFBQyxrQ0FEWjtBQUVFLFlBQUEsR0FBRyxFQUFFMUM7QUFGUCxhQUlFLGtDQUFRMEMsS0FBSyxJQUFJMUMsSUFBakIsQ0FKRixFQUtFLG9CQUFDLGdCQUFEO0FBQ0UsWUFBQSxJQUFJLEVBQUMsUUFEUDtBQUVFLFlBQUEsT0FBTyxFQUFFLG1CQUFNO0FBQ2JnRCxjQUFBQSxLQUFLLENBQUNZLE1BQU4sQ0FBYUYsQ0FBYixFQUFnQixDQUFoQjs7QUFDQSxrQkFBSXJELEtBQUssS0FBSyxJQUFkLEVBQW9CO0FBQ2xCLHNCQUFLUSxRQUFMLENBQWM7QUFBRVIsa0JBQUFBLEtBQUssRUFBRTJDO0FBQVQsaUJBQWQ7QUFDRDs7QUFDRCxrQkFBSXJDLFFBQUosRUFBYztBQUNaQSxnQkFBQUEsUUFBUSxDQUFDcUMsS0FBRCxDQUFSO0FBQ0Q7QUFDRjtBQVZILFlBTEYsQ0FERjtBQW9CRCxTQTFCRCxDQUpKO0FBZ0NFLFFBQUEsY0FBYyxFQUFDO0FBaENqQixTQWtDRTtBQUNFLFFBQUEsU0FBUyxFQUFDLGlDQURaO0FBRUUsUUFBQSxJQUFJLEVBQUMsTUFGUDtBQUdFLFFBQUEsT0FBTyxFQUFFLGlCQUFBYSxDQUFDO0FBQUEsaUJBQUlBLENBQUMsQ0FBQ0MsZUFBRixFQUFKO0FBQUE7QUFIWixTQUtJTixlQUxKLEVBTUUsb0JBQUMsZ0JBQUQ7QUFDRSxRQUFBLElBQUksRUFBQyxRQURQO0FBRUUsUUFBQSxJQUFJLEVBQUUsRUFGUjtBQUdFLFFBQUEsT0FBTyxFQUFFLG1CQUFNO0FBQ2IsY0FBSW5ELEtBQUssS0FBSyxJQUFkLEVBQW9CO0FBQ2xCLGtCQUFLUSxRQUFMLENBQWM7QUFBRVIsY0FBQUEsS0FBSyxFQUFFO0FBQVQsYUFBZDtBQUNEOztBQUNELGNBQUlNLFFBQUosRUFBYztBQUNaQSxZQUFBQSxRQUFRLENBQUMsRUFBRCxDQUFSO0FBQ0Q7QUFDRjtBQVZILFFBTkYsQ0FsQ0YsQ0FERjtBQXdERCxLQTFMb0M7O0FBQUEsVUE0TDlCb0QsaUJBNUw4QixHQTRMVixZQUFNO0FBQUEseUJBQ3FCLE1BQUt2RSxLQUQxQjtBQUFBLFVBQ3ZCcUQsV0FEdUIsZ0JBQ3ZCQSxXQUR1QjtBQUFBLFVBQ1ZtQixXQURVLGdCQUNWQSxXQURVO0FBQUEsVUFDR0MsYUFESCxnQkFDR0EsYUFESDtBQUFBLFVBRXZCNUQsS0FGdUIsR0FFYixNQUFLUCxLQUZRLENBRXZCTyxLQUZ1Qjs7QUFHL0IsVUFBSXdDLFdBQVcsS0FBSyxJQUFoQixJQUF3QnhDLEtBQTVCLEVBQW1DO0FBQ2pDLGNBQUs2RCxXQUFMO0FBQ0Q7O0FBQ0QsVUFBSSxDQUFDRCxhQUFELElBQWtCLE1BQUt2RSxPQUEzQixFQUFvQztBQUNsQyxZQUFNNkMsS0FBSyxHQUFHLE1BQUs3QyxPQUFMLENBQWF5RSxhQUFiLENBQTJCLE9BQTNCLENBQWQ7O0FBQ0EsWUFBSTVCLEtBQUosRUFBVztBQUNUQSxVQUFBQSxLQUFLLENBQUN5QixXQUFOLEdBQW9CQSxXQUFwQjtBQUNEO0FBQ0Y7QUFDRixLQXhNb0M7O0FBQUEsUUFFM0IzRCxNQUYyQixHQUVIYixNQUZHLENBRTNCYSxLQUYyQjtBQUFBLFFBRXBCK0QsWUFGb0IsR0FFSDVFLE1BRkcsQ0FFcEI0RSxZQUZvQjtBQUduQyxRQUFNQyxVQUFVLEdBQUdoRSxNQUFLLEtBQUssSUFBVixHQUFpQkEsTUFBakIsR0FBeUIrRCxZQUE1QztBQUNBLFVBQUt0RSxLQUFMLEdBQWE7QUFDWE8sTUFBQUEsS0FBSyxFQUFFZ0U7QUFESSxLQUFiO0FBSm1DO0FBT3BDOzs7OzZCQW1NZTtBQUFBLHlCQVlWLEtBQUs3RSxLQVpLO0FBQUEsVUFFWjhFLG9CQUZZLGdCQUVaQSxvQkFGWTtBQUFBLFVBR1pDLFNBSFksZ0JBR1pBLFNBSFk7QUFBQSxVQUlaMUIsV0FKWSxnQkFJWkEsV0FKWTtBQUFBLFVBS1oyQixRQUxZLGdCQUtaQSxRQUxZO0FBQUEsVUFNWkMsU0FOWSxnQkFNWkEsU0FOWTtBQUFBLFVBT1pULFdBUFksZ0JBT1pBLFdBUFk7QUFBQSxVQVFaVSxTQVJZLGdCQVFaQSxTQVJZO0FBQUEsVUFTWlQsYUFUWSxnQkFTWkEsYUFUWTtBQUFBLFVBVVpVLG1CQVZZLGdCQVVaQSxtQkFWWTtBQUFBLFVBV1RDLFVBWFM7O0FBY2QsVUFBTUMsU0FBYyxHQUFHLHNCQUFLRCxVQUFMLEVBQWlCLENBQ3RDLFVBRHNDLEVBRXRDLFVBRnNDLEVBR3RDLE9BSHNDLENBQWpCLENBQXZCO0FBZGMsVUFxQlp2RSxLQXJCWSxHQXNCVixLQUFLUCxLQXRCSyxDQXFCWk8sS0FyQlk7QUF3QmQsVUFBTXlFLFFBQVEsR0FBRyw0QkFDZlAsU0FEZSxZQUVadEYsTUFGWSw2Q0FJVEEsTUFKUyxvQkFJZSxDQUFDZ0YsYUFKaEIsRUFBakI7QUFRQSxVQUFJYyxRQUFhLEdBQUdQLFFBQXBCOztBQUNBLFVBQUlBLFFBQUosRUFBYztBQUNaTyxRQUFBQSxRQUFRLEdBQ04saUNBQ0U7QUFBSyxVQUFBLEtBQUssRUFBQyxJQUFYO0FBQWdCLFVBQUEsTUFBTSxFQUFDLElBQXZCO0FBQTRCLFVBQUEsU0FBUyxFQUFDO0FBQXRDLFdBQ0U7QUFBTSxVQUFBLENBQUMsRUFBQyxHQUFSO0FBQVksVUFBQSxDQUFDLEVBQUMsR0FBZDtBQUFrQixVQUFBLEtBQUssRUFBQyxJQUF4QjtBQUE2QixVQUFBLE1BQU0sRUFBQyxHQUFwQztBQUF3QyxVQUFBLEVBQUUsRUFBQyxJQUEzQztBQUFnRCxVQUFBLElBQUksRUFBQyxNQUFyRDtBQUE0RCxVQUFBLFFBQVEsRUFBQztBQUFyRSxVQURGLENBREYsRUFJRTtBQUFLLFVBQUEsS0FBSyxFQUFDLElBQVg7QUFBZ0IsVUFBQSxNQUFNLEVBQUMsSUFBdkI7QUFBNEIsVUFBQSxTQUFTLEVBQUM7QUFBdEMsV0FDRTtBQUNFLFVBQUEsQ0FBQyxFQUFDLG1NQURKO0FBRUUsVUFBQSxRQUFRLEVBQUM7QUFGWCxVQURGLENBSkYsQ0FERjtBQWFEOztBQUVELFVBQUkxRSxLQUFLLEtBQUssSUFBZCxFQUFvQjtBQUNsQndFLFFBQUFBLFNBQVMsQ0FBQ3hFLEtBQVYsR0FBa0JBLEtBQWxCO0FBQ0Q7O0FBRUQsVUFBSXdDLFdBQVcsS0FBSyxJQUFwQixFQUEwQjtBQUN4QixZQUFNbUMsS0FBSyxHQUFHLEtBQUtwQyxjQUFMLEVBQWQ7O0FBQ0EsWUFBSW9DLEtBQUssS0FBSyxJQUFkLEVBQW9CO0FBQ2xCSCxVQUFBQSxTQUFTLENBQUNoQyxXQUFWLEdBQXdCbUMsS0FBeEI7QUFDRDtBQUNGOztBQUVELGFBQ0U7QUFDRSxRQUFBLFNBQVMsRUFBRSw0QkFBVywwQkFBWCxFQUF1QztBQUNoRCw2Q0FBbUMsS0FBS3BDLGNBQUwsT0FBMEI7QUFEYixTQUF2QyxDQURiO0FBSUUsUUFBQSxHQUFHLEVBQUUsS0FBSzNDO0FBSlosU0FNRSxvQkFBQyx3QkFBRDtBQUNFLFFBQUEsb0JBQW9CLEVBQUVxRSxvQkFEeEI7QUFFRSxRQUFBLFNBQVMsRUFBRVEsUUFGYjtBQUdFLFFBQUEsa0JBQWtCLEVBQUVMLFNBQVMsSUFBSSw0QkFBYztBQUFFUSxVQUFBQSxTQUFTLEVBQUU7QUFBYixTQUFkLEVBQW1DUixTQUFuQyxDQUhuQztBQUlFLFFBQUEsY0FBYyxFQUFFLEtBQUtuQyxjQUp2QjtBQUtFLFFBQUEsU0FBUyxFQUFFLG9CQUFDLGdCQUFEO0FBQU0sVUFBQSxJQUFJLEVBQUM7QUFBWCxVQUxiO0FBTUUsUUFBQSxpQkFBaUIsRUFBRSxLQUFLUyxvQkFOMUI7QUFPRSxRQUFBLGVBQWUsRUFBQyxnQ0FQbEI7QUFRRSxRQUFBLFFBQVEsRUFBRSxLQUFLM0MsWUFSakI7QUFTRSxRQUFBLFFBQVEsRUFBRSxLQUFLVSxZQVRqQjtBQVVFLFFBQUEsV0FBVyxFQUFFa0QsV0FWZjtBQVdFLFFBQUEsU0FBUyxFQUFDLGtCQVhaO0FBWUUsUUFBQSxHQUFHLEVBQUUsS0FBS2pFLFVBWlo7QUFhRSxRQUFBLFVBQVUsRUFBRSxvQkFBQyxnQkFBRDtBQUFNLFVBQUEsSUFBSSxFQUFDLFFBQVg7QUFBb0IsVUFBQSxXQUFXLE1BQS9CO0FBQWdDLFVBQUEsSUFBSSxFQUFFLEVBQXRDO0FBQTBDLFVBQUEsS0FBSyxFQUFFO0FBQUVtRixZQUFBQSxPQUFPLEVBQUU7QUFBWDtBQUFqRCxVQWJkO0FBY0UsUUFBQSxpQkFBaUIsRUFBQyxjQWRwQjtBQWVFLFFBQUEsbUJBQW1CLEVBQUVQLG1CQUFtQixJQUFJeEYsVUFBVSxDQUFDd0YsbUJBQUQsQ0FmeEQ7QUFnQkUsUUFBQSxVQUFVLEVBQUVILFFBaEJkO0FBaUJFLFFBQUEsWUFBWSxFQUFFLEtBQUt0RSxrQkFqQnJCO0FBa0JFLFFBQUEsY0FBYyxFQUFDLFVBbEJqQjtBQW1CRSxRQUFBLGFBQWEsRUFBRTZFLFFBbkJqQjtBQW9CRSxRQUFBLGtCQUFrQixFQUFDO0FBcEJyQixTQXFCTUYsU0FyQk4sRUFORixFQTZCRyxDQUFDLENBQUNILFNBQUYsSUFBZSxvQkFBQyxnQkFBRDtBQUFNLFFBQUEsSUFBSSxFQUFFQSxTQUFaO0FBQXVCLFFBQUEsU0FBUyxFQUFDO0FBQWpDLFFBN0JsQixDQURGO0FBaUNEOzs7O0VBL1lzQlMsS0FBSyxDQUFDQyxTOztBQUF6QjdGLFUsQ0FFVThGLFMsR0FBWTtBQUl4QmYsRUFBQUEsb0JBQW9CLEVBQUVnQixzQkFBVUMsSUFKUjtBQVF4QmhCLEVBQUFBLFNBQVMsRUFBRWUsc0JBQVVFLE1BUkc7QUFZeEJwQixFQUFBQSxZQUFZLEVBQUVrQixzQkFBVUcsU0FBVixDQUFvQixDQUNoQ0gsc0JBQVVFLE1BRHNCLEVBRWhDRixzQkFBVUksS0FGc0IsQ0FBcEIsQ0FaVTtBQW1CeEJoRixFQUFBQSxRQUFRLEVBQUU0RSxzQkFBVUMsSUFuQkk7QUF1QnhCMUMsRUFBQUEsV0FBVyxFQUFFeUMsc0JBQVVLLE1BdkJDO0FBMkJ4Qm5CLEVBQUFBLFFBQVEsRUFBRWMsc0JBQVVDLElBM0JJO0FBK0J4QjVFLEVBQUFBLFFBQVEsRUFBRTJFLHNCQUFVTSxJQS9CSTtBQW1DeEI1RSxFQUFBQSxRQUFRLEVBQUVzRSxzQkFBVU0sSUFuQ0k7QUF1Q3hCbkIsRUFBQUEsU0FBUyxFQUFFYSxzQkFBVU8sS0FBVixDQUFnQixDQUN6QixLQUR5QixFQUNsQixNQURrQixFQUNWLE9BRFUsRUFDRCxRQURDLEVBRXpCLFNBRnlCLEVBRWQsVUFGYyxFQUVGLFlBRkUsRUFFWSxhQUZaLEVBR3pCLFNBSHlCLEVBR2QsWUFIYyxFQUdBLFVBSEEsRUFHWSxhQUhaLENBQWhCLENBdkNhO0FBK0N4QjdCLEVBQUFBLFdBQVcsRUFBRXNCLHNCQUFVRSxNQS9DQztBQW1EeEJ2QixFQUFBQSxhQUFhLEVBQUVxQixzQkFBVUMsSUFuREQ7QUF1RHhCYixFQUFBQSxTQUFTLEVBQUVZLHNCQUFVRSxNQXZERztBQTJEeEJiLEVBQUFBLG1CQUFtQixFQUFFVyxzQkFBVU8sS0FBVixDQUFnQixDQUFDLFVBQUQsRUFBYSxhQUFiLEVBQTRCLFlBQTVCLENBQWhCLENBM0RHO0FBK0R4QnhGLEVBQUFBLEtBQUssRUFBRWlGLHNCQUFVRyxTQUFWLENBQW9CLENBQ3pCSCxzQkFBVUUsTUFEZSxFQUV6QkYsc0JBQVVJLEtBRmUsQ0FBcEI7QUEvRGlCLEM7QUFGdEJuRyxVLENBdUVVdUcsWSxHQUFpQztBQUM3Q3hCLEVBQUFBLG9CQUFvQixFQUFFLEtBRHVCO0FBRTdDQyxFQUFBQSxTQUFTLEVBQUV3QixTQUZrQztBQUc3QzNCLEVBQUFBLFlBQVksRUFBRSxJQUgrQjtBQUk3QzFELEVBQUFBLFFBQVEsRUFBRSxLQUptQztBQUs3Q21DLEVBQUFBLFdBQVcsRUFBRSxJQUxnQztBQU03QzJCLEVBQUFBLFFBQVEsRUFBRSxJQU5tQztBQU83QzdELEVBQUFBLFFBQVEsRUFBRXpCLElBUG1DO0FBUTdDOEIsRUFBQUEsUUFBUSxFQUFFOUIsSUFSbUM7QUFTN0N1RixFQUFBQSxTQUFTLEVBQUUsWUFUa0M7QUFVN0NULEVBQUFBLFdBQVcsRUFBRSxLQVZnQztBQVc3Q0MsRUFBQUEsYUFBYSxFQUFFLElBWDhCO0FBWTdDUyxFQUFBQSxTQUFTLEVBQUUsTUFaa0M7QUFhN0NDLEVBQUFBLG1CQUFtQixFQUFFLGFBYndCO0FBYzdDdEUsRUFBQUEsS0FBSyxFQUFFO0FBZHNDLEM7O0FBdkUzQ2QsVSxDQXdGVXlHLHdCLEdBQTJCLGlCQUFpQztBQUFBLE1BQTlCM0YsS0FBOEIsU0FBOUJBLEtBQThCOztBQUN4RSxNQUFJQSxLQUFLLEtBQUssSUFBZCxFQUFvQjtBQUNsQixXQUFPO0FBQ0xBLE1BQUFBLEtBQUssRUFBTEE7QUFESyxLQUFQO0FBR0Q7O0FBQ0QsU0FBTyxJQUFQO0FBQ0QsQzs7QUEvRkdkLFUsQ0FrR1UwRyxRLEdBQTRCQSxvQjtBQWdUNUMscUNBQVMxRyxVQUFUO2VBRWVBLFUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyBSZWFjdCBmcm9tICdyZWFjdCdcbmltcG9ydCBSY1RyZWVTZWxlY3QsIHtcbiAgU0hPV19BTEwsXG4gIFNIT1dfUEFSRU5ULFxuICBTSE9XX0NISUxELFxufSBmcm9tICdyYy10cmVlLXNlbGVjdCdcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSAncHJvcC10eXBlcydcbmltcG9ydCB7IHBvbHlmaWxsIH0gZnJvbSAncmVhY3QtbGlmZWN5Y2xlcy1jb21wYXQnXG5pbXBvcnQgc2hhbGxvd0VxdWFsIGZyb20gJ3NoYWxsb3dlcXVhbCdcbmltcG9ydCBjbGFzc05hbWVzIGZyb20gJ2NsYXNzbmFtZXMnXG5pbXBvcnQgb21pdCBmcm9tIFwiLi4vX3V0aWwvb21pdFwiXG5pbXBvcnQgVHJlZU5vZGUgZnJvbSAnLi9UcmVlTm9kZSdcbmltcG9ydCBJY29uIGZyb20gJy4uL2ljb24nXG5pbXBvcnQgUG9wb3ZlciBmcm9tICcuLi9wb3BvdmVyJ1xuaW1wb3J0IGdldFBsYWNlbWVudHMgZnJvbSAnLi4vdG9vbHRpcC9wbGFjZW1lbnRzJ1xuaW1wb3J0IHsgUGxhY2VtZW50IH0gZnJvbSBcIi4uL3BvcC10cmlnZ2VyXCJcbmltcG9ydCBcIi4vc3R5bGVcIlxuXG5jb25zdCBwcmVmaXggPSBcImFkdWktdHJlZS1zZWxlY3RcIlxuY29uc3Qgbm9vcCA9ICgpID0+IHt9XG5cbmNvbnN0IHN0cmF0ZWdpZXMgPSB7XG4gIFwic2hvdy1hbGxcIjogU0hPV19BTEwsXG4gIFwic2hvdy1jaGlsZFwiOiBTSE9XX0NISUxELFxuICBcInNob3ctcGFyZW50XCI6IFNIT1dfUEFSRU5ULFxufVxuXG5leHBvcnQgdHlwZSBUcmVlTm9kZVZhbHVlID0gc3RyaW5nW10gfCBudW1iZXJbXSB8IG51bGxcblxuZXhwb3J0IGludGVyZmFjZSBJVHJlZVNlbGVjdFByb3BzIHtcbiAgW2tleTogc3RyaW5nXTogYW55XG4gIGF1dG9DbGVhclNlYXJjaFZhbHVlPzogYm9vbGVhblxuICBjbGFzc05hbWU/OiBzdHJpbmdcbiAgZGVmYXVsdFZhbHVlPzogVHJlZU5vZGVWYWx1ZVxuICBkaXNhYmxlZD86IGJvb2xlYW5cbiAgbWF4VGFnQ291bnQ/OiBudWxsIHwgbnVtYmVyXG4gIG11bHRpcGxlPzogYm9vbGVhblxuICBvbkNoYW5nZT86ICh2YWx1ZTogVHJlZU5vZGVWYWx1ZSkgPT4gdm9pZFxuICBvblNlYXJjaD86ICh2YWx1ZTogc3RyaW5nKSA9PiB2b2lkXG4gIHBsYWNlbWVudD86IFBsYWNlbWVudFxuICByZXN1bHRWaXNpYmxlPzogYm9vbGVhblxuICBzaG93Q2hlY2tlZFN0cmF0ZWd5PzogXCJzaG93LWFsbFwiIHwgXCJzaG93LWNoaWxkXCIgfCBcInNob3ctcGFyZW50XCJcbiAgdmFsdWU/OiBUcmVlTm9kZVZhbHVlXG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSVRyZWVTZWxlY3RTdGF0ZSB7XG4gIHZhbHVlPzogVHJlZU5vZGVWYWx1ZVxufVxuXG5leHBvcnQgaW50ZXJmYWNlIElUcmVlTm9kZVByb3BzIHtcbiAgW2tleTogc3RyaW5nXTogYW55XG4gIGNsYXNzTmFtZT86IHN0cmluZ1xuICBjaGVja2FibGU/OiBib29sZWFuXG4gIGRpc2FibGVkPzogYm9vbGVhblxuICBkaXNhYmxlQ2hlY2tib3g/OiBib29sZWFuXG4gIHRpdGxlPzogc3RyaW5nIHwgUmVhY3QuUmVhY3ROb2RlXG4gIGtleT86IHN0cmluZ1xuICBldmVudEtleT86IHN0cmluZ1xuICBpc0xlYWY/OiBib29sZWFuXG4gIGNoZWNrZWQ/OiBib29sZWFuXG4gIGV4cGFuZGVkPzogYm9vbGVhblxuICBsb2FkaW5nPzogYm9vbGVhblxuICBzZWxlY3RlZD86IGJvb2xlYW5cbiAgc2VsZWN0YWJsZT86IGJvb2xlYW5cbiAgY2hpbGRyZW4/OiBSZWFjdC5SZWFjdE5vZGVcbn1cblxuLyoqXG4gKiDmoJHlvaLpgInmi6lcbiAqL1xuY2xhc3MgVHJlZVNlbGVjdCBleHRlbmRzIFJlYWN0LkNvbXBvbmVudDxJVHJlZVNlbGVjdFByb3BzLCBJVHJlZVNlbGVjdFN0YXRlPiB7XG5cbiAgcHVibGljIHN0YXRpYyBwcm9wVHlwZXMgPSB7XG4gICAgLyoqXG4gICAgICog5YC86KKr6YCJ5oup5ZCO77yM5piv5ZCm6ZyA6KaB5riF56m65pCc57Si5qGGXG4gICAgICovXG4gICAgYXV0b0NsZWFyU2VhcmNoVmFsdWU6IFByb3BUeXBlcy5ib29sLFxuICAgIC8qKlxuICAgICAqIOmZhOWKoOexu+WQjVxuICAgICAqL1xuICAgIGNsYXNzTmFtZTogUHJvcFR5cGVzLnN0cmluZyxcbiAgICAvKipcbiAgICAgKiDpu5jorqTpgInkuK3nmoQga2V5XG4gICAgICovXG4gICAgZGVmYXVsdFZhbHVlOiBQcm9wVHlwZXMub25lT2ZUeXBlKFtcbiAgICAgIFByb3BUeXBlcy5zdHJpbmcsXG4gICAgICBQcm9wVHlwZXMuYXJyYXksXG4gICAgXSksXG4gICAgLyoqXG4gICAgICog5piv5ZCm56aB55SoXG4gICAgICovXG4gICAgZGlzYWJsZWQ6IFByb3BUeXBlcy5ib29sLFxuICAgIC8qKlxuICAgICAqIOacgOWkmuaYvuekuuWkmuWwkeS4qiB0YWfvvIzlpoLmnpzotoXov4fkuobliJnku6XmlLbotbfnmoTlvaLlvI/lh7rnjrBcbiAgICAgKi9cbiAgICBtYXhUYWdDb3VudDogUHJvcFR5cGVzLm51bWJlcixcbiAgICAvKipcbiAgICAgKiDmmK/lkKblpJrpgInmqKHlvI9cbiAgICAgKi9cbiAgICBtdWx0aXBsZTogUHJvcFR5cGVzLmJvb2wsXG4gICAgLyoqXG4gICAgICog5YC85Y+Y5YyW5pe255qE5Zue6LCD77yM5Y+C5pWwOiB2YWx1ZVxuICAgICAqL1xuICAgIG9uQ2hhbmdlOiBQcm9wVHlwZXMuZnVuYyxcbiAgICAvKipcbiAgICAgKiDmkJzntKLml7bnmoTlm57osIPvvIzlj4LmlbA6IHZhbHVlXG4gICAgICovXG4gICAgb25TZWFyY2g6IFByb3BUeXBlcy5mdW5jLFxuICAgIC8qKlxuICAgICAqIOiuvue9ruW8ueWHuuS9jee9rlxuICAgICAqL1xuICAgIHBsYWNlbWVudDogUHJvcFR5cGVzLm9uZU9mKFtcbiAgICAgIFwidG9wXCIsIFwibGVmdFwiLCBcInJpZ2h0XCIsIFwiYm90dG9tXCIsXG4gICAgICBcInRvcExlZnRcIiwgXCJ0b3BSaWdodFwiLCBcImJvdHRvbUxlZnRcIiwgXCJib3R0b21SaWdodFwiLFxuICAgICAgXCJsZWZ0VG9wXCIsIFwibGVmdEJvdHRvbVwiLCBcInJpZ2h0VG9wXCIsIFwicmlnaHRCb3R0b21cIixcbiAgICBdKSxcbiAgICAvKipcbiAgICAgKiDorr7nva7ovpPlhaXmoYbnmoTpu5jorqTlhoXlrrlcbiAgICAgKi9cbiAgICBwbGFjZWhvbGRlcjogUHJvcFR5cGVzLnN0cmluZyxcbiAgICAvKipcbiAgICAgKiDovpPlhaXmoYblhoXnmoTmoIfnrb7mmK/lkKbmmL7npLrvvIzmraQgUHJvcCDnlKjkuo7mg7PopoHlsIbnu5PmnpzljLrlsZXnpLrlnKjliKvnmoTlnLDmlrnnmoTpnIDmsYJcbiAgICAgKi9cbiAgICByZXN1bHRWaXNpYmxlOiBQcm9wVHlwZXMuYm9vbCxcbiAgICAvKipcbiAgICAgKiDlrprliLbmoJHlvaLpgInmi6nlmajnmoRpY29uXG4gICAgICovXG4gICAgcmlnaHRJY29uOiBQcm9wVHlwZXMuc3RyaW5nLFxuICAgIC8qKlxuICAgICAqIOWumuS5iemAieS4remhueWbnuWhq+eahOaWueW8j++8mjEuIHNob3ctYWxs77ya5pi+56S65YyF5ous54i26IqC54K555qE5omA5pyJ6YCJ5Lit6IqC54K577ybMi4gc2hvdy1wYXJlbnTvvJrlj6rmmL7npLrniLboioLngrnvvJszLiBzaG93LWNoaWxk77ya5Y+q5pi+56S65a2Q6IqC54K544CC6buY6K6k5YC877yac2hvdy1wYXJlbnRcbiAgICAgKi9cbiAgICBzaG93Q2hlY2tlZFN0cmF0ZWd5OiBQcm9wVHlwZXMub25lT2YoW1wic2hvdy1hbGxcIiwgXCJzaG93LXBhcmVudFwiLCBcInNob3ctY2hpbGRcIl0pLFxuICAgIC8qKlxuICAgICAqIOWklumDqOaOp+WItu+8mumAieS4reeahCBrZXlcbiAgICAgKi9cbiAgICB2YWx1ZTogUHJvcFR5cGVzLm9uZU9mVHlwZShbXG4gICAgICBQcm9wVHlwZXMuc3RyaW5nLFxuICAgICAgUHJvcFR5cGVzLmFycmF5LFxuICAgIF0pLFxuICB9XG5cbiAgcHVibGljIHN0YXRpYyBkZWZhdWx0UHJvcHM6IElUcmVlU2VsZWN0UHJvcHMgPSB7XG4gICAgYXV0b0NsZWFyU2VhcmNoVmFsdWU6IGZhbHNlLFxuICAgIGNsYXNzTmFtZTogdW5kZWZpbmVkLFxuICAgIGRlZmF1bHRWYWx1ZTogbnVsbCxcbiAgICBkaXNhYmxlZDogZmFsc2UsXG4gICAgbWF4VGFnQ291bnQ6IG51bGwsXG4gICAgbXVsdGlwbGU6IHRydWUsXG4gICAgb25DaGFuZ2U6IG5vb3AsXG4gICAgb25TZWFyY2g6IG5vb3AsXG4gICAgcGxhY2VtZW50OiBcImJvdHRvbUxlZnRcIixcbiAgICBwbGFjZWhvbGRlcjogXCLor7fpgInmi6lcIixcbiAgICByZXN1bHRWaXNpYmxlOiB0cnVlLFxuICAgIHJpZ2h0SWNvbjogXCJtZW51XCIsXG4gICAgc2hvd0NoZWNrZWRTdHJhdGVneTogXCJzaG93LXBhcmVudFwiLFxuICAgIHZhbHVlOiBudWxsLFxuICB9XG5cbiAgcHVibGljIHN0YXRpYyBnZXREZXJpdmVkU3RhdGVGcm9tUHJvcHMgPSAoeyB2YWx1ZSB9OiBJVHJlZVNlbGVjdFByb3BzKSA9PiB7XG4gICAgaWYgKHZhbHVlICE9PSBudWxsKSB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICB2YWx1ZSxcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIG51bGxcbiAgfVxuXG5cbiAgcHVibGljIHN0YXRpYyBUcmVlTm9kZTogdHlwZW9mIFRyZWVOb2RlID0gVHJlZU5vZGVcblxuICBwdWJsaWMgc2VsZWN0OiB0eXBlb2YgUmNUcmVlU2VsZWN0XG4gIFxuICBwdWJsaWMgd3JhcHBlcjogSFRNTERpdkVsZW1lbnRcblxuICBjb25zdHJ1Y3Rvcihwcm9wczogSVRyZWVTZWxlY3RQcm9wcykge1xuICAgIHN1cGVyKHByb3BzKVxuICAgIGNvbnN0IHsgdmFsdWUsIGRlZmF1bHRWYWx1ZSB9ID0gcHJvcHNcbiAgICBjb25zdCB2YWx1ZVN0YXRlID0gdmFsdWUgIT09IG51bGwgPyB2YWx1ZSA6IGRlZmF1bHRWYWx1ZVxuICAgIHRoaXMuc3RhdGUgPSB7XG4gICAgICB2YWx1ZTogdmFsdWVTdGF0ZSxcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgc2hvdWxkQ29tcG9uZW50VXBkYXRlID0gKG5leHRQcm9wczogSVRyZWVTZWxlY3RQcm9wcywgbmV4dFN0YXRlOiBJVHJlZVNlbGVjdFN0YXRlKSA9PiAoXG4gICAgIXNoYWxsb3dFcXVhbCh0aGlzLnByb3BzLCBuZXh0UHJvcHMpIHx8ICFzaGFsbG93RXF1YWwodGhpcy5zdGF0ZSwgbmV4dFN0YXRlKVxuICApXG5cbiAgcHVibGljIHNhdmVTZWxlY3QgPSAobm9kZTogUmVhY3QuUmVhY3ROb2RlKSA9PiB7XG4gICAgdGhpcy5zZWxlY3QgPSBub2RlXG4gIH1cblxuICBwdWJsaWMgc2F2ZVdyYXBwZXIgPSAobm9kZTogSFRNTERpdkVsZW1lbnQpID0+IHtcbiAgICB0aGlzLndyYXBwZXIgPSBub2RlXG4gIH1cblxuICBwdWJsaWMgcmVuZGVyU3dpdGNoZXJJY29uID0gKHByb3BzOiBJVHJlZU5vZGVQcm9wcykgPT4ge1xuICAgIGNvbnN0IHsgaXNMZWFmIH0gPSBwcm9wc1xuICAgIGlmIChpc0xlYWYpIHtcbiAgICAgIHJldHVybiBudWxsXG4gICAgfVxuICAgIHJldHVybiA8SWNvbiBpY29uPVwiYXJyb3ctcmlnaHRcIiBjbGFzc05hbWU9XCJhZHVpLXRyZWUtc2VsZWN0LXN3aXRjaGVyLWljb25cIiAvPlxuICB9XG5cbiAgcHVibGljIGhhbmRsZUNoYW5nZSA9ICh2YWx1ZTogVHJlZU5vZGVWYWx1ZSkgPT4ge1xuICAgIGlmIChkb2N1bWVudC5hY3RpdmVFbGVtZW50ICYmIGRvY3VtZW50LmFjdGl2ZUVsZW1lbnQudGFnTmFtZS50b1VwcGVyQ2FzZSgpID09PSBcIklOUFVUXCIpIHtcbiAgICAgIHJldHVyblxuICAgIH1cblxuICAgIGNvbnN0IHtcbiAgICAgIGRpc2FibGVkLFxuICAgICAgb25DaGFuZ2UsXG4gICAgICB2YWx1ZTogdmFsdWVQcm9wLFxuICAgIH0gPSB0aGlzLnByb3BzXG4gICAgaWYgKCFkaXNhYmxlZCkge1xuICAgICAgaWYgKHZhbHVlUHJvcCA9PT0gbnVsbCkge1xuICAgICAgICB0aGlzLnNldFN0YXRlKHsgdmFsdWUgfSlcbiAgICAgIH1cbiAgICAgIGlmIChvbkNoYW5nZSkge1xuICAgICAgICBvbkNoYW5nZSh2YWx1ZSlcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBwdWJsaWMgaGFuZGxlU2VhcmNoID0gKHZhbDogc3RyaW5nKSA9PiB7XG4gICAgY29uc3QgeyBvblNlYXJjaCB9ID0gdGhpcy5wcm9wc1xuICAgIGlmIChvblNlYXJjaCkge1xuICAgICAgb25TZWFyY2godmFsKVxuICAgIH1cblxuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgLyoqXG4gICAgICAgKiBoaWdobGlnaHRcbiAgICAgICAqL1xuICAgICAgaWYgKHRoaXMuc2VsZWN0ICYmIHRoaXMuc2VsZWN0LnNlbGVjdFRyaWdnZXJSZWYpIHtcbiAgICAgICAgLy8g5Yir6Zeu5oiR5ou/5YiwIHNlbGVjdCBub2RlIOS4uuS7gOS5iOmcgOimgei/meS5iOmVvyDigJTigJQg6K+V5Ye65p2l55qE44CCXGJcbiAgICAgICAgLyogZXNsaW50LWRpc2FibGUgbm8tdW5kZXJzY29yZS1kYW5nbGUgKi9cbiAgICAgICAgY29uc3QgbGlzdCA9IHRoaXMuc2VsZWN0LnNlbGVjdFRyaWdnZXJSZWYuY3VycmVudC50cmlnZ2VyUmVmLmN1cnJlbnQuX2NvbXBvbmVudC5yb290Tm9kZVxuICAgICAgICBjb25zdCBpdGVtcyA9IGxpc3QucXVlcnlTZWxlY3RvckFsbChcIi5hZHVpLXRyZWUtc2VsZWN0LXRyZWUtdGl0bGVcIilcbiAgICAgICAgaXRlbXMuZm9yRWFjaCgoaXRlbTogSFRNTEVsZW1lbnQpID0+IHtcbiAgICAgICAgICBjb25zdCByZXBsYWNlbWVudCA9IChzdHI6IHN0cmluZykgPT4gc3RyLnJlcGxhY2UodmFsLCBgPHNwYW4gc3R5bGU9XCJjb2xvcjogdmFyKC0tcHJpbWFyeS1jb2xvcik7XCI+JHt2YWx9PC9zcGFuPmApXG4gICAgICAgICAgbGV0IHNvdXJjZUh0bWwgPSBpdGVtLmRhdGFzZXQuaHRtbFxuICAgICAgICAgIGlmICghc291cmNlSHRtbCkge1xuICAgICAgICAgICAgc291cmNlSHRtbCA9IGl0ZW0uaW5uZXJIVE1MXG4gICAgICAgICAgICBpdGVtLmRhdGFzZXQuaHRtbCA9IGl0ZW0uaW5uZXJIVE1MXG4gICAgICAgICAgfVxuICAgICAgICAgIGlmIChpdGVtLmlubmVySFRNTCAhPT0gXCLml6DljLnphY3nu5PmnpxcIikge1xuICAgICAgICAgICAgaWYgKHZhbCkge1xuICAgICAgICAgICAgICAvLyDliKTmlq3mmK/ku6UgcmVhY3QtdGV4dCDms6jph4rlvIDlp4vnmoTvvIzliJnnlaXov4fms6jph4rpg6jliIbov5vooYwgaGlnaHRsaWdodFxuICAgICAgICAgICAgICBpZiAoc291cmNlSHRtbC5pbmRleE9mKFwiPCEtLSByZWFjdC10ZXh0OlwiKSA9PT0gMCkge1xuICAgICAgICAgICAgICAgIGNvbnN0IGNvbW1lbnRFbmRJbmRleCA9IHNvdXJjZUh0bWwuaW5kZXhPZihcIi0tPlwiKVxuICAgICAgICAgICAgICAgIGlmIChzb3VyY2VIdG1sLmluZGV4T2YodmFsKSA8IGNvbW1lbnRFbmRJbmRleCkge1xuICAgICAgICAgICAgICAgICAgaXRlbS5pbm5lckhUTUwgPSBzb3VyY2VIdG1sLnN1YnN0cigwLCBjb21tZW50RW5kSW5kZXggKyAzKSArIHJlcGxhY2VtZW50KHNvdXJjZUh0bWwuc3Vic3RyKGNvbW1lbnRFbmRJbmRleCArIDMpKVxuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICBpdGVtLmlubmVySFRNTCA9IHJlcGxhY2VtZW50KHNvdXJjZUh0bWwpXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIGl0ZW0uaW5uZXJIVE1MID0gcmVwbGFjZW1lbnQoc291cmNlSHRtbClcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgaXRlbS5pbm5lckhUTUwgPSBzb3VyY2VIdG1sXG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9KVxuICAgICAgfVxuICAgIH0sIDApXG4gIH1cblxuICBwdWJsaWMgZmlsdGVyVHJlZU5vZGUgPSAoaW5wdXQ6IHN0cmluZywgeyBrZXksIHByb3BzIH06IGFueSkgPT4ge1xuICAgIGlmICghcHJvcHMpIHtcbiAgICAgIHJldHVybiBmYWxzZVxuICAgIH1cbiAgICBjb25zdCB7IHZhbHVlIH0gPSBwcm9wc1xuICAgIGlmICgha2V5IHx8ICF2YWx1ZSkge1xuICAgICAgcmV0dXJuIGZhbHNlXG4gICAgfVxuICAgIHJldHVybiBTdHJpbmcocHJvcHMudGl0bGUpLmluY2x1ZGVzKGlucHV0KVxuICB9XG5cbiAgcHVibGljIGdldE1heFRhZ0NvdW50ID0gKCkgPT4ge1xuICAgIGNvbnN0IHsgbWF4VGFnQ291bnQgfSA9IHRoaXMucHJvcHNcbiAgICBjb25zdCB7IHZhbHVlIH0gPSB0aGlzLnN0YXRlXG5cbiAgICBpZiAoIW1heFRhZ0NvdW50IHx8ICF2YWx1ZSB8fCB2YWx1ZS5sZW5ndGggPD0gbWF4VGFnQ291bnQpIHtcbiAgICAgIHJldHVybiBudWxsXG4gICAgfVxuICAgIHJldHVybiAwXG4gIH1cblxuICBwdWJsaWMgZ2V0TWF4VGFnUGxhY2Vob2xkZXIgPSAobm9kZXM6IFtzdHJpbmddKSA9PiB7XG4gICAgaWYgKCF0aGlzLnNlbGVjdCkge1xuICAgICAgcmV0dXJuIG51bGxcbiAgICB9XG4gICAgLyoqXG4gICAgICog6L+Z6YeM5L2/55So5Y+M562J5Y+35piv5Zug5Li6IHJjLXRyZWUtc2VsZWN0IOWunumZheS4jeWFgeiuuCBudW1iZXIg57G75Z6L55qEIHZhbHVlIOWAvO+8jOS9huaYr+WunumZheS4iue7j+W4uOS8mui/meagt+S9v+eUqFxuICAgICAqIOWboOatpOWcqOavlOi+gyBzdHJpbmcg5ZKMIG51bWJlciDnsbvlnovlgLzml7bpnIDopoEgPT1cbiAgICAgKi9cbiAgICAvKiBlc2xpbnQtZGlzYWJsZSBlcWVxZXEgKi9cbiAgICBjb25zdCB7IG9uQ2hhbmdlLCB2YWx1ZSB9ID0gdGhpcy5wcm9wc1xuICAgIGNvbnN0IHsgbGVuZ3RoIH0gPSBub2Rlc1xuXG4gICAgY29uc3QgdmFsdWVzOiBBcnJheTxbc3RyaW5nLCBhbnldPiA9IE9iamVjdC5lbnRyaWVzKHRoaXMuc2VsZWN0LnN0YXRlLnZhbHVlRW50aXRpZXMpXG4gICAgY29uc3QgcGxhY2Vob2xkZXJGaXJzdE9iamVjdD0gdmFsdWVzLmZpbmQobyA9PiBvWzBdID09PSBub2Rlc1swXSlcbiAgICBjb25zdCBwbGFjZWhvbGRlclRleHQgPSBgJHtwbGFjZWhvbGRlckZpcnN0T2JqZWN0ID8gcGxhY2Vob2xkZXJGaXJzdE9iamVjdFsxXS5ub2RlLnByb3BzLnRpdGxlIDogbm9kZXNbMF19Li4u562JJHtsZW5ndGh95LiqYFxuXG4gICAgcmV0dXJuIChcbiAgICAgIDxQb3BvdmVyXG4gICAgICAgIGFsaWduRWRnZT17ZmFsc2V9XG4gICAgICAgIHBsYWNlbWVudD1cInRvcFwiXG4gICAgICAgIHBvcHVwPXtcbiAgICAgICAgICBub2Rlcy5tYXAoKG5vZGUsIGkpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGZvdW5kSXRlbSA9IHZhbHVlcy5maW5kKG8gPT4gb1swXSA9PT0gbm9kZSlcbiAgICAgICAgICAgIGxldCB0aXRsZSA9IG5vZGVcbiAgICAgICAgICAgIGlmIChmb3VuZEl0ZW0pIHtcbiAgICAgICAgICAgICAgKHsgdGl0bGUgfSA9IGZvdW5kSXRlbVsxXS5ub2RlLnByb3BzKVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgIGNsYXNzTmFtZT1cImFkdWktdHJlZS1zZWxlY3QtbWF4UG9wb3Zlci1pdGVtXCJcbiAgICAgICAgICAgICAgICBrZXk9e25vZGV9XG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8c3Bhbj57IHRpdGxlIHx8IG5vZGUgfTwvc3Bhbj5cbiAgICAgICAgICAgICAgICA8SWNvblxuICAgICAgICAgICAgICAgICAgaWNvbj1cImNhbmNlbFwiXG4gICAgICAgICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIG5vZGVzLnNwbGljZShpLCAxKVxuICAgICAgICAgICAgICAgICAgICBpZiAodmFsdWUgPT09IG51bGwpIHtcbiAgICAgICAgICAgICAgICAgICAgICB0aGlzLnNldFN0YXRlKHsgdmFsdWU6IG5vZGVzIH0pXG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgaWYgKG9uQ2hhbmdlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgb25DaGFuZ2Uobm9kZXMpXG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICApXG4gICAgICAgICAgfSlcbiAgICAgICAgfVxuICAgICAgICBwb3B1cENsYXNzTmFtZT1cImFkdWktdHJlZS1zZWxlY3QtbWF4UG9wb3ZlclwiXG4gICAgICA+XG4gICAgICAgIDxkaXZcbiAgICAgICAgICBjbGFzc05hbWU9XCJhZHVpLXRyZWUtc2VsZWN0LW1heFBsYWNlaG9sZGVyXCJcbiAgICAgICAgICByb2xlPVwibm9uZVwiXG4gICAgICAgICAgb25DbGljaz17ZSA9PiBlLnN0b3BQcm9wYWdhdGlvbigpfVxuICAgICAgICA+XG4gICAgICAgICAgeyBwbGFjZWhvbGRlclRleHQgfVxuICAgICAgICAgIDxJY29uXG4gICAgICAgICAgICBpY29uPVwiY2FuY2VsXCJcbiAgICAgICAgICAgIHNpemU9ezE0fVxuICAgICAgICAgICAgb25DbGljaz17KCkgPT4ge1xuICAgICAgICAgICAgICBpZiAodmFsdWUgPT09IG51bGwpIHtcbiAgICAgICAgICAgICAgICB0aGlzLnNldFN0YXRlKHsgdmFsdWU6IFtdIH0pXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgaWYgKG9uQ2hhbmdlKSB7XG4gICAgICAgICAgICAgICAgb25DaGFuZ2UoW10pXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH19XG4gICAgICAgICAgLz5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L1BvcG92ZXI+XG4gICAgKVxuICB9XG5cbiAgcHVibGljIGNvbXBvbmVudERpZE1vdW50ID0gKCkgPT4ge1xuICAgIGNvbnN0IHsgbWF4VGFnQ291bnQsIHBsYWNlaG9sZGVyLCByZXN1bHRWaXNpYmxlIH0gPSB0aGlzLnByb3BzXG4gICAgY29uc3QgeyB2YWx1ZSB9ID0gdGhpcy5zdGF0ZVxuICAgIGlmIChtYXhUYWdDb3VudCAhPT0gbnVsbCAmJiB2YWx1ZSkge1xuICAgICAgdGhpcy5mb3JjZVVwZGF0ZSgpXG4gICAgfVxuICAgIGlmICghcmVzdWx0VmlzaWJsZSAmJiB0aGlzLndyYXBwZXIpIHtcbiAgICAgIGNvbnN0IGlucHV0ID0gdGhpcy53cmFwcGVyLnF1ZXJ5U2VsZWN0b3IoXCJpbnB1dFwiKVxuICAgICAgaWYgKGlucHV0KSB7XG4gICAgICAgIGlucHV0LnBsYWNlaG9sZGVyID0gcGxhY2Vob2xkZXJcbiAgICAgIH0gICAgICBcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgcmVuZGVyKCkge1xuICAgIGNvbnN0IHtcbiAgICAgIGF1dG9DbGVhclNlYXJjaFZhbHVlLFxuICAgICAgY2xhc3NOYW1lLFxuICAgICAgbWF4VGFnQ291bnQsXG4gICAgICBtdWx0aXBsZSxcbiAgICAgIHBsYWNlbWVudCxcbiAgICAgIHBsYWNlaG9sZGVyLFxuICAgICAgcmlnaHRJY29uLFxuICAgICAgcmVzdWx0VmlzaWJsZSxcbiAgICAgIHNob3dDaGVja2VkU3RyYXRlZ3ksXG4gICAgICAuLi5vdGhlclByb3BzXG4gICAgfSA9IHRoaXMucHJvcHNcblxuICAgIGNvbnN0IHJlc3RQcm9wczogYW55ID0gb21pdChvdGhlclByb3BzLCBbXG4gICAgICBcIm9uQ2hhbmdlXCIsXG4gICAgICBcIm9uU2VhcmNoXCIsXG4gICAgICBcInZhbHVlXCIsXG4gICAgXSlcblxuICAgIGNvbnN0IHtcbiAgICAgIHZhbHVlLFxuICAgIH0gPSB0aGlzLnN0YXRlXG5cbiAgICBjb25zdCBjbGFzc1NldCA9IGNsYXNzTmFtZXMoXG4gICAgICBjbGFzc05hbWUsXG4gICAgICBgJHtwcmVmaXh9LXdyYXBwZXJgLFxuICAgICAge1xuICAgICAgICBbYCR7cHJlZml4fV9yZXN1bHRIaWRkZW5gXTogIXJlc3VsdFZpc2libGUsXG4gICAgICB9XG4gICAgKVxuXG4gICAgbGV0IGNoZWNrYm94OiBhbnkgPSBtdWx0aXBsZVxuICAgIGlmIChtdWx0aXBsZSkge1xuICAgICAgY2hlY2tib3ggPSAoXG4gICAgICAgIDxkaXY+XG4gICAgICAgICAgPHN2ZyB3aWR0aD1cIjEyXCIgaGVpZ2h0PVwiMTBcIiBjbGFzc05hbWU9XCJhZHVpLXRyZWUtc2VsZWN0LXRyZWUtY2hlY2tib3gtaW5kZXRlcm1pbmF0ZVN2Z1wiPlxuICAgICAgICAgICAgPHJlY3QgeD1cIjFcIiB5PVwiNFwiIHdpZHRoPVwiMTBcIiBoZWlnaHQ9XCIyXCIgcng9XCIuNVwiIGZpbGw9XCIjZmZmXCIgZmlsbFJ1bGU9XCJldmVub2RkXCIgLz5cbiAgICAgICAgICA8L3N2Zz5cbiAgICAgICAgICA8c3ZnIHdpZHRoPVwiMTJcIiBoZWlnaHQ9XCIxMFwiIGNsYXNzTmFtZT1cImFkdWktdHJlZS1zZWxlY3QtdHJlZS1jaGVja2JveC1jaGVja2VkU3ZnXCI+XG4gICAgICAgICAgICA8cGF0aFxuICAgICAgICAgICAgICBkPVwiTS42MTggNS44MjdhLjQ2My40NjMgMCAwIDEtLjAyLS42NzVsLjgwNC0uODA0YS41Mi41MiAwIDAgMSAuNzE2LS4wMUw0Ljc1IDYuNzVsNC45MjItNS42MjVhLjUxMy41MTMgMCAwIDEgLjcwNy0uMDZsLjc0Mi42MmEuNDc4LjQ3OCAwIDAgMSAuMDQ0LjY4N2wtNi4wOCA2Ljc1NmEuNTA2LjUwNiAwIDAgMS0uNzAzLjA0NUwuNjE4IDUuODI3elwiXG4gICAgICAgICAgICAgIGZpbGxSdWxlPVwiZXZlbm9kZFwiXG4gICAgICAgICAgICAvPlxuICAgICAgICAgIDwvc3ZnPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIClcbiAgICB9XG5cbiAgICBpZiAodmFsdWUgIT09IG51bGwpIHtcbiAgICAgIHJlc3RQcm9wcy52YWx1ZSA9IHZhbHVlXG4gICAgfVxuXG4gICAgaWYgKG1heFRhZ0NvdW50ICE9PSBudWxsKSB7XG4gICAgICBjb25zdCBjb3VudCA9IHRoaXMuZ2V0TWF4VGFnQ291bnQoKVxuICAgICAgaWYgKGNvdW50ICE9PSBudWxsKSB7XG4gICAgICAgIHJlc3RQcm9wcy5tYXhUYWdDb3VudCA9IGNvdW50XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIChcbiAgICAgIDxkaXZcbiAgICAgICAgY2xhc3NOYW1lPXtjbGFzc05hbWVzKFwiYWR1aS10cmVlLXNlbGVjdC13cmFwcGVyXCIsIHtcbiAgICAgICAgICAnYWR1aS10cmVlLXNlbGVjdC13cmFwcGVyLW1heFRhZyc6IHRoaXMuZ2V0TWF4VGFnQ291bnQoKSAhPT0gbnVsbCxcbiAgICAgICAgfSl9XG4gICAgICAgIHJlZj17dGhpcy5zYXZlV3JhcHBlcn1cbiAgICAgID5cbiAgICAgICAgPFJjVHJlZVNlbGVjdFxuICAgICAgICAgIGF1dG9DbGVhclNlYXJjaFZhbHVlPXthdXRvQ2xlYXJTZWFyY2hWYWx1ZX1cbiAgICAgICAgICBjbGFzc05hbWU9e2NsYXNzU2V0fVxuICAgICAgICAgIGRyb3Bkb3duUG9wdXBBbGlnbj17cGxhY2VtZW50ICYmIGdldFBsYWNlbWVudHMoeyBhbGlnbkVkZ2U6IHRydWUgfSlbcGxhY2VtZW50XX1cbiAgICAgICAgICBmaWx0ZXJUcmVlTm9kZT17dGhpcy5maWx0ZXJUcmVlTm9kZX1cbiAgICAgICAgICBpbnB1dEljb249ezxJY29uIGljb249XCJ0cmlhbmdsZS1kb3duXCIgLz59XG4gICAgICAgICAgbWF4VGFnUGxhY2Vob2xkZXI9e3RoaXMuZ2V0TWF4VGFnUGxhY2Vob2xkZXJ9XG4gICAgICAgICAgbm90Rm91bmRDb250ZW50PVwi5peg5Yy56YWN57uT5p6cXCJcbiAgICAgICAgICBvbkNoYW5nZT17dGhpcy5oYW5kbGVDaGFuZ2V9XG4gICAgICAgICAgb25TZWFyY2g9e3RoaXMuaGFuZGxlU2VhcmNofVxuICAgICAgICAgIHBsYWNlaG9sZGVyPXtwbGFjZWhvbGRlcn1cbiAgICAgICAgICBwcmVmaXhDbHM9XCJhZHVpLXRyZWUtc2VsZWN0XCJcbiAgICAgICAgICByZWY9e3RoaXMuc2F2ZVNlbGVjdH1cbiAgICAgICAgICByZW1vdmVJY29uPXs8SWNvbiBpY29uPVwiY2FuY2VsXCIgaW50ZXJhY3RpdmUgc2l6ZT17MTR9IHN0eWxlPXt7IGRpc3BsYXk6IFwiYmxvY2tcIiB9fSAvPn1cbiAgICAgICAgICBzZWFyY2hQbGFjZWhvbGRlcj1cIuaQnOe0olwiXG4gICAgICAgICAgc2hvd0NoZWNrZWRTdHJhdGVneT17c2hvd0NoZWNrZWRTdHJhdGVneSAmJiBzdHJhdGVnaWVzW3Nob3dDaGVja2VkU3RyYXRlZ3ldfVxuICAgICAgICAgIHNob3dTZWFyY2g9e211bHRpcGxlfVxuICAgICAgICAgIHN3aXRjaGVySWNvbj17dGhpcy5yZW5kZXJTd2l0Y2hlckljb259XG4gICAgICAgICAgdHJhbnNpdGlvbk5hbWU9XCJzbGlkZS11cFwiXG4gICAgICAgICAgdHJlZUNoZWNrYWJsZT17Y2hlY2tib3h9XG4gICAgICAgICAgdHJlZU5vZGVGaWx0ZXJQcm9wPVwidGl0bGVcIlxuICAgICAgICAgIHsuLi5yZXN0UHJvcHN9XG4gICAgICAgIC8+XG4gICAgICAgIHshIXJpZ2h0SWNvbiAmJiA8SWNvbiBpY29uPXtyaWdodEljb259IGNsYXNzTmFtZT1cImFkdWktdHJlZS1zZWxlY3QtaWNvblwiIC8+fVxuICAgICAgPC9kaXY+XG4gICAgKVxuICB9XG59XG5cbnBvbHlmaWxsKFRyZWVTZWxlY3QpXG5cbmV4cG9ydCBkZWZhdWx0IFRyZWVTZWxlY3QiXX0=

@@ -27,6 +27,9 @@ import * as React from 'react';

}
export interface IImgState {
previewing: boolean;
}
/**
* 旋转加载用于告知用户信息内容的加载状态,通常是即时、短时的。
*/
export default class Img extends React.Component<IImgProps> {
export default class Img extends React.Component<IImgProps, IImgState> {
static propTypes: {

@@ -54,5 +57,21 @@ /**

};
uploadElement: HTMLDivElement | null;
/**
* 保存页面是否 overflow
*/
bodyIsOverflowing: boolean;
/**
* 保存当前浏览器的滚动条宽度
*/
scrollbarWidth: number;
static defaultProps: IImgProps;
state: {
previewing: boolean;
};
handleClick: () => void;
resetScrollbarPadding: () => void;
setScrollbarPadding: () => void;
handlePreview: () => void;
handleCancelPreview: () => void;
render(): JSX.Element;
}

@@ -14,2 +14,4 @@ "use strict";

var _getScrollBarSize = _interopRequireDefault(require("rc-util/lib/getScrollBarSize"));
var _omit = _interopRequireDefault(require("../_util/omit"));

@@ -68,2 +70,8 @@

_this = _possibleConstructorReturn(this, (_getPrototypeOf2 = _getPrototypeOf(Img)).call.apply(_getPrototypeOf2, [this].concat(args)));
_this.uploadElement = void 0;
_this.bodyIsOverflowing = void 0;
_this.scrollbarWidth = void 0;
_this.state = {
previewing: false
};

@@ -80,2 +88,39 @@ _this.handleClick = function () {

_this.resetScrollbarPadding = function () {
document.body.style.overflow = "";
document.body.style.paddingRight = "";
};
_this.setScrollbarPadding = function () {
var _window = window,
innerWidth = _window.innerWidth;
_this.bodyIsOverflowing = document.body.clientWidth < innerWidth;
if (_this.bodyIsOverflowing && !document.body.style.paddingRight) {
_this.scrollbarWidth = (0, _getScrollBarSize["default"])();
if (_this.scrollbarWidth !== undefined) {
document.body.style.paddingRight = "".concat(_this.scrollbarWidth, "px");
}
}
document.body.style.overflow = "hidden";
};
_this.handlePreview = function () {
_this.setState({
previewing: true
});
_this.setScrollbarPadding();
};
_this.handleCancelPreview = function () {
_this.setState({
previewing: false
});
_this.resetScrollbarPadding();
};
return _this;

@@ -87,2 +132,5 @@ }

value: function render() {
var _classNames,
_this2 = this;
var _this$props2 = this.props,

@@ -95,10 +143,11 @@ className = _this$props2.className,

var classSet = (0, _classnames["default"])(className, "".concat(prefix), _defineProperty({}, "".concat(prefix, "-uploaded"), src));
var previewing = this.state.previewing;
var classSet = (0, _classnames["default"])(className, "".concat(prefix), (_classNames = {}, _defineProperty(_classNames, "".concat(prefix, "-uploaded"), src), _defineProperty(_classNames, "".concat(prefix, "-progressing"), progress !== null), _classNames));
var restProps = (0, _omit["default"])(otherProps, ["onUpload"]);
return React.createElement("div", _extends({
role: "none",
className: classSet,
onClick: this.handleClick
}, restProps), src ? [React.createElement("img", {
key: 0,
className: classSet
}, restProps), React.createElement("div", {
className: "".concat(prefix, "-uploaded-inner")
}, React.createElement("img", {
className: "".concat(prefix, "-file"),

@@ -108,6 +157,6 @@ src: src,

}), React.createElement("div", {
key: 1,
className: "".concat(prefix, "-cover")
role: "none",
className: "".concat(prefix, "-cover"),
onClick: this.handlePreview
}), React.createElement("div", {
key: 2,
className: "".concat(prefix, "-remove")

@@ -117,6 +166,15 @@ }, React.createElement(_icon["default"], {

onClick: onIconClick
}))] : progress === null ? React.createElement(_icon["default"], {
}))), React.createElement("div", {
className: "".concat(prefix, "-unuploaded-inner")
}, React.createElement("div", {
role: "none",
className: "".concat(prefix, "-upload-element"),
onClick: this.handleClick,
ref: function ref(node) {
_this2.uploadElement = node;
}
}, React.createElement(_icon["default"], {
icon: "add",
className: "".concat(prefix, "-icon")
}) : React.createElement("div", {
})), React.createElement("div", {
className: "".concat(prefix, "-progress")

@@ -127,3 +185,22 @@ }, React.createElement("i", {

}
})));
}))), React.createElement("div", {
className: (0, _classnames["default"])("".concat(prefix, "-preview"), _defineProperty({}, "".concat(prefix, "-preview-show"), previewing)),
onClick: this.handleCancelPreview,
role: "none"
}, React.createElement("div", {
className: "".concat(prefix, "-preview-inner")
}, React.createElement("img", {
alt: "img",
className: "".concat(prefix, "-preview-file"),
src: src,
onClick: function onClick(e) {
return e.stopPropagation();
},
role: "none"
}), React.createElement(_icon["default"], {
size: 36,
icon: "cancel",
color: "#fff",
interactive: true
}))));
}

@@ -150,2 +227,2 @@ }]);

};
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL2NvbXBvbmVudHMvdXBsb2FkL0ltZy50c3giXSwibmFtZXMiOlsicHJlZml4IiwiSW1nIiwiaGFuZGxlQ2xpY2siLCJwcm9wcyIsIm9uVXBsb2FkIiwic3JjIiwiY2xhc3NOYW1lIiwib25JY29uQ2xpY2siLCJwcm9ncmVzcyIsIm90aGVyUHJvcHMiLCJjbGFzc1NldCIsInJlc3RQcm9wcyIsIndpZHRoIiwiUmVhY3QiLCJDb21wb25lbnQiLCJwcm9wVHlwZXMiLCJQcm9wVHlwZXMiLCJzdHJpbmciLCJmdW5jIiwibnVtYmVyIiwiZGVmYXVsdFByb3BzIl0sIm1hcHBpbmdzIjoiOzs7Ozs7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBRUEsSUFBTUEsTUFBTSxHQUFHLGlCQUFmOztJQTZCcUJDLEc7Ozs7Ozs7Ozs7Ozs7Ozs7VUFpQ1pDLFcsR0FBYyxZQUFNO0FBQUEsd0JBQ0MsTUFBS0MsS0FETjtBQUFBLFVBQ2pCQyxRQURpQixlQUNqQkEsUUFEaUI7QUFBQSxVQUNQQyxHQURPLGVBQ1BBLEdBRE87O0FBRXpCLFVBQUksQ0FBQ0EsR0FBRCxJQUFRRCxRQUFaLEVBQXNCO0FBQ3BCQSxRQUFBQSxRQUFRO0FBQ1Q7QUFDRixLOzs7Ozs7OzZCQUVlO0FBQUEseUJBT1YsS0FBS0QsS0FQSztBQUFBLFVBRVpHLFNBRlksZ0JBRVpBLFNBRlk7QUFBQSxVQUdaQyxXQUhZLGdCQUdaQSxXQUhZO0FBQUEsVUFJWkMsUUFKWSxnQkFJWkEsUUFKWTtBQUFBLFVBS1pILEdBTFksZ0JBS1pBLEdBTFk7QUFBQSxVQU1USSxVQU5TOztBQVNkLFVBQU1DLFFBQVEsR0FBRyw0QkFDZkosU0FEZSxZQUVaTixNQUZZLGlDQUlUQSxNQUpTLGdCQUlXSyxHQUpYLEVBQWpCO0FBUUEsVUFBTU0sU0FBUyxHQUFHLHNCQUFLRixVQUFMLEVBQWlCLENBQ2pDLFVBRGlDLENBQWpCLENBQWxCO0FBSUEsYUFDRTtBQUNFLFFBQUEsSUFBSSxFQUFDLE1BRFA7QUFFRSxRQUFBLFNBQVMsRUFBRUMsUUFGYjtBQUdFLFFBQUEsT0FBTyxFQUFFLEtBQUtSO0FBSGhCLFNBSU1TLFNBSk4sR0FPSU4sR0FBRyxHQUFJLENBQ0w7QUFDRSxRQUFBLEdBQUcsRUFBRSxDQURQO0FBRUUsUUFBQSxTQUFTLFlBQUtMLE1BQUwsVUFGWDtBQUdFLFFBQUEsR0FBRyxFQUFFSyxHQUhQO0FBSUUsUUFBQSxHQUFHLEVBQUM7QUFKTixRQURLLEVBT0w7QUFBSyxRQUFBLEdBQUcsRUFBRSxDQUFWO0FBQWEsUUFBQSxTQUFTLFlBQUtMLE1BQUw7QUFBdEIsUUFQSyxFQVFMO0FBQUssUUFBQSxHQUFHLEVBQUUsQ0FBVjtBQUFhLFFBQUEsU0FBUyxZQUFLQSxNQUFMO0FBQXRCLFNBQ0Usb0JBQUMsZ0JBQUQ7QUFBTSxRQUFBLElBQUksRUFBQyxpQkFBWDtBQUE2QixRQUFBLE9BQU8sRUFBRU87QUFBdEMsUUFERixDQVJLLENBQUosR0FZREMsUUFBUSxLQUFLLElBQWIsR0FDRSxvQkFBQyxnQkFBRDtBQUFNLFFBQUEsSUFBSSxFQUFDLEtBQVg7QUFBaUIsUUFBQSxTQUFTLFlBQUtSLE1BQUw7QUFBMUIsUUFERixHQUdFO0FBQUssUUFBQSxTQUFTLFlBQUtBLE1BQUw7QUFBZCxTQUNFO0FBQUcsUUFBQSxLQUFLLEVBQUU7QUFBRVksVUFBQUEsS0FBSyxZQUFLSixRQUFMO0FBQVA7QUFBVixRQURGLENBdEJSLENBREY7QUErQkQ7Ozs7RUE1RjhCSyxLQUFLLENBQUNDLFM7OztBQUFsQmIsRyxDQUVMYyxTLEdBQVk7QUFJeEJULEVBQUFBLFNBQVMsRUFBRVUsc0JBQVVDLE1BSkc7QUFReEJWLEVBQUFBLFdBQVcsRUFBRVMsc0JBQVVFLElBUkM7QUFZeEJkLEVBQUFBLFFBQVEsRUFBRVksc0JBQVVFLElBWkk7QUFnQnhCVixFQUFBQSxRQUFRLEVBQUVRLHNCQUFVRyxNQWhCSTtBQW9CeEJkLEVBQUFBLEdBQUcsRUFBRVcsc0JBQVVDO0FBcEJTLEM7QUFGUGhCLEcsQ0F5QkxtQixZLEdBQTBCO0FBQ3RDZCxFQUFBQSxTQUFTLEVBQUUsRUFEMkI7QUFFdENDLEVBQUFBLFdBQVcsRUFBRSx1QkFBTSxDQUFFLENBRmlCO0FBR3RDSCxFQUFBQSxRQUFRLEVBQUUsb0JBQU0sQ0FBRSxDQUhvQjtBQUl0Q0ksRUFBQUEsUUFBUSxFQUFFLElBSjRCO0FBS3RDSCxFQUFBQSxHQUFHLEVBQUU7QUFMaUMsQyIsInNvdXJjZXNDb250ZW50IjpbIi8qIGVzbGludC1kaXNhYmxlIG5vLW5lc3RlZC10ZXJuYXJ5ICovXG5pbXBvcnQgKiBhcyBSZWFjdCBmcm9tICdyZWFjdCdcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSAncHJvcC10eXBlcydcbmltcG9ydCBjbGFzc05hbWVzIGZyb20gJ2NsYXNzbmFtZXMnXG5pbXBvcnQgb21pdCBmcm9tIFwiLi4vX3V0aWwvb21pdFwiXG5pbXBvcnQgSWNvbiBmcm9tICcuLi9pY29uJ1xuaW1wb3J0IFwiLi9zdHlsZVwiXG5cbmNvbnN0IHByZWZpeCA9IFwiYWR1aS11cGxvYWQtaW1nXCJcblxuZXhwb3J0IGludGVyZmFjZSBJSW1nUHJvcHMge1xuICBba2V5OiBzdHJpbmddOiBhbnlcbiAgLyoqXG4gICAqIOmZhOWKoOexu+WQjVxuICAgKi9cbiAgY2xhc3NOYW1lPzogc3RyaW5nXG4gIC8qKlxuICAgKiDlj7PkuIrop5Llm77moIfngrnlh7vml7bnmoQgaGFuZGxlclxuICAgKi9cbiAgb25JY29uQ2xpY2s/OiAoKSA9PiB2b2lkXG4gIC8qKlxuICAgKiDop6blj5HkuIrkvKBcbiAgICovXG4gIG9uVXBsb2FkPzogKCkgPT4gdm9pZFxuICAvKipcbiAgICog6L+b5bqm77yM5Lyg5YWlIG51bGwg5pe26KGo56S65LiN5pi+56S66L+b5bqm5p2hXG4gICAqL1xuICBwcm9ncmVzcz86IG51bWJlciB8IG51bGxcbiAgLyoqXG4gICAqIOS4iuS8oOaIkOWKn+WQjueahOWbvueJh+WcsOWdgFxuICAgKi9cbiAgc3JjPzogc3RyaW5nXG59XG5cbi8qKlxuICog5peL6L2s5Yqg6L2955So5LqO5ZGK55+l55So5oi35L+h5oGv5YaF5a6555qE5Yqg6L2954q25oCB77yM6YCa5bi45piv5Y2z5pe244CB55+t5pe255qE44CCXG4gKi9cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIEltZyBleHRlbmRzIFJlYWN0LkNvbXBvbmVudDxJSW1nUHJvcHM+IHtcblxuICBwdWJsaWMgc3RhdGljIHByb3BUeXBlcyA9IHtcbiAgICAvKipcbiAgICAgKiDpmYTliqDnsbvlkI1cbiAgICAgKi9cbiAgICBjbGFzc05hbWU6IFByb3BUeXBlcy5zdHJpbmcsXG4gICAgLyoqXG4gICAgICog5Y+z5LiK6KeS5Zu+5qCH54K55Ye75pe255qEIGhhbmRsZXJcbiAgICAgKi9cbiAgICBvbkljb25DbGljazogUHJvcFR5cGVzLmZ1bmMsXG4gICAgLyoqXG4gICAgICog6Kem5Y+R5LiK5LygXG4gICAgICovXG4gICAgb25VcGxvYWQ6IFByb3BUeXBlcy5mdW5jLFxuICAgIC8qKlxuICAgICAqIOi/m+W6pu+8jOS8oOWFpSBudWxsIOaXtuihqOekuuS4jeaYvuekuui/m+W6puadoVxuICAgICAqL1xuICAgIHByb2dyZXNzOiBQcm9wVHlwZXMubnVtYmVyLFxuICAgIC8qKlxuICAgICAqIOS4iuS8oOaIkOWKn+WQjueahOWbvueJh+WcsOWdgFxuICAgICAqL1xuICAgIHNyYzogUHJvcFR5cGVzLnN0cmluZyxcbiAgfVxuXG4gIHB1YmxpYyBzdGF0aWMgZGVmYXVsdFByb3BzOiBJSW1nUHJvcHMgPSB7XG4gICAgY2xhc3NOYW1lOiBcIlwiLFxuICAgIG9uSWNvbkNsaWNrOiAoKSA9PiB7fSxcbiAgICBvblVwbG9hZDogKCkgPT4ge30sXG4gICAgcHJvZ3Jlc3M6IG51bGwsXG4gICAgc3JjOiBcIlwiLFxuICB9XG5cbiAgcHVibGljIGhhbmRsZUNsaWNrID0gKCkgPT4ge1xuICAgIGNvbnN0IHsgb25VcGxvYWQsIHNyYyB9ID0gdGhpcy5wcm9wc1xuICAgIGlmICghc3JjICYmIG9uVXBsb2FkKSB7XG4gICAgICBvblVwbG9hZCgpXG4gICAgfVxuICB9XG5cbiAgcHVibGljIHJlbmRlcigpIHtcbiAgICBjb25zdCB7XG4gICAgICBjbGFzc05hbWUsXG4gICAgICBvbkljb25DbGljayxcbiAgICAgIHByb2dyZXNzLFxuICAgICAgc3JjLFxuICAgICAgLi4ub3RoZXJQcm9wc1xuICAgIH0gPSB0aGlzLnByb3BzXG5cbiAgICBjb25zdCBjbGFzc1NldCA9IGNsYXNzTmFtZXMoXG4gICAgICBjbGFzc05hbWUsXG4gICAgICBgJHtwcmVmaXh9YCxcbiAgICAgIHtcbiAgICAgICAgW2Ake3ByZWZpeH0tdXBsb2FkZWRgXTogc3JjLFxuICAgICAgfSxcbiAgICApXG5cbiAgICBjb25zdCByZXN0UHJvcHMgPSBvbWl0KG90aGVyUHJvcHMsIFtcbiAgICAgIFwib25VcGxvYWRcIixcbiAgICBdKVxuXG4gICAgcmV0dXJuIChcbiAgICAgIDxkaXZcbiAgICAgICAgcm9sZT1cIm5vbmVcIlxuICAgICAgICBjbGFzc05hbWU9e2NsYXNzU2V0fVxuICAgICAgICBvbkNsaWNrPXt0aGlzLmhhbmRsZUNsaWNrfVxuICAgICAgICB7Li4ucmVzdFByb3BzfVxuICAgICAgPlxuICAgICAgICB7XG4gICAgICAgICAgc3JjID8gKFtcbiAgICAgICAgICAgIDxpbWdcbiAgICAgICAgICAgICAga2V5PXswfVxuICAgICAgICAgICAgICBjbGFzc05hbWU9e2Ake3ByZWZpeH0tZmlsZWB9XG4gICAgICAgICAgICAgIHNyYz17c3JjfVxuICAgICAgICAgICAgICBhbHQ9XCJpbWdcIlxuICAgICAgICAgICAgLz4sXG4gICAgICAgICAgICA8ZGl2IGtleT17MX0gY2xhc3NOYW1lPXtgJHtwcmVmaXh9LWNvdmVyYH0gLz4sXG4gICAgICAgICAgICA8ZGl2IGtleT17Mn0gY2xhc3NOYW1lPXtgJHtwcmVmaXh9LXJlbW92ZWB9PlxuICAgICAgICAgICAgICA8SWNvbiBpY29uPVwiZGVsZXRlLW91dGxpbmVkXCIgb25DbGljaz17b25JY29uQ2xpY2t9IC8+XG4gICAgICAgICAgICA8L2Rpdj4sXG4gICAgICAgICAgXSkgOiAoXG4gICAgICAgICAgICBwcm9ncmVzcyA9PT0gbnVsbCA/IChcbiAgICAgICAgICAgICAgPEljb24gaWNvbj1cImFkZFwiIGNsYXNzTmFtZT17YCR7cHJlZml4fS1pY29uYH0gLz5cbiAgICAgICAgICAgICkgOiAoXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPXtgJHtwcmVmaXh9LXByb2dyZXNzYH0+XG4gICAgICAgICAgICAgICAgPGkgc3R5bGU9e3sgd2lkdGg6IGAke3Byb2dyZXNzfSVgIH19IC8+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgKVxuICAgICAgICAgIClcbiAgICAgICAgfVxuICAgICAgPC9kaXY+XG4gICAgKVxuICB9XG59Il19
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL2NvbXBvbmVudHMvdXBsb2FkL0ltZy50c3giXSwibmFtZXMiOlsicHJlZml4IiwiSW1nIiwidXBsb2FkRWxlbWVudCIsImJvZHlJc092ZXJmbG93aW5nIiwic2Nyb2xsYmFyV2lkdGgiLCJzdGF0ZSIsInByZXZpZXdpbmciLCJoYW5kbGVDbGljayIsInByb3BzIiwib25VcGxvYWQiLCJzcmMiLCJyZXNldFNjcm9sbGJhclBhZGRpbmciLCJkb2N1bWVudCIsImJvZHkiLCJzdHlsZSIsIm92ZXJmbG93IiwicGFkZGluZ1JpZ2h0Iiwic2V0U2Nyb2xsYmFyUGFkZGluZyIsIndpbmRvdyIsImlubmVyV2lkdGgiLCJjbGllbnRXaWR0aCIsInVuZGVmaW5lZCIsImhhbmRsZVByZXZpZXciLCJzZXRTdGF0ZSIsImhhbmRsZUNhbmNlbFByZXZpZXciLCJjbGFzc05hbWUiLCJvbkljb25DbGljayIsInByb2dyZXNzIiwib3RoZXJQcm9wcyIsImNsYXNzU2V0IiwicmVzdFByb3BzIiwibm9kZSIsIndpZHRoIiwiZSIsInN0b3BQcm9wYWdhdGlvbiIsIlJlYWN0IiwiQ29tcG9uZW50IiwicHJvcFR5cGVzIiwiUHJvcFR5cGVzIiwic3RyaW5nIiwiZnVuYyIsIm51bWJlciIsImRlZmF1bHRQcm9wcyJdLCJtYXBwaW5ncyI6Ijs7Ozs7OztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUVBLElBQU1BLE1BQU0sR0FBRyxpQkFBZjs7SUFpQ3FCQyxHOzs7Ozs7Ozs7Ozs7Ozs7VUF5QlpDLGE7VUFLQUMsaUI7VUFLQUMsYztVQVVBQyxLLEdBQVE7QUFDYkMsTUFBQUEsVUFBVSxFQUFFO0FBREMsSzs7VUFJUkMsVyxHQUFjLFlBQU07QUFBQSx3QkFDQyxNQUFLQyxLQUROO0FBQUEsVUFDakJDLFFBRGlCLGVBQ2pCQSxRQURpQjtBQUFBLFVBQ1BDLEdBRE8sZUFDUEEsR0FETzs7QUFFekIsVUFBSSxDQUFDQSxHQUFELElBQVFELFFBQVosRUFBc0I7QUFDcEJBLFFBQUFBLFFBQVE7QUFDVDtBQUNGLEs7O1VBRU1FLHFCLEdBQXdCLFlBQU07QUFDbkNDLE1BQUFBLFFBQVEsQ0FBQ0MsSUFBVCxDQUFjQyxLQUFkLENBQW9CQyxRQUFwQixHQUErQixFQUEvQjtBQUNBSCxNQUFBQSxRQUFRLENBQUNDLElBQVQsQ0FBY0MsS0FBZCxDQUFvQkUsWUFBcEIsR0FBbUMsRUFBbkM7QUFDRCxLOztVQUVNQyxtQixHQUFzQixZQUFNO0FBQUEsb0JBQ1ZDLE1BRFU7QUFBQSxVQUN6QkMsVUFEeUIsV0FDekJBLFVBRHlCO0FBRWpDLFlBQUtoQixpQkFBTCxHQUF5QlMsUUFBUSxDQUFDQyxJQUFULENBQWNPLFdBQWQsR0FBNEJELFVBQXJEOztBQUNBLFVBQUksTUFBS2hCLGlCQUFMLElBQTBCLENBQUNTLFFBQVEsQ0FBQ0MsSUFBVCxDQUFjQyxLQUFkLENBQW9CRSxZQUFuRCxFQUFpRTtBQUMvRCxjQUFLWixjQUFMLEdBQXNCLG1DQUF0Qjs7QUFDQSxZQUFJLE1BQUtBLGNBQUwsS0FBd0JpQixTQUE1QixFQUF1QztBQUNyQ1QsVUFBQUEsUUFBUSxDQUFDQyxJQUFULENBQWNDLEtBQWQsQ0FBb0JFLFlBQXBCLGFBQXNDLE1BQUtaLGNBQTNDO0FBQ0Q7QUFDRjs7QUFDRFEsTUFBQUEsUUFBUSxDQUFDQyxJQUFULENBQWNDLEtBQWQsQ0FBb0JDLFFBQXBCLEdBQStCLFFBQS9CO0FBQ0QsSzs7VUFFTU8sYSxHQUFnQixZQUFNO0FBQzNCLFlBQUtDLFFBQUwsQ0FBYztBQUFFakIsUUFBQUEsVUFBVSxFQUFFO0FBQWQsT0FBZDs7QUFDQSxZQUFLVyxtQkFBTDtBQUVELEs7O1VBRU1PLG1CLEdBQXNCLFlBQU07QUFDakMsWUFBS0QsUUFBTCxDQUFjO0FBQUVqQixRQUFBQSxVQUFVLEVBQUU7QUFBZCxPQUFkOztBQUNBLFlBQUtLLHFCQUFMO0FBQ0QsSzs7Ozs7Ozs2QkFFZTtBQUFBO0FBQUE7O0FBQUEseUJBT1YsS0FBS0gsS0FQSztBQUFBLFVBRVppQixTQUZZLGdCQUVaQSxTQUZZO0FBQUEsVUFHWkMsV0FIWSxnQkFHWkEsV0FIWTtBQUFBLFVBSVpDLFFBSlksZ0JBSVpBLFFBSlk7QUFBQSxVQUtaakIsR0FMWSxnQkFLWkEsR0FMWTtBQUFBLFVBTVRrQixVQU5TOztBQUFBLFVBU050QixVQVRNLEdBU1MsS0FBS0QsS0FUZCxDQVNOQyxVQVRNO0FBV2QsVUFBTXVCLFFBQVEsR0FBRyw0QkFDZkosU0FEZSxZQUVaekIsTUFGWSw2REFJVEEsTUFKUyxnQkFJV1UsR0FKWCwwQ0FLVFYsTUFMUyxtQkFLYzJCLFFBQVEsS0FBSyxJQUwzQixnQkFBakI7QUFTQSxVQUFNRyxTQUFTLEdBQUcsc0JBQUtGLFVBQUwsRUFBaUIsQ0FDakMsVUFEaUMsQ0FBakIsQ0FBbEI7QUFJQSxhQUNFO0FBQ0UsUUFBQSxJQUFJLEVBQUMsTUFEUDtBQUVFLFFBQUEsU0FBUyxFQUFFQztBQUZiLFNBR01DLFNBSE4sR0FLRTtBQUFLLFFBQUEsU0FBUyxZQUFLOUIsTUFBTDtBQUFkLFNBQ0U7QUFDRSxRQUFBLFNBQVMsWUFBS0EsTUFBTCxVQURYO0FBRUUsUUFBQSxHQUFHLEVBQUVVLEdBRlA7QUFHRSxRQUFBLEdBQUcsRUFBQztBQUhOLFFBREYsRUFNRTtBQUFLLFFBQUEsSUFBSSxFQUFDLE1BQVY7QUFBaUIsUUFBQSxTQUFTLFlBQUtWLE1BQUwsV0FBMUI7QUFBK0MsUUFBQSxPQUFPLEVBQUUsS0FBS3NCO0FBQTdELFFBTkYsRUFPRTtBQUFLLFFBQUEsU0FBUyxZQUFLdEIsTUFBTDtBQUFkLFNBQ0Usb0JBQUMsZ0JBQUQ7QUFBTSxRQUFBLElBQUksRUFBQyxpQkFBWDtBQUE2QixRQUFBLE9BQU8sRUFBRTBCO0FBQXRDLFFBREYsQ0FQRixDQUxGLEVBZ0JFO0FBQUssUUFBQSxTQUFTLFlBQUsxQixNQUFMO0FBQWQsU0FDRTtBQUNFLFFBQUEsSUFBSSxFQUFDLE1BRFA7QUFFRSxRQUFBLFNBQVMsWUFBS0EsTUFBTCxvQkFGWDtBQUdFLFFBQUEsT0FBTyxFQUFFLEtBQUtPLFdBSGhCO0FBSUUsUUFBQSxHQUFHLEVBQUUsYUFBQXdCLElBQUksRUFBSTtBQUFFLFVBQUEsTUFBSSxDQUFDN0IsYUFBTCxHQUFxQjZCLElBQXJCO0FBQTJCO0FBSjVDLFNBTUUsb0JBQUMsZ0JBQUQ7QUFBTSxRQUFBLElBQUksRUFBQyxLQUFYO0FBQWlCLFFBQUEsU0FBUyxZQUFLL0IsTUFBTDtBQUExQixRQU5GLENBREYsRUFTRTtBQUNFLFFBQUEsU0FBUyxZQUFLQSxNQUFMO0FBRFgsU0FHRTtBQUFHLFFBQUEsS0FBSyxFQUFFO0FBQUVnQyxVQUFBQSxLQUFLLFlBQUtMLFFBQUw7QUFBUDtBQUFWLFFBSEYsQ0FURixDQWhCRixFQStCRTtBQUNFLFFBQUEsU0FBUyxFQUFFLHNDQUFjM0IsTUFBZCw2Q0FDTEEsTUFESyxvQkFDbUJNLFVBRG5CLEVBRGI7QUFJRSxRQUFBLE9BQU8sRUFBRSxLQUFLa0IsbUJBSmhCO0FBS0UsUUFBQSxJQUFJLEVBQUM7QUFMUCxTQU9FO0FBQUssUUFBQSxTQUFTLFlBQUt4QixNQUFMO0FBQWQsU0FDRTtBQUNFLFFBQUEsR0FBRyxFQUFDLEtBRE47QUFFRSxRQUFBLFNBQVMsWUFBS0EsTUFBTCxrQkFGWDtBQUdFLFFBQUEsR0FBRyxFQUFFVSxHQUhQO0FBSUUsUUFBQSxPQUFPLEVBQUUsaUJBQUF1QixDQUFDO0FBQUEsaUJBQUlBLENBQUMsQ0FBQ0MsZUFBRixFQUFKO0FBQUEsU0FKWjtBQUtFLFFBQUEsSUFBSSxFQUFDO0FBTFAsUUFERixFQVFFLG9CQUFDLGdCQUFEO0FBQ0UsUUFBQSxJQUFJLEVBQUUsRUFEUjtBQUVFLFFBQUEsSUFBSSxFQUFDLFFBRlA7QUFHRSxRQUFBLEtBQUssRUFBQyxNQUhSO0FBSUUsUUFBQSxXQUFXO0FBSmIsUUFSRixDQVBGLENBL0JGLENBREY7QUF5REQ7Ozs7RUFySzhCQyxLQUFLLENBQUNDLFM7OztBQUFsQm5DLEcsQ0FFTG9DLFMsR0FBWTtBQUl4QlosRUFBQUEsU0FBUyxFQUFFYSxzQkFBVUMsTUFKRztBQVF4QmIsRUFBQUEsV0FBVyxFQUFFWSxzQkFBVUUsSUFSQztBQVl4Qi9CLEVBQUFBLFFBQVEsRUFBRTZCLHNCQUFVRSxJQVpJO0FBZ0J4QmIsRUFBQUEsUUFBUSxFQUFFVyxzQkFBVUcsTUFoQkk7QUFvQnhCL0IsRUFBQUEsR0FBRyxFQUFFNEIsc0JBQVVDO0FBcEJTLEM7QUFGUHRDLEcsQ0FxQ0x5QyxZLEdBQTBCO0FBQ3RDakIsRUFBQUEsU0FBUyxFQUFFLEVBRDJCO0FBRXRDQyxFQUFBQSxXQUFXLEVBQUUsdUJBQU0sQ0FBRSxDQUZpQjtBQUd0Q2pCLEVBQUFBLFFBQVEsRUFBRSxvQkFBTSxDQUFFLENBSG9CO0FBSXRDa0IsRUFBQUEsUUFBUSxFQUFFLElBSjRCO0FBS3RDakIsRUFBQUEsR0FBRyxFQUFFO0FBTGlDLEMiLCJzb3VyY2VzQ29udGVudCI6WyIvKiBlc2xpbnQtZGlzYWJsZSBuby1uZXN0ZWQtdGVybmFyeSAqL1xuaW1wb3J0ICogYXMgUmVhY3QgZnJvbSAncmVhY3QnXG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gJ3Byb3AtdHlwZXMnXG5pbXBvcnQgY2xhc3NOYW1lcyBmcm9tICdjbGFzc25hbWVzJ1xuaW1wb3J0IGdldFNjcm9sbEJhclNpemUgZnJvbSAncmMtdXRpbC9saWIvZ2V0U2Nyb2xsQmFyU2l6ZSdcbmltcG9ydCBvbWl0IGZyb20gXCIuLi9fdXRpbC9vbWl0XCJcbmltcG9ydCBJY29uIGZyb20gJy4uL2ljb24nXG5pbXBvcnQgXCIuL3N0eWxlXCJcblxuY29uc3QgcHJlZml4ID0gXCJhZHVpLXVwbG9hZC1pbWdcIlxuXG5leHBvcnQgaW50ZXJmYWNlIElJbWdQcm9wcyB7XG4gIFtrZXk6IHN0cmluZ106IGFueVxuICAvKipcbiAgICog6ZmE5Yqg57G75ZCNXG4gICAqL1xuICBjbGFzc05hbWU/OiBzdHJpbmdcbiAgLyoqXG4gICAqIOWPs+S4iuinkuWbvuagh+eCueWHu+aXtueahCBoYW5kbGVyXG4gICAqL1xuICBvbkljb25DbGljaz86ICgpID0+IHZvaWRcbiAgLyoqXG4gICAqIOinpuWPkeS4iuS8oFxuICAgKi9cbiAgb25VcGxvYWQ/OiAoKSA9PiB2b2lkXG4gIC8qKlxuICAgKiDov5vluqbvvIzkvKDlhaUgbnVsbCDml7booajnpLrkuI3mmL7npLrov5vluqbmnaFcbiAgICovXG4gIHByb2dyZXNzPzogbnVtYmVyIHwgbnVsbFxuICAvKipcbiAgICog5LiK5Lyg5oiQ5Yqf5ZCO55qE5Zu+54mH5Zyw5Z2AXG4gICAqL1xuICBzcmM/OiBzdHJpbmdcbn1cblxuZXhwb3J0IGludGVyZmFjZSBJSW1nU3RhdGUge1xuICBwcmV2aWV3aW5nOiBib29sZWFuXG59XG5cbi8qKlxuICog5peL6L2s5Yqg6L2955So5LqO5ZGK55+l55So5oi35L+h5oGv5YaF5a6555qE5Yqg6L2954q25oCB77yM6YCa5bi45piv5Y2z5pe244CB55+t5pe255qE44CCXG4gKi9cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIEltZyBleHRlbmRzIFJlYWN0LkNvbXBvbmVudDxJSW1nUHJvcHMsIElJbWdTdGF0ZT4ge1xuXG4gIHB1YmxpYyBzdGF0aWMgcHJvcFR5cGVzID0ge1xuICAgIC8qKlxuICAgICAqIOmZhOWKoOexu+WQjVxuICAgICAqL1xuICAgIGNsYXNzTmFtZTogUHJvcFR5cGVzLnN0cmluZyxcbiAgICAvKipcbiAgICAgKiDlj7PkuIrop5Llm77moIfngrnlh7vml7bnmoQgaGFuZGxlclxuICAgICAqL1xuICAgIG9uSWNvbkNsaWNrOiBQcm9wVHlwZXMuZnVuYyxcbiAgICAvKipcbiAgICAgKiDop6blj5HkuIrkvKBcbiAgICAgKi9cbiAgICBvblVwbG9hZDogUHJvcFR5cGVzLmZ1bmMsXG4gICAgLyoqXG4gICAgICog6L+b5bqm77yM5Lyg5YWlIG51bGwg5pe26KGo56S65LiN5pi+56S66L+b5bqm5p2hXG4gICAgICovXG4gICAgcHJvZ3Jlc3M6IFByb3BUeXBlcy5udW1iZXIsXG4gICAgLyoqXG4gICAgICog5LiK5Lyg5oiQ5Yqf5ZCO55qE5Zu+54mH5Zyw5Z2AXG4gICAgICovXG4gICAgc3JjOiBQcm9wVHlwZXMuc3RyaW5nLFxuICB9XG5cbiAgcHVibGljIHVwbG9hZEVsZW1lbnQ6IEhUTUxEaXZFbGVtZW50IHwgbnVsbFxuXG4gIC8qKlxuICAgKiDkv53lrZjpobXpnaLmmK/lkKYgb3ZlcmZsb3dcbiAgICovXG4gIHB1YmxpYyBib2R5SXNPdmVyZmxvd2luZzogYm9vbGVhblxuXG4gIC8qKlxuICAgKiDkv53lrZjlvZPliY3mtY/op4jlmajnmoTmu5rliqjmnaHlrr3luqZcbiAgICovXG4gIHB1YmxpYyBzY3JvbGxiYXJXaWR0aDogbnVtYmVyXG5cbiAgcHVibGljIHN0YXRpYyBkZWZhdWx0UHJvcHM6IElJbWdQcm9wcyA9IHtcbiAgICBjbGFzc05hbWU6IFwiXCIsXG4gICAgb25JY29uQ2xpY2s6ICgpID0+IHt9LFxuICAgIG9uVXBsb2FkOiAoKSA9PiB7fSxcbiAgICBwcm9ncmVzczogbnVsbCxcbiAgICBzcmM6IFwiXCIsXG4gIH1cblxuICBwdWJsaWMgc3RhdGUgPSB7XG4gICAgcHJldmlld2luZzogZmFsc2UsXG4gIH1cblxuICBwdWJsaWMgaGFuZGxlQ2xpY2sgPSAoKSA9PiB7XG4gICAgY29uc3QgeyBvblVwbG9hZCwgc3JjIH0gPSB0aGlzLnByb3BzXG4gICAgaWYgKCFzcmMgJiYgb25VcGxvYWQpIHtcbiAgICAgIG9uVXBsb2FkKClcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgcmVzZXRTY3JvbGxiYXJQYWRkaW5nID0gKCkgPT4ge1xuICAgIGRvY3VtZW50LmJvZHkuc3R5bGUub3ZlcmZsb3cgPSBcIlwiXG4gICAgZG9jdW1lbnQuYm9keS5zdHlsZS5wYWRkaW5nUmlnaHQgPSBcIlwiXG4gIH1cblxuICBwdWJsaWMgc2V0U2Nyb2xsYmFyUGFkZGluZyA9ICgpID0+IHtcbiAgICBjb25zdCB7IGlubmVyV2lkdGggfSA9IHdpbmRvd1xuICAgIHRoaXMuYm9keUlzT3ZlcmZsb3dpbmcgPSBkb2N1bWVudC5ib2R5LmNsaWVudFdpZHRoIDwgaW5uZXJXaWR0aFxuICAgIGlmICh0aGlzLmJvZHlJc092ZXJmbG93aW5nICYmICFkb2N1bWVudC5ib2R5LnN0eWxlLnBhZGRpbmdSaWdodCkge1xuICAgICAgdGhpcy5zY3JvbGxiYXJXaWR0aCA9IGdldFNjcm9sbEJhclNpemUoKVxuICAgICAgaWYgKHRoaXMuc2Nyb2xsYmFyV2lkdGggIT09IHVuZGVmaW5lZCkge1xuICAgICAgICBkb2N1bWVudC5ib2R5LnN0eWxlLnBhZGRpbmdSaWdodCA9IGAke3RoaXMuc2Nyb2xsYmFyV2lkdGh9cHhgXG4gICAgICB9XG4gICAgfVxuICAgIGRvY3VtZW50LmJvZHkuc3R5bGUub3ZlcmZsb3cgPSBcImhpZGRlblwiXG4gIH1cblxuICBwdWJsaWMgaGFuZGxlUHJldmlldyA9ICgpID0+IHtcbiAgICB0aGlzLnNldFN0YXRlKHsgcHJldmlld2luZzogdHJ1ZSB9KVxuICAgIHRoaXMuc2V0U2Nyb2xsYmFyUGFkZGluZygpXG4gICAgXG4gIH1cblxuICBwdWJsaWMgaGFuZGxlQ2FuY2VsUHJldmlldyA9ICgpID0+IHtcbiAgICB0aGlzLnNldFN0YXRlKHsgcHJldmlld2luZzogZmFsc2UgfSlcbiAgICB0aGlzLnJlc2V0U2Nyb2xsYmFyUGFkZGluZygpXG4gIH1cblxuICBwdWJsaWMgcmVuZGVyKCkge1xuICAgIGNvbnN0IHtcbiAgICAgIGNsYXNzTmFtZSxcbiAgICAgIG9uSWNvbkNsaWNrLFxuICAgICAgcHJvZ3Jlc3MsXG4gICAgICBzcmMsXG4gICAgICAuLi5vdGhlclByb3BzXG4gICAgfSA9IHRoaXMucHJvcHNcblxuICAgIGNvbnN0IHsgcHJldmlld2luZyB9ID0gdGhpcy5zdGF0ZVxuXG4gICAgY29uc3QgY2xhc3NTZXQgPSBjbGFzc05hbWVzKFxuICAgICAgY2xhc3NOYW1lLFxuICAgICAgYCR7cHJlZml4fWAsXG4gICAgICB7XG4gICAgICAgIFtgJHtwcmVmaXh9LXVwbG9hZGVkYF06IHNyYyxcbiAgICAgICAgW2Ake3ByZWZpeH0tcHJvZ3Jlc3NpbmdgXTogcHJvZ3Jlc3MgIT09IG51bGwsXG4gICAgICB9LFxuICAgIClcblxuICAgIGNvbnN0IHJlc3RQcm9wcyA9IG9taXQob3RoZXJQcm9wcywgW1xuICAgICAgXCJvblVwbG9hZFwiLFxuICAgIF0pXG5cbiAgICByZXR1cm4gKFxuICAgICAgPGRpdlxuICAgICAgICByb2xlPVwibm9uZVwiXG4gICAgICAgIGNsYXNzTmFtZT17Y2xhc3NTZXR9XG4gICAgICAgIHsuLi5yZXN0UHJvcHN9XG4gICAgICA+XG4gICAgICAgIDxkaXYgY2xhc3NOYW1lPXtgJHtwcmVmaXh9LXVwbG9hZGVkLWlubmVyYH0+XG4gICAgICAgICAgPGltZ1xuICAgICAgICAgICAgY2xhc3NOYW1lPXtgJHtwcmVmaXh9LWZpbGVgfVxuICAgICAgICAgICAgc3JjPXtzcmN9XG4gICAgICAgICAgICBhbHQ9XCJpbWdcIlxuICAgICAgICAgIC8+XG4gICAgICAgICAgPGRpdiByb2xlPVwibm9uZVwiIGNsYXNzTmFtZT17YCR7cHJlZml4fS1jb3ZlcmB9IG9uQ2xpY2s9e3RoaXMuaGFuZGxlUHJldmlld30gLz5cbiAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT17YCR7cHJlZml4fS1yZW1vdmVgfT5cbiAgICAgICAgICAgIDxJY29uIGljb249XCJkZWxldGUtb3V0bGluZWRcIiBvbkNsaWNrPXtvbkljb25DbGlja30gLz5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXYgY2xhc3NOYW1lPXtgJHtwcmVmaXh9LXVudXBsb2FkZWQtaW5uZXJgfT5cbiAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICByb2xlPVwibm9uZVwiXG4gICAgICAgICAgICBjbGFzc05hbWU9e2Ake3ByZWZpeH0tdXBsb2FkLWVsZW1lbnRgfVxuICAgICAgICAgICAgb25DbGljaz17dGhpcy5oYW5kbGVDbGlja31cbiAgICAgICAgICAgIHJlZj17bm9kZSA9PiB7IHRoaXMudXBsb2FkRWxlbWVudCA9IG5vZGUgfX1cbiAgICAgICAgICA+XG4gICAgICAgICAgICA8SWNvbiBpY29uPVwiYWRkXCIgY2xhc3NOYW1lPXtgJHtwcmVmaXh9LWljb25gfSAvPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgIGNsYXNzTmFtZT17YCR7cHJlZml4fS1wcm9ncmVzc2B9XG4gICAgICAgICAgPlxuICAgICAgICAgICAgPGkgc3R5bGU9e3sgd2lkdGg6IGAke3Byb2dyZXNzfSVgIH19IC8+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8ZGl2XG4gICAgICAgICAgY2xhc3NOYW1lPXtjbGFzc05hbWVzKGAke3ByZWZpeH0tcHJldmlld2AsIHtcbiAgICAgICAgICAgIFtgJHtwcmVmaXh9LXByZXZpZXctc2hvd2BdOiBwcmV2aWV3aW5nLFxuICAgICAgICAgIH0pfVxuICAgICAgICAgIG9uQ2xpY2s9e3RoaXMuaGFuZGxlQ2FuY2VsUHJldmlld31cbiAgICAgICAgICByb2xlPVwibm9uZVwiXG4gICAgICAgID5cbiAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT17YCR7cHJlZml4fS1wcmV2aWV3LWlubmVyYH0+XG4gICAgICAgICAgICA8aW1nXG4gICAgICAgICAgICAgIGFsdD1cImltZ1wiXG4gICAgICAgICAgICAgIGNsYXNzTmFtZT17YCR7cHJlZml4fS1wcmV2aWV3LWZpbGVgfVxuICAgICAgICAgICAgICBzcmM9e3NyY31cbiAgICAgICAgICAgICAgb25DbGljaz17ZSA9PiBlLnN0b3BQcm9wYWdhdGlvbigpfVxuICAgICAgICAgICAgICByb2xlPVwibm9uZVwiXG4gICAgICAgICAgICAvPlxuICAgICAgICAgICAgPEljb25cbiAgICAgICAgICAgICAgc2l6ZT17MzZ9XG4gICAgICAgICAgICAgIGljb249XCJjYW5jZWxcIlxuICAgICAgICAgICAgICBjb2xvcj1cIiNmZmZcIlxuICAgICAgICAgICAgICBpbnRlcmFjdGl2ZVxuICAgICAgICAgICAgLz5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICApXG4gIH1cbn0iXX0=
{
"name": "adui",
"author": "yijiejiang <yijiejiang@tencent.com>",
"version": "0.7.1-alpha.2",
"version": "0.8.0",
"files": [

@@ -6,0 +6,0 @@ "lib",

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is too big to display

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc