Socket
Socket
Sign inDemoInstall

@blueprintjs/core

Package Overview
Dependencies
5
Maintainers
1
Versions
293
Alerts
File Explorer

Advanced tools

Install Socket

Detect and block malicious and high-risk dependencies

Install

Comparing version 0.1.0 to 1.0.0

7

dist/components/editable-text/editableText.js

@@ -77,3 +77,6 @@ /*

var value = event.target.value;
_this.setState({ value: value });
// state value should be updated only when uncontrolled
if (_this.props.value == null) {
_this.setState({ value: value });
}
utils_1.safeInvoke(_this.props.onChange, value);

@@ -240,2 +243,2 @@ };

//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9jb21wb25lbnRzL2VkaXRhYmxlLXRleHQvZWRpdGFibGVUZXh0LnRzeCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7O0dBR0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUVILElBQVksVUFBVSxXQUFNLFlBQVksQ0FBQyxDQUFBO0FBQ3pDLElBQVksVUFBVSxXQUFNLHVCQUF1QixDQUFDLENBQUE7QUFDcEQsSUFBWSxLQUFLLFdBQU0sT0FBTyxDQUFDLENBQUE7QUFFL0IsSUFBWSxPQUFPLFdBQU0sc0JBQXNCLENBQUMsQ0FBQTtBQUNoRCxJQUFZLElBQUksV0FBTSxtQkFBbUIsQ0FBQyxDQUFBO0FBRTFDLHNCQUFrQyxvQkFBb0IsQ0FBQyxDQUFBO0FBOEV2RCxJQUFNLFlBQVksR0FBRyxFQUFFLENBQUM7QUFHeEI7SUFBa0MsZ0NBQXVEO0lBeUJyRixzQkFBbUIsS0FBMEIsRUFBRSxPQUFhO1FBekJoRSxpQkFrTUM7UUF4S08sa0JBQU0sS0FBSyxFQUFFLE9BQU8sQ0FBQyxDQUFDO1FBZGxCLGdCQUFXLEdBQUc7WUFDbEIsT0FBTyxFQUFFLFVBQUMsV0FBNEI7Z0JBQ2xDLEtBQUksQ0FBQyxZQUFZLEdBQUcsV0FBVyxDQUFDO1lBQ3BDLENBQUM7WUFDRCxLQUFLLEVBQUUsVUFBQyxLQUE2QztnQkFDakQsRUFBRSxDQUFDLENBQUMsS0FBSyxJQUFJLElBQUksQ0FBQyxDQUFDLENBQUM7b0JBQ2hCLEtBQUssQ0FBQyxLQUFLLEVBQUUsQ0FBQztvQkFDTixpQ0FBTSxDQUFpQjtvQkFDL0IsS0FBSyxDQUFDLGlCQUFpQixDQUFDLEtBQUksQ0FBQyxLQUFLLENBQUMsZ0JBQWdCLEdBQUcsQ0FBQyxHQUFHLFFBQU0sRUFBRSxRQUFNLENBQUMsQ0FBQztnQkFDOUUsQ0FBQztZQUNMLENBQUM7U0FDSixDQUFDO1FBZ0ZLLGtCQUFhLEdBQUc7WUFDWCxxQ0FBUyxDQUFnQjtZQUNqQyxLQUFJLENBQUMsUUFBUSxDQUFDLEVBQUUsU0FBUyxFQUFF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QUMsS0FBSyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDO0lBQ2pGLG9FQUFvRTtJQUNwRSxFQUFFLENBQUMsQ0FBQyxLQUFLLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ3BCLG1EQUFtRDtRQUNuRCxJQUFNLElBQUksR0FBRyxRQUFRLENBQUMsYUFBYSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQzVDLElBQUksQ0FBQyxTQUFTLEdBQUcsTUFBTSxDQUFDO1FBQ3hCLE9BQU8sQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDMUIsSUFBTSxnQkFBZ0IsR0FBRyxPQUFPLENBQUMsWUFBWSxDQUFDO1FBQzlDLElBQUksQ0FBQyxTQUFTLEdBQUcsVUFBVSxDQUFDO1FBQzVCLElBQU0sZ0JBQWdCLEdBQUcsT0FBTyxDQUFDLFlBQVksQ0FBQztRQUM5QyxPQUFPLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQzFCLGtDQUFrQztRQUNsQyxVQUFVLEdBQUcsZ0JBQWdCLEdBQUcsZ0JBQWdCLENBQUM7SUFDckQsQ0FBQztJQUNELE1BQU0sQ0FBQyxVQUFVLENBQUM7QUFDdEIsQ0FBQztBQUVVLDJCQUFtQixHQUFHLEtBQUssQ0FBQyxhQUFhLENBQUMsWUFBWSxDQUFDLENBQUMiLCJmaWxlIjoiY29tcG9uZW50cy9lZGl0YWJsZS10ZXh0L2VkaXRhYmxlVGV4dC5qcyIsInNvdXJjZXNDb250ZW50IjpbIi8qXG4gKiBDb3B5cmlnaHQgMjAxNiBQYWxhbnRpciBUZWNobm9sb2dpZXMsIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC5cbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgLSBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqL1xuXG5pbXBvcnQgKiBhcyBjbGFzc05hbWVzIGZyb20gXCJjbGFzc25hbWVzXCI7XG5pbXBvcnQgKiBhcyBQdXJlUmVuZGVyIGZyb20gXCJwdXJlLXJlbmRlci1kZWNvcmF0b3JcIjtcbmltcG9ydCAqIGFzIFJlYWN0IGZyb20gXCJyZWFjdFwiO1xuXG5pbXBvcnQgKiBhcyBDbGFzc2VzIGZyb20gXCIuLi8uLi9jb21tb24vY2xhc3Nlc1wiO1xuaW1wb3J0ICogYXMgS2V5cyBmcm9tIFwiLi4vLi4vY29tbW9uL2tleXNcIjtcbmltcG9ydCB7IElJbnRlbnRQcm9wcywgSVByb3BzIH0gZnJvbSBcIi4uLy4uL2NvbW1vbi9wcm9wc1wiO1xuaW1wb3J0IHsgY2xhbXAsIHNhZmVJbnZva2UgfSBmcm9tIFwiLi4vLi4vY29tbW9uL3V0aWxzXCI7XG5cbmV4cG9ydCBpbnRlcmZhY2UgSUVkaXRhYmxlVGV4dFByb3BzIGV4dGVuZHMgSUludGVudFByb3BzLCBJUHJvcHMge1xuICAgIC8qKiBEZWZhdWx0IHRleHQgdmFsdWUgb2YgdW5jb250cm9sbGVkIGlucHV0LiAqL1xuICAgIGRlZmF1bHRWYWx1ZT86IHN0cmluZztcblxuICAgIC8qKlxuICAgICAqIFdoZXRoZXIgdGhlIHRleHQgY2FuIGJlIGVkaXRlZC5cbiAgICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgICAqL1xuICAgIGRpc2FibGVkPzogYm9vbGVhbjtcblxuICAgIC8qKiBXaGV0aGVyIHRoZSBjb21wb25lbnQgaXMgY3VycmVudGx5IGJlaW5nIGVkaXRlZC4gKi9cbiAgICBpc0VkaXRpbmc/OiBib29sZWFuO1xuXG4gICAgLyoqIE1pbmltdW0gd2lkdGggaW4gcGl4ZWxzIG9mIHRoZSBpbnB1dCwgd2hlbiBub3QgYG11bHRpbGluZWAuICovXG4gICAgbWluV2lkdGg/OiBudW1iZXI7XG5cbiAgICAvKipcbiAgICAgKiBXaGV0aGVyIHRoZSBjb21wb25lbnQgc3VwcG9ydHMgbXVsdGlwbGUgbGluZXMgb2YgdGV4dC5cbiAgICAgKiBUaGlzIHByb3Agc2hvdWxkIG5vdCBiZSBjaGFuZ2VkIGR1cmluZyB0aGUgY29tcG9uZW50J3MgbGlmZXRpbWUuXG4gICAgICogQGRlZmF1bHQgZmFsc2VcbiAgICAgKi9cbiAgICBtdWx0aWxpbmU/OiBib29sZWFuO1xuXG4gICAgLyoqXG4gICAgICogTWF4aW11bSBudW1iZXIgb2YgbGluZXMgYmVmb3JlIHNjcm9sbGluZyBiZWdpbnMsIHdoZW4gYG11bHRpbGluZWAuXG4gICAgICovXG4gICAgbWF4TGluZXM/OiBudW1iZXI7XG5cbiAgICAvKipcbiAgICAgKiBNaW5pbXVtIG51bWJlciBvZiBsaW5lcyAoZXNzZW50aWFsbHkgbWluaW11bSBoZWlnaHQpLCB3aGVuIGBtdWx0aWxpbmVgLlxuICAgICAqIEBkZWZhdWx0IDFcbiAgICAgKi9cbiAgICBtaW5MaW5lcz86IG51bWJlcjtcblxuICAgIC8qKlxuICAgICAqIFBsYWNlaG9sZGVyIHRleHQgd2hlbiB0aGVyZSBpcyBubyB2YWx1ZS5cbiAgICAgKiBAZGVmYXVsdCBcIkNsaWNrIHRvIEVkaXRcIlxuICAgICAqL1xuICAgIHBsYWNlaG9sZGVyPzogc3RyaW5nO1xuXG4gICAgLyoqXG4gICAgICogV2hldGhlciB0aGUgZW50aXJlIHRleHQgZmllbGQgc2hvdWxkIGJlIHNlbGVjdGVkIG9uIGZvY3VzLlxuICAgICAqIElmIGZhbHNlLCB0aGUgY3Vyc29yIGlzIHBsYWNlZCBhdCB0aGUgZW5kIG9mIHRoZSB0ZXh0LlxuICAgICAqIEBkZWZhdWx0IGZhbHNlXG4gICAgICovXG4gICAgc2VsZWN0QWxsT25Gb2N1cz86IGJvb2xlYW47XG5cbiAgICAvKiogVGV4dCB2YWx1ZSBvZiBjb250cm9sbGVkIGlucHV0LiAqL1xuICAgIHZhbHVlPzogc3RyaW5nO1xuXG4gICAgLyoqIENhbGxiYWNrIGludm9rZWQgd2hlbiB1c2VyIGNhbmNlbHMgaW5wdXQgd2l0aCB0aGUgYGVzY2Aga2V5LiBSZWNlaXZlcyBsYXN0IGNvbmZpcm1lZCB2YWx1ZS4gKi9cbiAgICBvbkNhbmNlbD8odmFsdWU6IHN0cmluZyk6IHZvaWQ7XG5cbiAgICAvKiogQ2FsbGJhY2sgaW52b2tlZCB3aGVuIHVzZXIgY2hhbmdlcyBpbnB1dCBpbiBhbnkgd2F5LiAqL1xuICAgIG9uQ2hhbmdlPyh2YWx1ZTogc3RyaW5nKTogdm9pZDtcblxuICAgIC8qKiBDYWxsYmFjayBpbnZva2VkIHdoZW4gdXNlciBjb25maXJtcyB2YWx1ZSB3aXRoIGBlbnRlcmAga2V5IG9yIGJ5IGJsdXJyaW5nIGlucHV0LiAqL1xuICAgIG9uQ29uZmlybT8odmFsdWU6IHN0cmluZyk6IHZvaWQ7XG5cbiAgICAvKiogQ2FsbGJhY2sgaW52b2tlZCBhZnRlciB0aGUgdXNlciBlbnRlcnMgZWRpdCBtb2RlLiAqL1xuICAgIG9uRWRpdD8oKTogdm9pZDtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBJRWRpdGFibGVUZXh0U3RhdGUge1xuICAgIC8qKiBQaXhlbCBoZWlnaHQgb2YgdGhlIGlucHV0LCBtZWFzdXJlZCBmcm9tIHNwYW4gc2l6ZSAqL1xuICAgIGlucHV0SGVpZ2h0PzogbnVtYmVyO1xuICAgIC8qKiBQaXhlbCB3aWR0aCBvZiB0aGUgaW5wdXQsIG1lYXN1cmVkIGZyb20gc3BhbiBzaXplICovXG4gICAgaW5wdXRXaWR0aD86IG51bWJlcjtcbiAgICAvKiogV2hldGhlciB0aGUgdmFsdWUgaXMgY3VycmVudGx5IGJlaW5nIGVkaXRlZCAqL1xuICAgIGlzRWRpdGluZz86IGJvb2xlYW47XG4gICAgLyoqIFRoZSBsYXN0IGNvbmZpcm1lZCB2YWx1ZSAqL1xuICAgIGxhc3RWYWx1ZT86IHN0cmluZztcbiAgICAvKiogVGhlIGNvbnRyb2xsZWQgaW5wdXQgdmFsdWUsIG1heSBiZSBkaWZmZXJlbnQgZnJvbSBwcm9wIGR1cmluZyBlZGl0aW5nICovXG4gICAgdmFsdWU/OiBzdHJpbmc7XG59XG5cbmNvbnN0IEJVRkZFUl9XSURUSCA9IDMwO1xuXG5AUHVyZVJlbmRlclxuZXhwb3J0IGNsYXNzIEVkaXRhYmxlVGV4dCBleHRlbmRzIFJlYWN0LkNvbXBvbmVudDxJRWRpdGFibGVUZXh0UHJvcHMsIElFZGl0YWJsZVRleHRTdGF0ZT4ge1xuICAgIHB1YmxpYyBzdGF0aWMgZGVmYXVsdFByb3BzOiBJRWRpdGFibGVUZXh0UHJvcHMgPSB7XG4gICAgICAgIGRlZmF1bHRWYWx1ZTogXCJcIixcbiAgICAgICAgZGlzYWJsZWQ6IGZhbHNlLFxuICAgICAgICBtYXhMaW5lczogSW5maW5pdHksXG4gICAgICAgIG1pbkxpbmVzOiAxLFxuICAgICAgICBtaW5XaWR0aDogODAsXG4gICAgICAgIG11bHRpbGluZTogZmFsc2UsXG4gICAgICAgIHBsYWNlaG9sZGVyOiBcIkNsaWNrIHRvIEVkaXRcIixcbiAgICB9O1xuXG4gICAgcHJpdmF0ZSB2YWx1ZUVsZW1lbnQ6IEhUTUxTcGFuRWxlbWVudDtcbiAgICBwcml2YXRlIHJlZkhhbmRsZXJzID0ge1xuICAgICAgICBjb250ZW50OiAoc3BhbkVsZW1lbnQ6IEhUTUxTcGFuRWxlbWVudCkgPT4ge1xuICAgICAgICAgICAgdGhpcy52YWx1ZUVsZW1lbnQgPSBzcGFuRWxlbWVudDtcbiAgICAgICAgfSxcbiAgICAgICAgaW5wdXQ6IChpbnB1dDogSFRNTElucHV0RWxlbWVudCB8IEhUTUxUZXh0QXJlYUVsZW1lbnQpID0+IHtcbiAgICAgICAgICAgIGlmIChpbnB1dCAhPSBudWxsKSB7XG4gICAgICAgICAgICAgICAgaW5wdXQuZm9jdXMoKTtcbiAgICAgICAgICAgICAgICBjb25zdCB7IGxlbmd0aCB9ID0gaW5wdXQudmFsdWU7XG4gICAgICAgICAgICAgICAgaW5wdXQuc2V0U2VsZWN0aW9uUmFuZ2UodGhpcy5wcm9wcy5zZWxlY3RBbGxPbkZvY3VzID8gMCA6IGxlbmd0aCwgbGVuZ3RoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICB9O1xuXG4gICAgcHVibGljIGNvbnN0cnVjdG9yKHByb3BzPzogSUVkaXRhYmxlVGV4dFByb3BzLCBjb250ZXh0PzogYW55KSB7XG4gICAgICAgIHN1cGVyKHByb3BzLCBjb250ZXh0KTtcblxuICAgICAgICB0aGlzLnN0YXRlID0ge1xuICAgICAgICAgICAgaW5wdXRIZWlnaHQ6IDAsXG4gICAgICAgICAgICBpbnB1dFdpZHRoOiAwLFxuICAgICAgICAgICAgaXNFZGl0aW5nOiBwcm9wcy5pc0VkaXRpbmcgPT09IHRydWUgJiYgcHJvcHMuZGlzYWJsZWQgPT09IGZhbHNlLFxuICAgICAgICAgICAgbGFzdFZhbHVlOiBnZXRWYWx1ZShwcm9wcyksXG4gICAgICAgICAgICB2YWx1ZTogZ2V0VmFsdWUocHJvcHMpLFxuICAgICAgICB9O1xuICAgIH1cblxuICAgIHB1YmxpYyByZW5kZXIoKSB7XG4gICAgICAgIGNvbnN0IHsgZGlzYWJsZWQsIG11bHRpbGluZSB9ID0gdGhpcy5wcm9wcztcbiAgICAgICAgY29uc3QgdmFsdWUgPSAodGhpcy5wcm9wcy52YWx1ZSA9PSBudWxsID8gdGhpcy5zdGF0ZS52YWx1ZSA6IHRoaXMucHJvcHMudmFsdWUpO1xuICAgICAgICBjb25zdCBoYXNWYWx1ZSA9ICh2YWx1ZSAhPSBudWxsICYmIHZhbHVlICE9PSBcIlwiKTtcblxuICAgICAgICBjb25zdCBjbGFzc2VzID0gY2xhc3NOYW1lcyhcbiAgICAgICAgICAgIENsYXNzZXMuRURJVEFCTEVfVEVYVCxcbiAgICAgICAgICAgIENsYXNzZXMuaW50ZW50Q2xhc3ModGhpcy5wcm9wcy5pbnRlbnQpLFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIFtDbGFzc2VzLkRJU0FCTEVEXTogZGlzYWJsZWQsXG4gICAgICAgICAgICAgICAgXCJwdC1lZGl0YWJsZS1lZGl0aW5nXCI6IHRoaXMuc3RhdGUuaXNFZGl0aW5nLFxuICAgICAgICAgICAgICAgIFwicHQtZWRpdGFibGUtcGxhY2Vob2xkZXJcIjogIWhhc1ZhbHVlLFxuICAgICAgICAgICAgICAgIFwicHQtbXVsdGlsaW5lXCI6IG11bHRpbGluZSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB0aGlzLnByb3BzLmNsYXNzTmFtZVxuICAgICAgICApO1xuXG4gICAgICAgIGxldCBjb250ZW50U3R5bGU6IFJlYWN0LkNTU1Byb3BlcnRpZXM7XG4gICAgICAgIGlmIChtdWx0aWxpbmUpIHtcbiAgICAgICAgICAgIC8vIHNldCBoZWlnaHQgb25seSBpbiBtdWx0aWxpbmUgbW9kZSB3aGVuIG5vdCBlZGl0aW5nXG4gICAgICAgICAgICAvLyBvdGhlcndpc2Ugd2UncmUgbWVhc3VyaW5nIHRoaXMgZWxlbWVudCB0byBkZXRlcm1pbmUgYXBwcm9wcmlhdGUgaGVpZ2h0IG9mIHRleHRcbiAgICAgICAgICAgIGNvbnRlbnRTdHlsZSA9IHsgaGVpZ2h0OiAhdGhpcy5zdGF0ZS5pc0VkaXRpbmcgPyB0aGlzLnN0YXRlLmlucHV0SGVpZ2h0IDogbnVsbCB9O1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgLy8gbWluV2lkdGggb25seSBhcHBsaWVzIGluIHNpbmdsZSBsaW5lIG1vZGUgKG11bHRpbGluZSA9PSB3aWR0aCAxMDAlKVxuICAgICAgICAgICAgY29udGVudFN0eWxlID0ge1xuICAgICAgICAgICAgICAgIGhlaWdodDogdGhpcy5zdGF0ZS5pbnB1dEhlaWdodCxcbiAgICAgICAgICAgICAgICBsaW5lSGVpZ2h0OiB0aGlzLnN0YXRlLmlucHV0SGVpZ2h0ICE9IG51bGwgPyBgJHt0aGlzLnN0YXRlLmlucHV0SGVpZ2h0fXB4YCA6IG51bGwsXG4gICAgICAgICAgICAgICAgbWluV2lkdGg6IHRoaXMucHJvcHMubWluV2lkdGgsXG4gICAgICAgICAgICB9O1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gbWFrZSBlbmNsb3NpbmcgZGl2IGZvY3VzYWJsZSB3aGVuIG5vdCBlZGl0aW5nLCBzbyBpdCBjYW4gc3RpbGwgYmUgdGFiYmVkIHRvIGZvY3VzXG4gICAgICAgIC8vICh3aGVuIGVkaXRpbmcsIGlucHV0IGl0c2VsZiBpcyBmb2N1c2FibGUgc28gZGl2IGRvZXNuJ3QgbmVlZCB0byBiZSlcbiAgICAgICAgY29uc3QgdGFiSW5kZXggPSB0aGlzLnN0YXRlLmlzRWRpdGluZyB8fCBkaXNhYmxlZCA/IG51bGwgOiAwO1xuICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9e2NsYXNzZXN9IG9uRm9jdXM9e3RoaXMuaGFuZGxlRm9jdXN9IHRhYkluZGV4PXt0YWJJbmRleH0+XG4gICAgICAgICAgICAgICAge3RoaXMubWF5YmVSZW5kZXJJbnB1dCh2YWx1ZSl9XG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3NOYW1lPVwicHQtZWRpdGFibGUtY29udGVudFwiIHJlZj17dGhpcy5yZWZIYW5kbGVycy5jb250ZW50fSBzdHlsZT17Y29udGVudFN0eWxlfT5cbiAgICAgICAgICAgICAgICAgICAge2hhc1ZhbHVlID8gdmFsdWUgOiB0aGlzLnByb3BzLnBsYWNlaG9sZGVyfVxuICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICApO1xuICAgIH1cblxuICAgIHB1YmxpYyBjb21wb25lbnREaWRNb3VudCgpIHtcbiAgICAgICAgdGhpcy51cGRhdGVJbnB1dERpbWVuc2lvbnMoKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgY29tcG9uZW50RGlkVXBkYXRlKF86IElFZGl0YWJsZVRleHRQcm9wcywgcHJldlN0YXRlOiBJRWRpdGFibGVUZXh0U3RhdGUpIHtcbiAgICAgICAgaWYgKHRoaXMuc3RhdGUuaXNFZGl0aW5nICYmICFwcmV2U3RhdGUuaXNFZGl0aW5nKSB7XG4gICAgICAgICAgICBzYWZlSW52b2tlKHRoaXMucHJvcHMub25FZGl0KTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLnVwZGF0ZUlucHV0RGltZW5zaW9ucygpO1xuICAgIH1cblxuICAgIHB1YmxpYyBjb21wb25lbnRXaWxsUmVjZWl2ZVByb3BzKG5leHRQcm9wczogSUVkaXRhYmxlVGV4dFByb3BzKSB7XG4gICAgICAgIGNvbnN0IHN0YXRlOiBJRWRpdGFibGVUZXh0U3RhdGUgPSB7IHZhbHVlOiBnZXRWYWx1ZShuZXh0UHJvcHMpIH07XG4gICAgICAgIGlmIChuZXh0UHJvcHMuaXNFZGl0aW5nICE9IG51bGwpICB7XG4gICAgICAgICAgICBzdGF0ZS5pc0VkaXRpbmcgPSBuZXh0UHJvcHMuaXNFZGl0aW5nO1xuICAgICAgICB9XG4gICAgICAgIGlmIChuZXh0UHJvcHMuZGlzYWJsZWQgfHwgKG5leHRQcm9wcy5kaXNhYmxlZCA9PSBudWxsICYmIHRoaXMucHJvcHMuZGlzYWJsZWQpKSB7XG4gICAgICAgICAgICBzdGF0ZS5pc0VkaXRpbmcgPSBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLnNldFN0YXRlKHN0YXRlKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgY2FuY2VsRWRpdGluZyA9ICgpID0+IHtcbiAgICAgICAgY29uc3QgeyBsYXN0VmFsdWUgfSA9IHRoaXMuc3RhdGU7XG4gICAgICAgIHRoaXMuc2V0U3RhdGUoeyBpc0VkaXRpbmc6IGZhbHNlLCB2YWx1ZTogbGFzdFZhbHVlIH0pO1xuICAgICAgICAvLyBpbnZva2Ugb25DYW5jZWwgYWZ0ZXIgb25DaGFuZ2Ugc28gY29uc3VtZXJzJyBvbkNhbmNlbCBjYW4gb3ZlcnJpZGUgdGhlaXIgb25DaGFuZ2VcbiAgICAgICAgc2FmZUludm9rZSh0aGlzLnByb3BzLm9uQ2hhbmdlLCBsYXN0VmFsdWUpO1xuICAgICAgICBzYWZlSW52b2tlKHRoaXMucHJvcHMub25DYW5jZWwsIGxhc3RWYWx1ZSk7XG4gICAgfTtcblxuICAgIHB1YmxpYyB0b2dnbGVFZGl0aW5nID0gKCkgPT4ge1xuICAgICAgICBpZiAodGhpcy5zdGF0ZS5pc0VkaXRpbmcpIHtcbiAgICAgICAgICAgIGNvbnN0IHsgdmFsdWUgfSA9IHRoaXMuc3RhdGU7XG4gICAgICAgICAgICB0aGlzLnNldFN0YXRlKHtcbiAgICAgICAgICAgICAgICBpc0VkaXRpbmc6IGZhbHNlLFxuICAgICAgICAgICAgICAgIGxhc3RWYWx1ZTogdmFsdWUsXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIHNhZmVJbnZva2UodGhpcy5wcm9wcy5vbkNoYW5nZSwgdmFsdWUpO1xuICAgICAgICAgICAgc2FmZUludm9rZSh0aGlzLnByb3BzLm9uQ29uZmlybSwgdmFsdWUpO1xuICAgICAgICB9IGVsc2UgaWYgKCF0aGlzLnByb3BzLmRpc2FibGVkKSB7XG4gICAgICAgICAgICB0aGlzLnNldFN0YXRlKHsgaXNFZGl0aW5nOiB0cnVlIH0pO1xuICAgICAgICB9XG4gICAgfTtcblxuICAgIHByaXZhdGUgaGFuZGxlRm9jdXMgPSAoKSA9PiB7XG4gICAgICAgIGlmICghdGhpcy5wcm9wcy5kaXNhYmxlZCkge1xuICAgICAgICAgICAgdGhpcy5zZXRTdGF0ZSh7IGlzRWRpdGluZzogdHJ1ZSB9KTtcbiAgICAgICAgfVxuICAgIH07XG5cbiAgICBwcml2YXRlIGhhbmRsZVRleHRDaGFuZ2UgPSAoZXZlbnQ6IFJlYWN0LkZvcm1FdmVudDxIVE1MRWxlbWVudD4pID0+IHtcbiAgICAgICAgY29uc3QgdmFsdWUgPSAoZXZlbnQudGFyZ2V0IGFzIEhUTUxJbnB1dEVsZW1lbnQpLnZhbHVlO1xuICAgICAgICB0aGlzLnNldFN0YXRlKHsgdmFsdWUgfSk7XG4gICAgICAgIHNhZmVJbnZva2UodGhpcy5wcm9wcy5vbkNoYW5nZSwgdmFsdWUpO1xuICAgIH07XG5cbiAgICBwcml2YXRlIGhhbmRsZUtleUV2ZW50ID0gKHsgY3RybEtleSwgbWV0YUtleSwgd2hpY2ggfTogUmVhY3QuS2V5Ym9hcmRFdmVudDxIVE1MRWxlbWVudD4pID0+IHtcbiAgICAgICAgaWYgKHdoaWNoID09PSBLZXlzLkVOVEVSICYmICghdGhpcy5wcm9wcy5tdWx0aWxpbmUgfHwgY3RybEtleSB8fCBtZXRhS2V5KSkge1xuICAgICAgICAgICAgdGhpcy50b2dnbGVFZGl0aW5nKCk7XG4gICAgICAgIH0gZWxzZSBpZiAod2hpY2ggPT09IEtleXMuRVNDQVBFKSB7XG4gICAgICAgICAgICB0aGlzLmNhbmNlbEVkaXRpbmcoKTtcbiAgICAgICAgfVxuICAgIH07XG5cbiAgICBwcml2YXRlIG1heWJlUmVuZGVySW5wdXQodmFsdWU6IHN0cmluZykge1xuICAgICAgICBjb25zdCB7IG11bHRpbGluZSB9ID0gdGhpcy5wcm9wcztcbiAgICAgICAgaWYgKCF0aGlzLnN0YXRlLmlzRWRpdGluZykge1xuICAgICAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBwcm9wczogUmVhY3QuSFRNTFByb3BzPEhUTUxJbnB1dEVsZW1lbnQgfCBIVE1MVGV4dEFyZWFFbGVtZW50PiA9IHtcbiAgICAgICAgICAgIGNsYXNzTmFtZTogXCJwdC1lZGl0YWJsZS1pbnB1dFwiLFxuICAgICAgICAgICAgb25CbHVyOiB0aGlzLnRvZ2dsZUVkaXRpbmcsXG4gICAgICAgICAgICBvbkNoYW5nZTogdGhpcy5oYW5kbGVUZXh0Q2hhbmdlLFxuICAgICAgICAgICAgb25LZXlEb3duOiB0aGlzLmhhbmRsZUtleUV2ZW50LFxuICAgICAgICAgICAgcmVmOiB0aGlzLnJlZkhhbmRsZXJzLmlucHV0LFxuICAgICAgICAgICAgc3R5bGU6IHtcbiAgICAgICAgICAgICAgICBoZWlnaHQ6IHRoaXMuc3RhdGUuaW5wdXRIZWlnaHQsXG4gICAgICAgICAgICAgICAgbGluZUhlaWdodDogIW11bHRpbGluZSAmJiB0aGlzLnN0YXRlLmlucHV0SGVpZ2h0ICE9IG51bGwgPyBgJHt0aGlzLnN0YXRlLmlucHV0SGVpZ2h0fXB4YCA6IG51bGwsXG4gICAgICAgICAgICAgICAgd2lkdGg6IG11bHRpbGluZSA/IFwiMTAwJVwiIDogdGhpcy5zdGF0ZS5pbnB1dFdpZHRoLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHZhbHVlLFxuICAgICAgICB9O1xuICAgICAgICByZXR1cm4gbXVsdGlsaW5lID8gPHRleHRhcmVhIHsuLi5wcm9wc30gLz4gOiA8aW5wdXQgdHlwZT1cInRleHRcIiB7Li4ucHJvcHN9IC8+O1xuICAgIH1cblxuICAgIHByaXZhdGUgdXBkYXRlSW5wdXREaW1lbnNpb25zKCkge1xuICAgICAgICBpZiAodGhpcy52YWx1ZUVsZW1lbnQgIT0gbnVsbCkge1xuICAgICAgICAgICAgY29uc3QgeyBtYXhMaW5lcywgbWluTGluZXMsIG1pbldpZHRoLCBtdWx0aWxpbmUgfSA9IHRoaXMucHJvcHM7XG4gICAgICAgICAgICBsZXQgeyBwYXJlbnRFbGVtZW50LCBzY3JvbGxIZWlnaHQsIHNjcm9sbFdpZHRoLCB0ZXh0Q29udGVudCB9ID0gdGhpcy52YWx1ZUVsZW1lbnQ7XG4gICAgICAgICAgICBjb25zdCBsaW5lSGVpZ2h0ID0gZ2V0TGluZUhlaWdodCh0aGlzLnZhbHVlRWxlbWVudCk7XG4gICAgICAgICAgICAvLyBhZGQgb25lIGxpbmUgdG8gY29tcHV0ZWQgPHNwYW4+IGhlaWdodCBpZiB0ZXh0IGVuZHMgaW4gbmV3bGluZVxuICAgICAgICAgICAgLy8gYmVjYXVzZSA8c3Bhbj4gY29sbGFwc2VzIHRoYXQgdHJhaWxpbmcgd2hpdGVzcGFjZSBidXQgPHRleHRhcmVhPiBzaG93cyBpdFxuICAgICAgICAgICAgaWYgKG11bHRpbGluZSAmJiB0aGlzLnN0YXRlLmlzRWRpdGluZyAmJiAvXFxuJC8udGVzdCh0ZXh0Q29udGVudCkpIHtcbiAgICAgICAgICAgICAgICBzY3JvbGxIZWlnaHQgKz0gbGluZUhlaWdodDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChsaW5lSGVpZ2h0ID4gMCkge1xuICAgICAgICAgICAgICAgIC8vIGxpbmUgaGVpZ2h0IGNvdWxkIGJlIDAgaWYgdGhlIGlzTmFOIGJsb2NrIGZyb20gZ2V0TGluZUhlaWdodCBraWNrcyBpblxuICAgICAgICAgICAgICAgIHNjcm9sbEhlaWdodCA9IGNsYW1wKHNjcm9sbEhlaWdodCwgbWluTGluZXMgKiBsaW5lSGVpZ2h0LCBtYXhMaW5lcyAqIGxpbmVIZWlnaHQpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgLy8gQ2hyb21lJ3MgaW5wdXQgY2FyZXQgaGVpZ2h0IG1pc2FsaWducyB0ZXh0IHNvIHRoZSBsaW5lLWhlaWdodCBtdXN0IGJlIGxhcmdlciB0aGFuIGZvbnQtc2l6ZS5cbiAgICAgICAgICAgIC8vIFRoZSBjb21wdXRlZCBzY3JvbGxIZWlnaHQgbXVzdCBhbHNvIGFjY291bnQgZm9yIGEgbGFyZ2VyIGluaGVyaXRlZCBsaW5lLWhlaWdodCBmcm9tIHRoZSBwYXJlbnQuXG4gICAgICAgICAgICBzY3JvbGxIZWlnaHQgPSBNYXRoLm1heChzY3JvbGxIZWlnaHQsIGdldEZvbnRTaXplKHRoaXMudmFsdWVFbGVtZW50KSArIDEsIGdldExpbmVIZWlnaHQocGFyZW50RWxlbWVudCkpO1xuICAgICAgICAgICAgLy8gSUUxMSBuZWVkcyBhIHNtYWxsIGJ1ZmZlciBzbyB0ZXh0IGRvZXMgbm90IHNoaWZ0IHByaW9yIHRvIHJlc2l6aW5nXG4gICAgICAgICAgICB0aGlzLnNldFN0YXRlKHtcbiAgICAgICAgICAgICAgICBpbnB1dEhlaWdodDogc2Nyb2xsSGVpZ2h0LFxuICAgICAgICAgICAgICAgIGlucHV0V2lkdGg6IE1hdGgubWF4KHNjcm9sbFdpZHRoICsgQlVGRkVSX1dJRFRILCBtaW5XaWR0aCksXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIC8vIHN5bmNocm9uaXplcyB0aGUgOjpiZWZvcmUgcHNldWRvLWVsZW1lbnQncyBoZWlnaHQgd2hpbGUgZWRpdGluZyBmb3IgQ2hyb21lIDUzXG4gICAgICAgICAgICBpZiAobXVsdGlsaW5lICYmIHRoaXMuc3RhdGUuaXNFZGl0aW5nKSB7XG4gICAgICAgICAgICAgICAgc2V0VGltZW91dCgoKSA9PiBwYXJlbnRFbGVtZW50LnN0eWxlLmhlaWdodCA9IGAke3Njcm9sbEhlaWdodH1weGApO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxufVxuXG5mdW5jdGlvbiBnZXRWYWx1ZShwcm9wczogSUVkaXRhYmxlVGV4dFByb3BzKSB7XG4gICAgcmV0dXJuIHByb3BzLnZhbHVlID09IG51bGwgPyBwcm9wcy5kZWZhdWx0VmFsdWUgOiBwcm9wcy52YWx1ZTtcbn1cblxuZnVuY3Rpb24gZ2V0Rm9udFNpemUoZWxlbWVudDogSFRNTEVsZW1lbnQpIHtcbiAgICBjb25zdCBmb250U2l6ZSA9IGdldENvbXB1dGVkU3R5bGUoZWxlbWVudCkuZm9udFNpemU7XG4gICAgcmV0dXJuIGZvbnRTaXplID09PSBcIlwiID8gMCA6IHBhcnNlSW50KGZvbnRTaXplLnNsaWNlKDAsIC0yKSwgMTApO1xufVxuXG5mdW5jdGlvbiBnZXRMaW5lSGVpZ2h0KGVsZW1lbnQ6IEhUTUxFbGVtZW50KSB7XG4gICAgLy8gZ2V0Q29tcHV0ZWRTdHlsZSgpID0+IDE4LjAwMDFweCA9PiAxOFxuICAgIGxldCBsaW5lSGVpZ2h0ID0gcGFyc2VJbnQoZ2V0Q29tcHV0ZWRTdHlsZShlbGVtZW50KS5saW5lSGVpZ2h0LnNsaWNlKDAsIC0yKSwgMTApO1xuICAgIC8vIHRoaXMgY2hlY2sgd2lsbCBiZSB0cnVlIGlmIGxpbmUtaGVpZ2h0IGlzIGEga2V5d29yZCBsaWtlIFwibm9ybWFsXCJcbiAgICBpZiAoaXNOYU4obGluZUhlaWdodCkpIHtcbiAgICAgICAgLy8gQHNlZSBodHRwOi8vc3RhY2tvdmVyZmxvdy5jb20vYS8xODQzMDc2Ny82MzQyOTMxXG4gICAgICAgIGNvbnN0IGxpbmUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KFwic3BhblwiKTtcbiAgICAgICAgbGluZS5pbm5lckhUTUwgPSBcIjxicj5cIjtcbiAgICAgICAgZWxlbWVudC5hcHBlbmRDaGlsZChsaW5lKTtcbiAgICAgICAgY29uc3Qgc2luZ2xlTGluZUhlaWdodCA9IGVsZW1lbnQub2Zmc2V0SGVpZ2h0O1xuICAgICAgICBsaW5lLmlubmVySFRNTCA9IFwiPGJyPjxicj5cIjtcbiAgICAgICAgY29uc3QgZG91YmxlTGluZUhlaWdodCA9IGVsZW1lbnQub2Zmc2V0SGVpZ2h0O1xuICAgICAgICBlbGVtZW50LnJlbW92ZUNoaWxkKGxpbmUpO1xuICAgICAgICAvLyB0aGlzIGNhbiByZXR1cm4gMCBpbiBlZGdlIGNhc2VzXG4gICAgICAgIGxpbmVIZWlnaHQgPSBkb3VibGVMaW5lSGVpZ2h0IC0gc2luZ2xlTGluZUhlaWdodDtcbiAgICB9XG4gICAgcmV0dXJuIGxpbmVIZWlnaHQ7XG59XG5cbmV4cG9ydCB2YXIgRWRpdGFibGVUZXh0RmFjdG9yeSA9IFJlYWN0LmNyZWF0ZUZhY3RvcnkoRWRpdGFibGVUZXh0KTtcbiJdLCJzb3VyY2VSb290IjoiL3NvdXJjZS8ifQ==
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9jb21wb25lbnRzL2VkaXRhYmxlLXRleHQvZWRpdGFibGVUZXh0LnRzeCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7O0dBR0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUVILElBQVksVUFBVSxXQUFNLFlBQVksQ0FBQyxDQUFBO0FBQ3pDLElBQVksVUFBVSxXQUFNLHVCQUF1QixDQUFDLENBQUE7QUFDcEQsSUFBWSxLQUFLLFdBQU0sT0FBTyxDQUFDLENBQUE7QUFFL0IsSUFBWSxPQUFPLFdBQU0sc0JBQXNCLENBQUMsQ0FBQTtBQUNoRCxJQUFZLElBQUksV0FBTSxtQkFBbUIsQ0FBQyxDQUFBO0FBRTFDLHNCQUFrQyxvQkFBb0IsQ0FBQyxDQUFBO0FBOEV2RCxJQUFNLFlBQVksR0FBRyxFQUFFLENBQUM7QUFHeEI7SUFBa0MsZ0NBQXVEO0lBeUJyRixzQkFBbUIsS0FBMEIsRUFBRSxPQUFhO1FBekJoRSxpQkFtTUM7UUF6S08sa0JBQU0sS0FBSyxFQUFFLE9BQU8sQ0FBQyxDQUFDO1FBZGxCLGdCQUFXLEdBQUc7WUFDbEIsT0FBTyxFQUFFLFVBQUMsV0FBNEI7Z0JBQ2xDLEtBQUksQ0FBQyxZQUFZLEdBQUcsV0FBVyxDQUFDO1lBQ3BDLENBQUM7WUFDRCxLQUFLLEVBQUUsVUFBQyxLQUE2QztnQkFDakQsRUFBRSxDQUFDLENBQUMsS0FBSyxJQUFJLElBQUksQ0FBQyxDQUFDLENBQUM7b0JBQ2hCLEtBQUssQ0FBQyxLQUFLLEVBQUUsQ0FBQztvQkFDTixpQ0FBTSxDQUFpQjtvQkFDL0IsS0FBSyxDQUFDLGlCQUFpQixDQUFDLEtBQUksQ0FBQyxLQUFLLENBQUMsZ0JBQWdCLEdBQUcsQ0FBQyxHQUFHLFFBQU0sRUFBRSxRQUFNLENBQUMsQ0FBQztnQkFDOUUsQ0FBQztZQUNMLENBQUM7U0FDSixDQUFDO1FBZ0ZLLGtCQUFhLEdBQUc7WUFDWCxxQ0FBUyxDQUFnQjtZQUNqQyxLQUFJLENBQUMsUUFBUSxDQUFDLEVBQUUsU0FBUyxFQUFF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RUQsdUJBQXVCLE9BQW9CO0lBQ3ZDLHdDQUF3QztJQUN4QyxJQUFJLFVBQVUsR0FBRyxRQUFRLENBQUMsZ0JBQWdCLENBQUMsT0FBTyxDQUFDLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQztJQUNqRixvRUFBb0U7SUFDcEUsRUFBRSxDQUFDLENBQUMsS0FBSyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUNwQixtREFBbUQ7UUFDbkQsSUFBTSxJQUFJLEdBQUcsUUFBUSxDQUFDLGFBQWEsQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUM1QyxJQUFJLENBQUMsU0FBUyxHQUFHLE1BQU0sQ0FBQztRQUN4QixPQUFPLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQzFCLElBQU0sZ0JBQWdCLEdBQUcsT0FBTyxDQUFDLFlBQVksQ0FBQztRQUM5QyxJQUFJLENBQUMsU0FBUyxHQUFHLFVBQVUsQ0FBQztRQUM1QixJQUFNLGdCQUFnQixHQUFHLE9BQU8sQ0FBQyxZQUFZLENBQUM7UUFDOUMsT0FBTyxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUMxQixrQ0FBa0M7UUFDbEMsVUFBVSxHQUFHLGdCQUFnQixHQUFHLGdCQUFnQixDQUFDO0lBQ3JELENBQUM7SUFDRCxNQUFNLENBQUMsVUFBVSxDQUFDO0FBQ3RCLENBQUM7QUFFVSwyQkFBbUIsR0FBRyxLQUFLLENBQUMsYUFBYSxDQUFDLFlBQVksQ0FBQyxDQUFDIiwiZmlsZSI6ImNvbXBvbmVudHMvZWRpdGFibGUtdGV4dC9lZGl0YWJsZVRleHQuanMiLCJzb3VyY2VzQ29udGVudCI6WyIvKlxuICogQ29weXJpZ2h0IDIwMTYgUGFsYW50aXIgVGVjaG5vbG9naWVzLCBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wIC0gaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKi9cblxuaW1wb3J0ICogYXMgY2xhc3NOYW1lcyBmcm9tIFwiY2xhc3NuYW1lc1wiO1xuaW1wb3J0ICogYXMgUHVyZVJlbmRlciBmcm9tIFwicHVyZS1yZW5kZXItZGVjb3JhdG9yXCI7XG5pbXBvcnQgKiBhcyBSZWFjdCBmcm9tIFwicmVhY3RcIjtcblxuaW1wb3J0ICogYXMgQ2xhc3NlcyBmcm9tIFwiLi4vLi4vY29tbW9uL2NsYXNzZXNcIjtcbmltcG9ydCAqIGFzIEtleXMgZnJvbSBcIi4uLy4uL2NvbW1vbi9rZXlzXCI7XG5pbXBvcnQgeyBJSW50ZW50UHJvcHMsIElQcm9wcyB9IGZyb20gXCIuLi8uLi9jb21tb24vcHJvcHNcIjtcbmltcG9ydCB7IGNsYW1wLCBzYWZlSW52b2tlIH0gZnJvbSBcIi4uLy4uL2NvbW1vbi91dGlsc1wiO1xuXG5leHBvcnQgaW50ZXJmYWNlIElFZGl0YWJsZVRleHRQcm9wcyBleHRlbmRzIElJbnRlbnRQcm9wcywgSVByb3BzIHtcbiAgICAvKiogRGVmYXVsdCB0ZXh0IHZhbHVlIG9mIHVuY29udHJvbGxlZCBpbnB1dC4gKi9cbiAgICBkZWZhdWx0VmFsdWU/OiBzdHJpbmc7XG5cbiAgICAvKipcbiAgICAgKiBXaGV0aGVyIHRoZSB0ZXh0IGNhbiBiZSBlZGl0ZWQuXG4gICAgICogQGRlZmF1bHQgZmFsc2VcbiAgICAgKi9cbiAgICBkaXNhYmxlZD86IGJvb2xlYW47XG5cbiAgICAvKiogV2hldGhlciB0aGUgY29tcG9uZW50IGlzIGN1cnJlbnRseSBiZWluZyBlZGl0ZWQuICovXG4gICAgaXNFZGl0aW5nPzogYm9vbGVhbjtcblxuICAgIC8qKiBNaW5pbXVtIHdpZHRoIGluIHBpeGVscyBvZiB0aGUgaW5wdXQsIHdoZW4gbm90IGBtdWx0aWxpbmVgLiAqL1xuICAgIG1pbldpZHRoPzogbnVtYmVyO1xuXG4gICAgLyoqXG4gICAgICogV2hldGhlciB0aGUgY29tcG9uZW50IHN1cHBvcnRzIG11bHRpcGxlIGxpbmVzIG9mIHRleHQuXG4gICAgICogVGhpcyBwcm9wIHNob3VsZCBub3QgYmUgY2hhbmdlZCBkdXJpbmcgdGhlIGNvbXBvbmVudCdzIGxpZmV0aW1lLlxuICAgICAqIEBkZWZhdWx0IGZhbHNlXG4gICAgICovXG4gICAgbXVsdGlsaW5lPzogYm9vbGVhbjtcblxuICAgIC8qKlxuICAgICAqIE1heGltdW0gbnVtYmVyIG9mIGxpbmVzIGJlZm9yZSBzY3JvbGxpbmcgYmVnaW5zLCB3aGVuIGBtdWx0aWxpbmVgLlxuICAgICAqL1xuICAgIG1heExpbmVzPzogbnVtYmVyO1xuXG4gICAgLyoqXG4gICAgICogTWluaW11bSBudW1iZXIgb2YgbGluZXMgKGVzc2VudGlhbGx5IG1pbmltdW0gaGVpZ2h0KSwgd2hlbiBgbXVsdGlsaW5lYC5cbiAgICAgKiBAZGVmYXVsdCAxXG4gICAgICovXG4gICAgbWluTGluZXM/OiBudW1iZXI7XG5cbiAgICAvKipcbiAgICAgKiBQbGFjZWhvbGRlciB0ZXh0IHdoZW4gdGhlcmUgaXMgbm8gdmFsdWUuXG4gICAgICogQGRlZmF1bHQgXCJDbGljayB0byBFZGl0XCJcbiAgICAgKi9cbiAgICBwbGFjZWhvbGRlcj86IHN0cmluZztcblxuICAgIC8qKlxuICAgICAqIFdoZXRoZXIgdGhlIGVudGlyZSB0ZXh0IGZpZWxkIHNob3VsZCBiZSBzZWxlY3RlZCBvbiBmb2N1cy5cbiAgICAgKiBJZiBmYWxzZSwgdGhlIGN1cnNvciBpcyBwbGFjZWQgYXQgdGhlIGVuZCBvZiB0aGUgdGV4dC5cbiAgICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgICAqL1xuICAgIHNlbGVjdEFsbE9uRm9jdXM/OiBib29sZWFuO1xuXG4gICAgLyoqIFRleHQgdmFsdWUgb2YgY29udHJvbGxlZCBpbnB1dC4gKi9cbiAgICB2YWx1ZT86IHN0cmluZztcblxuICAgIC8qKiBDYWxsYmFjayBpbnZva2VkIHdoZW4gdXNlciBjYW5jZWxzIGlucHV0IHdpdGggdGhlIGBlc2NgIGtleS4gUmVjZWl2ZXMgbGFzdCBjb25maXJtZWQgdmFsdWUuICovXG4gICAgb25DYW5jZWw/KHZhbHVlOiBzdHJpbmcpOiB2b2lkO1xuXG4gICAgLyoqIENhbGxiYWNrIGludm9rZWQgd2hlbiB1c2VyIGNoYW5nZXMgaW5wdXQgaW4gYW55IHdheS4gKi9cbiAgICBvbkNoYW5nZT8odmFsdWU6IHN0cmluZyk6IHZvaWQ7XG5cbiAgICAvKiogQ2FsbGJhY2sgaW52b2tlZCB3aGVuIHVzZXIgY29uZmlybXMgdmFsdWUgd2l0aCBgZW50ZXJgIGtleSBvciBieSBibHVycmluZyBpbnB1dC4gKi9cbiAgICBvbkNvbmZpcm0/KHZhbHVlOiBzdHJpbmcpOiB2b2lkO1xuXG4gICAgLyoqIENhbGxiYWNrIGludm9rZWQgYWZ0ZXIgdGhlIHVzZXIgZW50ZXJzIGVkaXQgbW9kZS4gKi9cbiAgICBvbkVkaXQ/KCk6IHZvaWQ7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSUVkaXRhYmxlVGV4dFN0YXRlIHtcbiAgICAvKiogUGl4ZWwgaGVpZ2h0IG9mIHRoZSBpbnB1dCwgbWVhc3VyZWQgZnJvbSBzcGFuIHNpemUgKi9cbiAgICBpbnB1dEhlaWdodD86IG51bWJlcjtcbiAgICAvKiogUGl4ZWwgd2lkdGggb2YgdGhlIGlucHV0LCBtZWFzdXJlZCBmcm9tIHNwYW4gc2l6ZSAqL1xuICAgIGlucHV0V2lkdGg/OiBudW1iZXI7XG4gICAgLyoqIFdoZXRoZXIgdGhlIHZhbHVlIGlzIGN1cnJlbnRseSBiZWluZyBlZGl0ZWQgKi9cbiAgICBpc0VkaXRpbmc/OiBib29sZWFuO1xuICAgIC8qKiBUaGUgbGFzdCBjb25maXJtZWQgdmFsdWUgKi9cbiAgICBsYXN0VmFsdWU/OiBzdHJpbmc7XG4gICAgLyoqIFRoZSBjb250cm9sbGVkIGlucHV0IHZhbHVlLCBtYXkgYmUgZGlmZmVyZW50IGZyb20gcHJvcCBkdXJpbmcgZWRpdGluZyAqL1xuICAgIHZhbHVlPzogc3RyaW5nO1xufVxuXG5jb25zdCBCVUZGRVJfV0lEVEggPSAzMDtcblxuQFB1cmVSZW5kZXJcbmV4cG9ydCBjbGFzcyBFZGl0YWJsZVRleHQgZXh0ZW5kcyBSZWFjdC5Db21wb25lbnQ8SUVkaXRhYmxlVGV4dFByb3BzLCBJRWRpdGFibGVUZXh0U3RhdGU+IHtcbiAgICBwdWJsaWMgc3RhdGljIGRlZmF1bHRQcm9wczogSUVkaXRhYmxlVGV4dFByb3BzID0ge1xuICAgICAgICBkZWZhdWx0VmFsdWU6IFwiXCIsXG4gICAgICAgIGRpc2FibGVkOiBmYWxzZSxcbiAgICAgICAgbWF4TGluZXM6IEluZmluaXR5LFxuICAgICAgICBtaW5MaW5lczogMSxcbiAgICAgICAgbWluV2lkdGg6IDgwLFxuICAgICAgICBtdWx0aWxpbmU6IGZhbHNlLFxuICAgICAgICBwbGFjZWhvbGRlcjogXCJDbGljayB0byBFZGl0XCIsXG4gICAgfTtcblxuICAgIHByaXZhdGUgdmFsdWVFbGVtZW50OiBIVE1MU3BhbkVsZW1lbnQ7XG4gICAgcHJpdmF0ZSByZWZIYW5kbGVycyA9IHtcbiAgICAgICAgY29udGVudDogKHNwYW5FbGVtZW50OiBIVE1MU3BhbkVsZW1lbnQpID0+IHtcbiAgICAgICAgICAgIHRoaXMudmFsdWVFbGVtZW50ID0gc3BhbkVsZW1lbnQ7XG4gICAgICAgIH0sXG4gICAgICAgIGlucHV0OiAoaW5wdXQ6IEhUTUxJbnB1dEVsZW1lbnQgfCBIVE1MVGV4dEFyZWFFbGVtZW50KSA9PiB7XG4gICAgICAgICAgICBpZiAoaW5wdXQgIT0gbnVsbCkge1xuICAgICAgICAgICAgICAgIGlucHV0LmZvY3VzKCk7XG4gICAgICAgICAgICAgICAgY29uc3QgeyBsZW5ndGggfSA9IGlucHV0LnZhbHVlO1xuICAgICAgICAgICAgICAgIGlucHV0LnNldFNlbGVjdGlvblJhbmdlKHRoaXMucHJvcHMuc2VsZWN0QWxsT25Gb2N1cyA/IDAgOiBsZW5ndGgsIGxlbmd0aCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgfTtcblxuICAgIHB1YmxpYyBjb25zdHJ1Y3Rvcihwcm9wcz86IElFZGl0YWJsZVRleHRQcm9wcywgY29udGV4dD86IGFueSkge1xuICAgICAgICBzdXBlcihwcm9wcywgY29udGV4dCk7XG5cbiAgICAgICAgdGhpcy5zdGF0ZSA9IHtcbiAgICAgICAgICAgIGlucHV0SGVpZ2h0OiAwLFxuICAgICAgICAgICAgaW5wdXRXaWR0aDogMCxcbiAgICAgICAgICAgIGlzRWRpdGluZzogcHJvcHMuaXNFZGl0aW5nID09PSB0cnVlICYmIHByb3BzLmRpc2FibGVkID09PSBmYWxzZSxcbiAgICAgICAgICAgIGxhc3RWYWx1ZTogZ2V0VmFsdWUocHJvcHMpLFxuICAgICAgICAgICAgdmFsdWU6IGdldFZhbHVlKHByb3BzKSxcbiAgICAgICAgfTtcbiAgICB9XG5cbiAgICBwdWJsaWMgcmVuZGVyKCkge1xuICAgICAgICBjb25zdCB7IGRpc2FibGVkLCBtdWx0aWxpbmUgfSA9IHRoaXMucHJvcHM7XG4gICAgICAgIGNvbnN0IHZhbHVlID0gKHRoaXMucHJvcHMudmFsdWUgPT0gbnVsbCA/IHRoaXMuc3RhdGUudmFsdWUgOiB0aGlzLnByb3BzLnZhbHVlKTtcbiAgICAgICAgY29uc3QgaGFzVmFsdWUgPSAodmFsdWUgIT0gbnVsbCAmJiB2YWx1ZSAhPT0gXCJcIik7XG5cbiAgICAgICAgY29uc3QgY2xhc3NlcyA9IGNsYXNzTmFtZXMoXG4gICAgICAgICAgICBDbGFzc2VzLkVESVRBQkxFX1RFWFQsXG4gICAgICAgICAgICBDbGFzc2VzLmludGVudENsYXNzKHRoaXMucHJvcHMuaW50ZW50KSxcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBbQ2xhc3Nlcy5ESVNBQkxFRF06IGRpc2FibGVkLFxuICAgICAgICAgICAgICAgIFwicHQtZWRpdGFibGUtZWRpdGluZ1wiOiB0aGlzLnN0YXRlLmlzRWRpdGluZyxcbiAgICAgICAgICAgICAgICBcInB0LWVkaXRhYmxlLXBsYWNlaG9sZGVyXCI6ICFoYXNWYWx1ZSxcbiAgICAgICAgICAgICAgICBcInB0LW11bHRpbGluZVwiOiBtdWx0aWxpbmUsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgdGhpcy5wcm9wcy5jbGFzc05hbWVcbiAgICAgICAgKTtcblxuICAgICAgICBsZXQgY29udGVudFN0eWxlOiBSZWFjdC5DU1NQcm9wZXJ0aWVzO1xuICAgICAgICBpZiAobXVsdGlsaW5lKSB7XG4gICAgICAgICAgICAvLyBzZXQgaGVpZ2h0IG9ubHkgaW4gbXVsdGlsaW5lIG1vZGUgd2hlbiBub3QgZWRpdGluZ1xuICAgICAgICAgICAgLy8gb3RoZXJ3aXNlIHdlJ3JlIG1lYXN1cmluZyB0aGlzIGVsZW1lbnQgdG8gZGV0ZXJtaW5lIGFwcHJvcHJpYXRlIGhlaWdodCBvZiB0ZXh0XG4gICAgICAgICAgICBjb250ZW50U3R5bGUgPSB7IGhlaWdodDogIXRoaXMuc3RhdGUuaXNFZGl0aW5nID8gdGhpcy5zdGF0ZS5pbnB1dEhlaWdodCA6IG51bGwgfTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIC8vIG1pbldpZHRoIG9ubHkgYXBwbGllcyBpbiBzaW5nbGUgbGluZSBtb2RlIChtdWx0aWxpbmUgPT0gd2lkdGggMTAwJSlcbiAgICAgICAgICAgIGNvbnRlbnRTdHlsZSA9IHtcbiAgICAgICAgICAgICAgICBoZWlnaHQ6IHRoaXMuc3RhdGUuaW5wdXRIZWlnaHQsXG4gICAgICAgICAgICAgICAgbGluZUhlaWdodDogdGhpcy5zdGF0ZS5pbnB1dEhlaWdodCAhPSBudWxsID8gYCR7dGhpcy5zdGF0ZS5pbnB1dEhlaWdodH1weGAgOiBudWxsLFxuICAgICAgICAgICAgICAgIG1pbldpZHRoOiB0aGlzLnByb3BzLm1pbldpZHRoLFxuICAgICAgICAgICAgfTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIG1ha2UgZW5jbG9zaW5nIGRpdiBmb2N1c2FibGUgd2hlbiBub3QgZWRpdGluZywgc28gaXQgY2FuIHN0aWxsIGJlIHRhYmJlZCB0byBmb2N1c1xuICAgICAgICAvLyAod2hlbiBlZGl0aW5nLCBpbnB1dCBpdHNlbGYgaXMgZm9jdXNhYmxlIHNvIGRpdiBkb2Vzbid0IG5lZWQgdG8gYmUpXG4gICAgICAgIGNvbnN0IHRhYkluZGV4ID0gdGhpcy5zdGF0ZS5pc0VkaXRpbmcgfHwgZGlzYWJsZWQgPyBudWxsIDogMDtcbiAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPXtjbGFzc2VzfSBvbkZvY3VzPXt0aGlzLmhhbmRsZUZvY3VzfSB0YWJJbmRleD17dGFiSW5kZXh9PlxuICAgICAgICAgICAgICAgIHt0aGlzLm1heWJlUmVuZGVySW5wdXQodmFsdWUpfVxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzTmFtZT1cInB0LWVkaXRhYmxlLWNvbnRlbnRcIiByZWY9e3RoaXMucmVmSGFuZGxlcnMuY29udGVudH0gc3R5bGU9e2NvbnRlbnRTdHlsZX0+XG4gICAgICAgICAgICAgICAgICAgIHtoYXNWYWx1ZSA/IHZhbHVlIDogdGhpcy5wcm9wcy5wbGFjZWhvbGRlcn1cbiAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgY29tcG9uZW50RGlkTW91bnQoKSB7XG4gICAgICAgIHRoaXMudXBkYXRlSW5wdXREaW1lbnNpb25zKCk7XG4gICAgfVxuXG4gICAgcHVibGljIGNvbXBvbmVudERpZFVwZGF0ZShfOiBJRWRpdGFibGVUZXh0UHJvcHMsIHByZXZTdGF0ZTogSUVkaXRhYmxlVGV4dFN0YXRlKSB7XG4gICAgICAgIGlmICh0aGlzLnN0YXRlLmlzRWRpdGluZyAmJiAhcHJldlN0YXRlLmlzRWRpdGluZykge1xuICAgICAgICAgICAgc2FmZUludm9rZSh0aGlzLnByb3BzLm9uRWRpdCk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy51cGRhdGVJbnB1dERpbWVuc2lvbnMoKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgY29tcG9uZW50V2lsbFJlY2VpdmVQcm9wcyhuZXh0UHJvcHM6IElFZGl0YWJsZVRleHRQcm9wcykge1xuICAgICAgICBjb25zdCBzdGF0ZTogSUVkaXRhYmxlVGV4dFN0YXRlID0geyB2YWx1ZTogZ2V0VmFsdWUobmV4dFByb3BzKSB9O1xuICAgICAgICBpZiAobmV4dFByb3BzLmlzRWRpdGluZyAhPSBudWxsKSAge1xuICAgICAgICAgICAgc3RhdGUuaXNFZGl0aW5nID0gbmV4dFByb3BzLmlzRWRpdGluZztcbiAgICAgICAgfVxuICAgICAgICBpZiAobmV4dFByb3BzLmRpc2FibGVkIHx8IChuZXh0UHJvcHMuZGlzYWJsZWQgPT0gbnVsbCAmJiB0aGlzLnByb3BzLmRpc2FibGVkKSkge1xuICAgICAgICAgICAgc3RhdGUuaXNFZGl0aW5nID0gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5zZXRTdGF0ZShzdGF0ZSk7XG4gICAgfVxuXG4gICAgcHVibGljIGNhbmNlbEVkaXRpbmcgPSAoKSA9PiB7XG4gICAgICAgIGNvbnN0IHsgbGFzdFZhbHVlIH0gPSB0aGlzLnN0YXRlO1xuICAgICAgICB0aGlzLnNldFN0YXRlKHsgaXNFZGl0aW5nOiBmYWxzZSwgdmFsdWU6IGxhc3RWYWx1ZSB9KTtcbiAgICAgICAgLy8gaW52b2tlIG9uQ2FuY2VsIGFmdGVyIG9uQ2hhbmdlIHNvIGNvbnN1bWVycycgb25DYW5jZWwgY2FuIG92ZXJyaWRlIHRoZWlyIG9uQ2hhbmdlXG4gICAgICAgIHNhZmVJbnZva2UodGhpcy5wcm9wcy5vbkNoYW5nZSwgbGFzdFZhbHVlKTtcbiAgICAgICAgc2FmZUludm9rZSh0aGlzLnByb3BzLm9uQ2FuY2VsLCBsYXN0VmFsdWUpO1xuICAgIH07XG5cbiAgICBwdWJsaWMgdG9nZ2xlRWRpdGluZyA9ICgpID0+IHtcbiAgICAgICAgaWYgKHRoaXMuc3RhdGUuaXNFZGl0aW5nKSB7XG4gICAgICAgICAgICBjb25zdCB7IHZhbHVlIH0gPSB0aGlzLnN0YXRlO1xuICAgICAgICAgICAgdGhpcy5zZXRTdGF0ZSh7XG4gICAgICAgICAgICAgICAgaXNFZGl0aW5nOiBmYWxzZSxcbiAgICAgICAgICAgICAgICBsYXN0VmFsdWU6IHZhbHVlLFxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICBzYWZlSW52b2tlKHRoaXMucHJvcHMub25DaGFuZ2UsIHZhbHVlKTtcbiAgICAgICAgICAgIHNhZmVJbnZva2UodGhpcy5wcm9wcy5vbkNvbmZpcm0sIHZhbHVlKTtcbiAgICAgICAgfSBlbHNlIGlmICghdGhpcy5wcm9wcy5kaXNhYmxlZCkge1xuICAgICAgICAgICAgdGhpcy5zZXRTdGF0ZSh7IGlzRWRpdGluZzogdHJ1ZSB9KTtcbiAgICAgICAgfVxuICAgIH07XG5cbiAgICBwcml2YXRlIGhhbmRsZUZvY3VzID0gKCkgPT4ge1xuICAgICAgICBpZiAoIXRoaXMucHJvcHMuZGlzYWJsZWQpIHtcbiAgICAgICAgICAgIHRoaXMuc2V0U3RhdGUoeyBpc0VkaXRpbmc6IHRydWUgfSk7XG4gICAgICAgIH1cbiAgICB9O1xuXG4gICAgcHJpdmF0ZSBoYW5kbGVUZXh0Q2hhbmdlID0gKGV2ZW50OiBSZWFjdC5Gb3JtRXZlbnQ8SFRNTEVsZW1lbnQ+KSA9PiB7XG4gICAgICAgIGNvbnN0IHZhbHVlID0gKGV2ZW50LnRhcmdldCBhcyBIVE1MSW5wdXRFbGVtZW50KS52YWx1ZTtcbiAgICAgICAgLy8gc3RhdGUgdmFsdWUgc2hvdWxkIGJlIHVwZGF0ZWQgb25seSB3aGVuIHVuY29udHJvbGxlZFxuICAgICAgICBpZiAodGhpcy5wcm9wcy52YWx1ZSA9PSBudWxsKSB7IHRoaXMuc2V0U3RhdGUoeyB2YWx1ZSB9KTsgfVxuICAgICAgICBzYWZlSW52b2tlKHRoaXMucHJvcHMub25DaGFuZ2UsIHZhbHVlKTtcbiAgICB9O1xuXG4gICAgcHJpdmF0ZSBoYW5kbGVLZXlFdmVudCA9ICh7IGN0cmxLZXksIG1ldGFLZXksIHdoaWNoIH06IFJlYWN0LktleWJvYXJkRXZlbnQ8SFRNTEVsZW1lbnQ+KSA9PiB7XG4gICAgICAgIGlmICh3aGljaCA9PT0gS2V5cy5FTlRFUiAmJiAoIXRoaXMucHJvcHMubXVsdGlsaW5lIHx8IGN0cmxLZXkgfHwgbWV0YUtleSkpIHtcbiAgICAgICAgICAgIHRoaXMudG9nZ2xlRWRpdGluZygpO1xuICAgICAgICB9IGVsc2UgaWYgKHdoaWNoID09PSBLZXlzLkVTQ0FQRSkge1xuICAgICAgICAgICAgdGhpcy5jYW5jZWxFZGl0aW5nKCk7XG4gICAgICAgIH1cbiAgICB9O1xuXG4gICAgcHJpdmF0ZSBtYXliZVJlbmRlcklucHV0KHZhbHVlOiBzdHJpbmcpIHtcbiAgICAgICAgY29uc3QgeyBtdWx0aWxpbmUgfSA9IHRoaXMucHJvcHM7XG4gICAgICAgIGlmICghdGhpcy5zdGF0ZS5pc0VkaXRpbmcpIHtcbiAgICAgICAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgcHJvcHM6IFJlYWN0LkhUTUxQcm9wczxIVE1MSW5wdXRFbGVtZW50IHwgSFRNTFRleHRBcmVhRWxlbWVudD4gPSB7XG4gICAgICAgICAgICBjbGFzc05hbWU6IFwicHQtZWRpdGFibGUtaW5wdXRcIixcbiAgICAgICAgICAgIG9uQmx1cjogdGhpcy50b2dnbGVFZGl0aW5nLFxuICAgICAgICAgICAgb25DaGFuZ2U6IHRoaXMuaGFuZGxlVGV4dENoYW5nZSxcbiAgICAgICAgICAgIG9uS2V5RG93bjogdGhpcy5oYW5kbGVLZXlFdmVudCxcbiAgICAgICAgICAgIHJlZjogdGhpcy5yZWZIYW5kbGVycy5pbnB1dCxcbiAgICAgICAgICAgIHN0eWxlOiB7XG4gICAgICAgICAgICAgICAgaGVpZ2h0OiB0aGlzLnN0YXRlLmlucHV0SGVpZ2h0LFxuICAgICAgICAgICAgICAgIGxpbmVIZWlnaHQ6ICFtdWx0aWxpbmUgJiYgdGhpcy5zdGF0ZS5pbnB1dEhlaWdodCAhPSBudWxsID8gYCR7dGhpcy5zdGF0ZS5pbnB1dEhlaWdodH1weGAgOiBudWxsLFxuICAgICAgICAgICAgICAgIHdpZHRoOiBtdWx0aWxpbmUgPyBcIjEwMCVcIiA6IHRoaXMuc3RhdGUuaW5wdXRXaWR0aCxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB2YWx1ZSxcbiAgICAgICAgfTtcbiAgICAgICAgcmV0dXJuIG11bHRpbGluZSA/IDx0ZXh0YXJlYSB7Li4ucHJvcHN9IC8+IDogPGlucHV0IHR5cGU9XCJ0ZXh0XCIgey4uLnByb3BzfSAvPjtcbiAgICB9XG5cbiAgICBwcml2YXRlIHVwZGF0ZUlucHV0RGltZW5zaW9ucygpIHtcbiAgICAgICAgaWYgKHRoaXMudmFsdWVFbGVtZW50ICE9IG51bGwpIHtcbiAgICAgICAgICAgIGNvbnN0IHsgbWF4TGluZXMsIG1pbkxpbmVzLCBtaW5XaWR0aCwgbXVsdGlsaW5lIH0gPSB0aGlzLnByb3BzO1xuICAgICAgICAgICAgbGV0IHsgcGFyZW50RWxlbWVudCwgc2Nyb2xsSGVpZ2h0LCBzY3JvbGxXaWR0aCwgdGV4dENvbnRlbnQgfSA9IHRoaXMudmFsdWVFbGVtZW50O1xuICAgICAgICAgICAgY29uc3QgbGluZUhlaWdodCA9IGdldExpbmVIZWlnaHQodGhpcy52YWx1ZUVsZW1lbnQpO1xuICAgICAgICAgICAgLy8gYWRkIG9uZSBsaW5lIHRvIGNvbXB1dGVkIDxzcGFuPiBoZWlnaHQgaWYgdGV4dCBlbmRzIGluIG5ld2xpbmVcbiAgICAgICAgICAgIC8vIGJlY2F1c2UgPHNwYW4+IGNvbGxhcHNlcyB0aGF0IHRyYWlsaW5nIHdoaXRlc3BhY2UgYnV0IDx0ZXh0YXJlYT4gc2hvd3MgaXRcbiAgICAgICAgICAgIGlmIChtdWx0aWxpbmUgJiYgdGhpcy5zdGF0ZS5pc0VkaXRpbmcgJiYgL1xcbiQvLnRlc3QodGV4dENvbnRlbnQpKSB7XG4gICAgICAgICAgICAgICAgc2Nyb2xsSGVpZ2h0ICs9IGxpbmVIZWlnaHQ7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAobGluZUhlaWdodCA+IDApIHtcbiAgICAgICAgICAgICAgICAvLyBsaW5lIGhlaWdodCBjb3VsZCBiZSAwIGlmIHRoZSBpc05hTiBibG9jayBmcm9tIGdldExpbmVIZWlnaHQga2lja3MgaW5cbiAgICAgICAgICAgICAgICBzY3JvbGxIZWlnaHQgPSBjbGFtcChzY3JvbGxIZWlnaHQsIG1pbkxpbmVzICogbGluZUhlaWdodCwgbWF4TGluZXMgKiBsaW5lSGVpZ2h0KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIC8vIENocm9tZSdzIGlucHV0IGNhcmV0IGhlaWdodCBtaXNhbGlnbnMgdGV4dCBzbyB0aGUgbGluZS1oZWlnaHQgbXVzdCBiZSBsYXJnZXIgdGhhbiBmb250LXNpemUuXG4gICAgICAgICAgICAvLyBUaGUgY29tcHV0ZWQgc2Nyb2xsSGVpZ2h0IG11c3QgYWxzbyBhY2NvdW50IGZvciBhIGxhcmdlciBpbmhlcml0ZWQgbGluZS1oZWlnaHQgZnJvbSB0aGUgcGFyZW50LlxuICAgICAgICAgICAgc2Nyb2xsSGVpZ2h0ID0gTWF0aC5tYXgoc2Nyb2xsSGVpZ2h0LCBnZXRGb250U2l6ZSh0aGlzLnZhbHVlRWxlbWVudCkgKyAxLCBnZXRMaW5lSGVpZ2h0KHBhcmVudEVsZW1lbnQpKTtcbiAgICAgICAgICAgIC8vIElFMTEgbmVlZHMgYSBzbWFsbCBidWZmZXIgc28gdGV4dCBkb2VzIG5vdCBzaGlmdCBwcmlvciB0byByZXNpemluZ1xuICAgICAgICAgICAgdGhpcy5zZXRTdGF0ZSh7XG4gICAgICAgICAgICAgICAgaW5wdXRIZWlnaHQ6IHNjcm9sbEhlaWdodCxcbiAgICAgICAgICAgICAgICBpbnB1dFdpZHRoOiBNYXRoLm1heChzY3JvbGxXaWR0aCArIEJVRkZFUl9XSURUSCwgbWluV2lkdGgpLFxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAvLyBzeW5jaHJvbml6ZXMgdGhlIDo6YmVmb3JlIHBzZXVkby1lbGVtZW50J3MgaGVpZ2h0IHdoaWxlIGVkaXRpbmcgZm9yIENocm9tZSA1M1xuICAgICAgICAgICAgaWYgKG11bHRpbGluZSAmJiB0aGlzLnN0YXRlLmlzRWRpdGluZykge1xuICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4gcGFyZW50RWxlbWVudC5zdHlsZS5oZWlnaHQgPSBgJHtzY3JvbGxIZWlnaHR9cHhgKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbn1cblxuZnVuY3Rpb24gZ2V0VmFsdWUocHJvcHM6IElFZGl0YWJsZVRleHRQcm9wcykge1xuICAgIHJldHVybiBwcm9wcy52YWx1ZSA9PSBudWxsID8gcHJvcHMuZGVmYXVsdFZhbHVlIDogcHJvcHMudmFsdWU7XG59XG5cbmZ1bmN0aW9uIGdldEZvbnRTaXplKGVsZW1lbnQ6IEhUTUxFbGVtZW50KSB7XG4gICAgY29uc3QgZm9udFNpemUgPSBnZXRDb21wdXRlZFN0eWxlKGVsZW1lbnQpLmZvbnRTaXplO1xuICAgIHJldHVybiBmb250U2l6ZSA9PT0gXCJcIiA/IDAgOiBwYXJzZUludChmb250U2l6ZS5zbGljZSgwLCAtMiksIDEwKTtcbn1cblxuZnVuY3Rpb24gZ2V0TGluZUhlaWdodChlbGVtZW50OiBIVE1MRWxlbWVudCkge1xuICAgIC8vIGdldENvbXB1dGVkU3R5bGUoKSA9PiAxOC4wMDAxcHggPT4gMThcbiAgICBsZXQgbGluZUhlaWdodCA9IHBhcnNlSW50KGdldENvbXB1dGVkU3R5bGUoZWxlbWVudCkubGluZUhlaWdodC5zbGljZSgwLCAtMiksIDEwKTtcbiAgICAvLyB0aGlzIGNoZWNrIHdpbGwgYmUgdHJ1ZSBpZiBsaW5lLWhlaWdodCBpcyBhIGtleXdvcmQgbGlrZSBcIm5vcm1hbFwiXG4gICAgaWYgKGlzTmFOKGxpbmVIZWlnaHQpKSB7XG4gICAgICAgIC8vIEBzZWUgaHR0cDovL3N0YWNrb3ZlcmZsb3cuY29tL2EvMTg0MzA3NjcvNjM0MjkzMVxuICAgICAgICBjb25zdCBsaW5lID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcInNwYW5cIik7XG4gICAgICAgIGxpbmUuaW5uZXJIVE1MID0gXCI8YnI+XCI7XG4gICAgICAgIGVsZW1lbnQuYXBwZW5kQ2hpbGQobGluZSk7XG4gICAgICAgIGNvbnN0IHNpbmdsZUxpbmVIZWlnaHQgPSBlbGVtZW50Lm9mZnNldEhlaWdodDtcbiAgICAgICAgbGluZS5pbm5lckhUTUwgPSBcIjxicj48YnI+XCI7XG4gICAgICAgIGNvbnN0IGRvdWJsZUxpbmVIZWlnaHQgPSBlbGVtZW50Lm9mZnNldEhlaWdodDtcbiAgICAgICAgZWxlbWVudC5yZW1vdmVDaGlsZChsaW5lKTtcbiAgICAgICAgLy8gdGhpcyBjYW4gcmV0dXJuIDAgaW4gZWRnZSBjYXNlc1xuICAgICAgICBsaW5lSGVpZ2h0ID0gZG91YmxlTGluZUhlaWdodCAtIHNpbmdsZUxpbmVIZWlnaHQ7XG4gICAgfVxuICAgIHJldHVybiBsaW5lSGVpZ2h0O1xufVxuXG5leHBvcnQgdmFyIEVkaXRhYmxlVGV4dEZhY3RvcnkgPSBSZWFjdC5jcmVhdGVGYWN0b3J5KEVkaXRhYmxlVGV4dCk7XG4iXSwic291cmNlUm9vdCI6Ii9zb3VyY2UvIn0=

@@ -47,2 +47,3 @@ /// <reference types="react" />

componentDidMount(): void;
componentDidUpdate(_: ITabsProps, prevState: ITabsState): void;
componentWillUnmount(): void;

@@ -49,0 +50,0 @@ protected validateProps(props: ITabsProps & {

@@ -95,3 +95,2 @@ /*

var index = tabElement.parentElement.queryAll(TAB_CSS_SELECTOR).indexOf(tabElement);
_this.moveIndicator(tabElement);
_this.setSelectedTabIndex(index);

@@ -106,3 +105,8 @@ }

Tabs.prototype.componentWillReceiveProps = function (newProps) {
this.setState(this.getStateFromProps(newProps));
var newState = this.getStateFromProps(newProps);
var newIndex = newState.selectedTabIndex;
if (newIndex !== this.state.selectedTabIndex) {
this.setSelectedTabIndex(newIndex);
}
this.setState(newState);
};

@@ -114,2 +118,11 @@ Tabs.prototype.componentDidMount = function () {

};
Tabs.prototype.componentDidUpdate = function (_, prevState) {
var _this = this;
var newIndex = this.state.selectedTabIndex;
if (newIndex !== prevState.selectedTabIndex) {
var tabElement_1 = react_dom_1.findDOMNode(this.refs[("tabs-" + newIndex)]);
// need to measure on the next frame in case the Tab children simultaneously change
this.moveTimeout = setTimeout(function () { return _this.moveIndicator(tabElement_1); });
}
};
Tabs.prototype.componentWillUnmount = function () {

@@ -305,2 +318,2 @@ clearTimeout(this.moveTimeout);

//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9jb21wb25lbnRzL3RhYnMvdGFicy50c3giXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7OztHQUdHOzs7Ozs7Ozs7Ozs7O0FBRUgsSUFBWSxVQUFVLFdBQU0sWUFBWSxDQUFDLENBQUE7QUFDekMsSUFBWSxVQUFVLFdBQU0sdUJBQXVCLENBQUMsQ0FBQTtBQUNwRCxJQUFZLEtBQUssV0FBTSxPQUFPLENBQUMsQ0FBQTtBQUMvQiwwQkFBNEIsV0FBVyxDQUFDLENBQUE7QUFFeEMsa0NBQWtDLGdDQUFnQyxDQUFDLENBQUE7QUFDbkUsSUFBWSxPQUFPLFdBQU0sc0JBQXNCLENBQUMsQ0FBQTtBQUNoRCxJQUFZLE1BQU0sV0FBTSxxQkFBcUIsQ0FBQyxDQUFBO0FBQzlDLElBQVksSUFBSSxXQUFNLG1CQUFtQixDQUFDLENBQUE7QUFFMUMsSUFBWSxLQUFLLFdBQU0sb0JBQW9CLENBQUMsQ0FBQTtBQUU1QyxvQkFBK0IsT0FBTyxDQUFDLENBQUE7QUFDdkMsd0JBQXVDLFdBQVcsQ0FBQyxDQUFBO0FBQ25ELHlCQUF5QyxZQUFZLENBQUMsQ0FBQTtBQXNDdEQsSUFBTSxnQkFBZ0IsR0FBRyxjQUFjLENBQUM7QUFHeEM7SUFBMEIsd0JBQXlDO0lBYy9ELGNBQVksS0FBa0IsRUFBRSxPQUFhO1FBZGpELGlCQTZTQztRQTlSTyxrQkFBTSxLQUFLLEVBQUUsT0FBTyxDQUFDLENBQUM7UUFWbkIsZ0JBQVcsR0FBRyxnQkFBZ0IsQ0FBQztRQUN0QyxvRkFBb0Y7UUFDN0UsVUFBSyxHQUFlLEVBQUUsQ0FBQztRQUV0QixhQUFRLEdBQWEsRUFBRSxDQUFDO1FBQ3hCLFdBQU0sR0FBYSxFQUFFLENBQUM7UUFnRHRCLGdCQUFXLEdBQUcsVUFBQyxDQUF1QztZQUMxRCxLQUFJLENBQUMsdUJBQXVCLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDcEMsQ0FBQyxDQUFBO1FBRU8sbUJBQWMsR0FBRyxVQUFDLENBQXNDO1lBQzVELElBQU0sU0FBUyxHQUFJLENBQUMsQ0FBQyxNQUFzQixDQUFDLE9BQU8sQ0FBQyxNQUFJLE9BQU8sQ0FBQyxHQUFLLENBQUMsSUFBSSxJQUFJLENBQUM7WUFDL0UsRUFBRSxDQUFDLENBQUMsU0FBUyxJQUFJLENBQUMsQ0FBQyxDQUFDLEtBQUssS0FBSyxJQUFJLENBQUMsS0FBSyxJQUFJLENBQUMsQ0FBQyxLQUFLLEtBQUssSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQztnQkFDbEUsQ0FBQyxDQUFDLGNBQWMsRUFBRSxDQUFDO2dCQUNuQixLQUFJLENBQUMsdUJBQXVCLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDcEMsQ0FBQztRQUNMLENBQUMsQ0FBQTtRQUVPLGtCQUFhLEdBQUcsVUFBQyxDQUFzQztZQUMzRCx5REFBeUQ7WUFDekQsSUFBTSxhQUFhLEdBQUksQ0FBQyxDQUFDLE1BQXNCLENBQUMsT0FBTyxDQUFDLE1BQUksT0FBTyxDQUFDLFFBQVUsQ0FBQyxJQUFJLElBQUksQ0FBQztZQUN4RixFQUFFLENBQUMsQ0FBQyxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUM7Z0JBQUMsTUFBTSxDQUFDO1lBQUMsQ0FBQztZQUUvQixJQUFNLGVBQWUsR0FBRyxLQUFJLENBQUMsa0JBQWtCLEVBQUUsQ0FBQztZQUNsRCxFQUFFLENBQUMsQ0FBQyxlQUFlLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO2dCQUFDLE1BQU0sQ0FBQztZQUFDLENBQUM7WUFFdkMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssS0FBSyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQztnQkFDOUIsQ0FBQyxDQUFDLGNBQWMsRUFBRSxDQUFDO2dCQUVuQix3Q0FBd0M7Z0JBQ3hDLElBQUksV0FBVyxHQUFHLGVBQWUsR0FBRyxDQUFDLENBQUM7Z0JBQ3RDLElBQUksYUFBYSxHQUFHLEtBQUksQ0FBQyxhQUFhLENBQUMsV0FBVyxDQUFDLENBQUM7Z0JBRXBELE9BQU8sYUFBYSxJQUFJLFdBQVcsS0FBSyxDQUFDLENBQUMsRUFBRSxDQUFDO29CQUN6QyxXQUFXLEVBQUUsQ0FBQztvQkFDZCxhQUFhLEdBQUcsS0FBSSxDQUFDLGFBQWEsQ0FBQyxXQUFXLENBQUMsQ0FBQztnQkFDcEQsQ0FBQztnQkFFRCxFQUFFLENBQUMsQ0FBQyxXQUFXLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO29CQUNyQixLQUFJLENBQUMsUUFBUSxDQUFDLFdBQVcsQ0FBQyxDQUFDO2dCQUMvQixDQUFDO1lBQ0wsQ0FBQztZQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxLQUFLLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDO2dCQUN0QyxDQUFDLENBQUMsY0FBYyxFQUFFLENBQUM7Z0JBRW5CLG9DQUFvQztnQkFDcEMsSUFBTSxTQUFTLEdBQUcsS0FBSSxDQUFDLFlBQVksRUFBRSxDQUFDO2dCQUV0QyxJQUFJLFdBQVcsR0FBRyxlQUFlLEdBQUcsQ0FBQyxDQUFDO2dCQUN0QyxJQUFJLGFBQWEsR0FBRyxLQUFJLENBQUMsYUFBYSxDQUFDLFdBQVcsQ0FBQyxDQUFDO2dCQUVwRCxPQUFPLGFBQWEsSUFBSSxXQUFXLEtBQUssU0FBUyxFQUFFLENBQUM7b0JBQ2hELFdBQVcsRUFBRSxDQUFDO29CQUNkLGFBQWEsR0FBRyxLQUFJLENBQUMsYUFBYSxDQUFDLFdBQVcsQ0FBQyxDQUFDO2dCQUNwRCxDQUFDO2dCQUVELEVBQUUsQ0FBQyxDQUFDLFdBQVcsS0FBSyxTQUFTLENBQUMsQ0FBQyxDQUFDO29CQUM1QixLQUFJLENBQUMsUUFBUSxDQUFDLFdBQVcsQ0FBQyxDQUFDO2dCQUMvQixDQUFDO1lBQ0wsQ0FBQztRQUNMLENBQUMsQ0FBQTtRQUVPLDRCQUF1QixHQUFHLFVBQUMsQ0FBdUM7WUFDdEUsSUFBTSxVQUFVLEdBQUksQ0FBQyxDQUFDLE1BQXNCLENBQUMsT0FBTyxDQUFDLGdCQUFnQixDQUFnQixDQUFDO1lBRXRGLGlEQUFpRDtZQUNqRCxFQUFFLENBQUMsQ0FBQyxVQUFVLElBQUksSUFBSTttQkFDWCxLQUFJLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxVQUFVLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQzttQkFDdkMsVUFBVSxDQUFDLFlBQVksQ0FBQyxlQUFlLENBQUMsS0FBSyxNQUFNLENBQUMsQ0FBQyxDQUFDO2dCQUM3RCxJQUFNLEtBQUssR0FBRyxVQUFVLENBQUMsYUFBYSxDQUFDLFFBQVEsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxVQUFVLENBQUMsQ0FBQztnQkFFdEYsS0FBSSxDQUFDLGFBQWEsQ0FBQyxVQUFVLENBQUMsQ0FBQztnQkFDL0IsS0FBSSxDQUFDLG1CQUFtQixDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQ3BDLENBQUM7UUFDTCxDQUFDLENBQUE7UUE3R0csSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsaUJBQWlCLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ3BELENBQUM7SUFFTSxxQkFBTSxHQUFiO1FBQ0ksTUFBTSxDQUFDLENBQ0gscUJBQUMsR0FBRyxJQUNBLFNBQVMsRUFBRSxVQUFVLENBQUMsT0FBTyxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsS0FBSyxDQUFDLFNBQVMsQ0FBRSxFQUMxRCxPQUFPLEVBQUUsSUFBSSxDQUFDLFdBQVksRUFDMUIsVUFBVSxFQUFFLElBQUksQ0FBQyxjQUFlLEVBQ2hDLFNBQVMsRUFBRSxJQUFJLENBQUMsYUFBYyxHQUU3QixJQUFJLENBQUMsV0FBVyxFQUFHLENBQ2xCLENBQ1QsQ0FBQztJQUNOLENBQUM7SUFFTSx3Q0FBeUIsR0FBaEMsVUFBaUMsUUFBb0I7UUFDakQsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsaUJBQWlCLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQztJQUNwRCxDQUFDO0lBRU0sZ0NBQWlCLEdBQXhCO1FBQUEsaUJBR0M7UUFGRyxJQUFNLFdBQVcsR0FBRyx1QkFBVyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsV0FBUSxJQUFJLENBQUMsS0FBSyxDQUFDLGdCQUFnQixDQUFFLENBQUMsQ0FBZ0IsQ0FBQztRQUNqRyxJQUFJLENBQUMsV0FBVyxHQUFHLFVBQVUsQ0FBQyxjQUFNLE9BQUEsS0FBSSxDQUFDLGFBQWEsQ0FBQyxXQUFXLENBQUMsRUFBL0IsQ0FBK0IsQ0FBQyxDQUFDO0lBQ3pFLENBQUM7SUFFTSxtQ0FBb0IsR0FBM0I7UUFDSSxZQUFZLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDO0lBQ25DLENBQUM7SUFFUyw0QkFBYSxHQUF2QixVQUF3QixLQUFnRDtRQUNwRSxFQUFFLENBQUMsQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUMzQyxJQUFNLEtBQUssR0FBRyxLQUFLLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUE0QixDQUFDO1lBQ25GLEVBQUUsQ0FBQyxDQUFDLEtBQUssSUFBSSxJQUFJLElBQUksS0FBSyxDQUFDLElBQUksS0FBSyxpQkFBTyxDQUFDLENBQUMsQ0FBQztnQkFDMUMsTUFBTSxJQUFJLEtBQUssQ0FBQyxNQUFNLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztZQUM3QyxDQUFDO1lBRUQsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLFlBQVksRUFBRSxLQUFLLElBQUksQ0FBQyxjQUFjLEVBQUUsQ0FBQyxDQUFDLENBQUM7Z0JBQ2hELE1BQU0sSUFBSSxLQUFLLENBQUMsTUFBTSxDQUFDLGFBQWEsQ0FBQyxDQUFDO1lBQzFDLENBQUM7UUFDTCxDQUFDO0lBQ0wsQ0FBQztJQXVFRDs7O09BR0c7SUFDSyw0QkFBYSxHQUFyQixVQUFzQixFQUFpRTtZQUEvRCw4QkFBWSxFQUFFLDRCQUFXLEVBQUUsMEJBQVUsRUFBRSx3QkFBUztRQUNwRSxJQUFNLHFCQUFxQixHQUFHO1lBQzFCLE1BQU0sRUFBRSxZQUFZO1lBQ3BCLFNBQVMsRUFBRSxnQkFBYyxJQUFJLENBQUMsS0FBSyxDQUFDLFVBQVUsQ0FBQyx1QkFBa0IsSUFBSSxDQUFDLEtBQUssQ0FBQyxTQUFTLENBQUMsUUFBSztZQUMzRixLQUFLLEVBQUUsV0FBVztTQUNyQixDQUFDO1FBQ0YsSUFBSSxDQUFDLFFBQVEsQ0FBQyxFQUFFLDRDQUFxQixFQUFFLENBQUMsQ0FBQztJQUM3QyxDQUFDO0lBRUQ7OztPQUdHO0lBQ0ssMEJBQVcsR0FBbkI7UUFBQSxpQkEyQkM7UUExQkcsR0FBRyxDQUFDLENBQUMsSUFBSSxjQUFjLEdBQUcsSUFBSSxDQUFDLFlBQVksRUFBRSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxFQUFFLGNBQWMsR0FBRyxDQUFDLEVBQUUsY0FBYyxFQUFFLEVBQUUsQ0FBQztZQUN2RyxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQyxDQUFDO1lBQ2xDLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLGVBQWUsRUFBRSxDQUFDLENBQUM7UUFDMUMsQ0FBQztRQUVELElBQUksVUFBVSxHQUFHLENBQUMsQ0FBQztRQUNuQixNQUFNLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxRQUFRLEVBQUUsVUFBQyxLQUE4QjtZQUMxRSxJQUFJLE1BQStCLENBQUM7WUFFcEMsNERBQTREO1lBQzVELEVBQUUsQ0FBQyxDQUFDLEtBQUssSUFBSSxJQUFJLENBQUMsQ0FBQyxDQUFDO2dCQUNoQixNQUFNLENBQUMsSUFBSSxDQUFDO1lBQ2hCLENBQUM7WUFFRCxFQUFFLENBQUMsQ0FBQyxVQUFVLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQztnQkFDbkIsK0JBQStCO2dCQUMvQixNQUFNLEdBQUcsS0FBSSxDQUFDLFlBQVksQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUN0QyxDQUFDO1lBQUMsSUFBSSxDQUFDLENBQUM7Z0JBQ0osSUFBTSxhQUFhLEdBQUcsVUFBVSxHQUFHLENBQUMsQ0FBQztnQkFDckMsSUFBTSxvQkFBb0IsR0FBRyxLQUFJLENBQUMsS0FBSyxDQUFDLGdCQUFnQixLQUFLLGFBQWEsQ0FBQztnQkFDM0UsTUFBTSxHQUFHLG9CQUFvQixHQUFHLEtBQUksQ0FBQyxhQUFhLENBQUMsS0FBSyxFQUFFLGFBQWEsQ0FBQyxHQUFHLElBQUksQ0FBQztZQUNwRixDQUFDO1lBRUQsVUFBVSxFQUFFLENBQUM7WUFDYixNQUFNLENBQUMsTUFBTSxDQUFDO1FBQ2xCLENBQUMsQ0FBQyxDQUFDO0lBQ1AsQ0FBQztJQUVPLDJCQUFZLEdBQXBCLFVBQXFCLEtBQXVFO1FBQTVGLGlCQXNCQztRQXJCRyxJQUFJLFFBQVEsR0FBRyxDQUFDLENBQUM7UUFDakIsSUFBTSxJQUFJLEdBQUcsS0FBSyxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxRQUFRLEVBQUUsVUFBQyxHQUE0QjtZQUMvRSw2Q0FBNkM7WUFDN0MsRUFBRSxDQUFDLENBQUMsR0FBRyxJQUFJLElBQUksQ0FBQyxDQUFDLENBQUM7Z0JBQ2QsTUFBTSxDQUFDLElBQUksQ0FBQztZQUNoQixDQUFDO1lBRUQsSUFBTSxTQUFTLEdBQUcsS0FBSyxDQUFDLFlBQVksQ0FBQyxHQUFHLEVBQUU7Z0JBQ3RDLEVBQUUsRUFBRSxLQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQztnQkFDekIsVUFBVSxFQUFFLEtBQUksQ0FBQyxLQUFLLENBQUMsZ0JBQWdCLEtBQUssUUFBUTtnQkFDcEQsT0FBTyxFQUFFLEtBQUksQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDO2dCQUNoQyxHQUFHLEVBQUUsVUFBUSxRQUFVO2FBQ2IsQ0FBQyxDQUFDO1lBQ2hCLFFBQVEsRUFBRSxDQUFDO1lBQ1gsTUFBTSxDQUFDLFNBQVMsQ0FBQztRQUNyQixDQUFDLENBQUMsQ0FBQztRQUNILE1BQU0sQ0FBQyxLQUFLLENBQUMsWUFBWSxDQUFDLEtBQUssRUFBRTtZQUM3QixRQUFRLEVBQUUsSUFBSTtZQUNkLHFCQUFxQixFQUFFLElBQUksQ0FBQyxLQUFLLENBQUMscUJBQXFCO1lBQ3ZELEdBQUcsRUFBRSxTQUFTO1NBQ0EsQ0FBQyxDQUFDO0lBQ3hCLENBQUM7SUFFTyw0QkFBYSxHQUFyQixVQUFzQixLQUE4QixFQUFFLFFBQWdCO1FBQ2xFLE1BQU0sQ0FBQyxLQUFLLENBQUMsWUFBWSxDQUFDLEtBQUssRUFBRTtZQUM3QixFQUFFLEVBQUUsSUFBSSxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUM7WUFDM0IsVUFBVSxFQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsZ0JBQWdCLEtBQUssUUFBUTtZQUNwRCxHQUFHLEVBQUUsWUFBVSxRQUFVO1lBQ3pCLEtBQUssRUFBRSxJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQztTQUNiLENBQUMsQ0FBQztJQUN6QixDQUFDO0lBRU8sdUJBQVEsR0FBaEIsVUFBaUIsS0FBYTtRQUMxQixJQUFNLEdBQUcsR0FBRyxVQUFRLEtBQU8sQ0FBQztRQUM1QixJQUFNLEdBQUcsR0FBRyx1QkFBVyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQWdCLENBQUM7UUFDdkQsR0FBRyxDQUFDLEtBQUssRUFBRSxDQUFDO0lBQ2hCLENBQUM7SUFFTyxpQ0FBa0IsR0FBMUI7UUFDSSxJQUFNLGNBQWMsR0FBRyxRQUFRLENBQUMsYUFBYSxDQUFDO1FBQzlDLEVBQUUsQ0FBQyxDQUFDLGNBQWMsSUFBSSxJQUFJLElBQUksY0FBYyxDQUFDLFNBQVMsQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUMzRSxJQUFNLEtBQUssR0FBRyxjQUFjLENBQUMsRUFBRSxDQUFDO1lBQ2hDLE1BQU0sQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUN0QyxDQUFDO1FBQ0QsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ2QsQ0FBQztJQUVPLHNCQUFPLEdBQWY7UUFDSSxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsSUFBSSxJQUFJLENBQUMsQ0FBQyxDQUFDO1lBQzlCLE1BQU0sQ0FBQyxFQUFFLENBQUM7UUFDZCxDQUFDO1FBQ0QsSUFBSSxJQUFJLEdBQW9DLEVBQUUsQ0FBQztRQUMvQyxFQUFFLENBQUMsQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDaEQsSUFBTSxVQUFVLEdBQUcsS0FBSyxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQTRCLENBQUM7WUFDN0YsRUFBRSxDQUFDLENBQUMsVUFBVSxJQUFJLElBQUksQ0FBQyxDQUFDLENBQUM7Z0JBQ3JCLEtBQUssQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUMsUUFBUSxFQUFFLFVBQUMsWUFBcUM7b0JBQ3BGLEVBQUUsQ0FBQyxDQUFDLFlBQVksQ0FBQyxJQUFJLEtBQUssU0FBRyxDQUFDLENBQUMsQ0FBQzt3QkFDNUIsSUFBSSxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQztvQkFDNUIsQ0FBQztnQkFDTCxDQUFDLENBQUMsQ0FBQztZQUNQLENBQUM7UUFDTCxDQUFDO1FBQ0QsTUFBTSxDQUFDLElBQUksQ0FBQztJQUNoQixDQUFDO0lBRU8sMkJBQVksR0FBcEI7UUFDSSxNQUFNLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDLE1BQU0sQ0FBQztJQUNqQyxDQUFDO0lBRU8sNkJBQWMsR0FBdEI7UUFDSSxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsSUFBSSxJQUFJLENBQUMsQ0FBQyxDQUFDO1lBQzlCLE1BQU0sQ0FBQyxDQUFDLENBQUM7UUFDYixDQUFDO1FBRUQsSUFBSSxLQUFLLEdBQUcsQ0FBQyxDQUFDO1FBQ2QsSUFBSSxVQUFVLEdBQUcsQ0FBQyxDQUFDO1FBQ25CLEtBQUssQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsUUFBUSxFQUFFLFVBQUMsS0FBOEI7WUFDdkUsRUFBRSxDQUFDLENBQUMsS0FBSyxDQUFDLElBQUksS0FBSyxtQkFBUSxDQUFDLENBQUMsQ0FBQztnQkFDMUIsVUFBVSxFQUFFLENBQUM7WUFDakIsQ0FBQztZQUNELEtBQUssRUFBRSxDQUFDO1FBQ1osQ0FBQyxDQUFDLENBQUM7UUFFSCxNQUFNLENBQUMsVUFBVSxDQUFDO0lBQ3RCLENBQUM7SUFFTyxnQ0FBaUIsR0FBekIsVUFBMEIsS0FBaUI7UUFDL0IsNkNBQWdCLEVBQUUsdURBQXVCLENBQVc7UUFFNUQsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUN6QyxNQUFNLENBQUMsRUFBRSxrQ0FBZ0IsRUFBRSxDQUFDO1FBQ2hDLENBQUM7UUFBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyx1QkFBdUIsQ0FBQyxJQUFJLElBQUksQ0FBQyxLQUFLLENBQUMsZ0JBQWdCLElBQUksSUFBSSxDQUFDLENBQUMsQ0FBQztZQUM5RixNQUFNLENBQUMsRUFBRSxnQkFBZ0IsRUFBRSx1QkFBdUIsRUFBRSxDQUFDO1FBQ3pELENBQUM7UUFBQyxJQUFJLENBQUMsQ0FBQztZQUNKLE1BQU0sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDO1FBQ3RCLENBQUM7SUFDTCxDQUFDO0lBRU8sNEJBQWEsR0FBckIsVUFBc0IsS0FBYTtRQUMvQixJQUFNLEdBQUcsR0FBRyxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDbEMsTUFBTSxDQUFDLEdBQUcsSUFBSSxJQUFJLElBQUksR0FBRyxDQUFDLEtBQUssQ0FBQyxVQUFVLENBQUM7SUFDL0MsQ0FBQztJQUVPLDhCQUFlLEdBQXZCLFVBQXdCLEtBQWE7UUFDakMsTUFBTSxDQUFDLEtBQUssSUFBSSxJQUFJLElBQUksS0FBSyxJQUFJLENBQUMsSUFBSSxLQUFLLEdBQUcsSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDO0lBQ3RFLENBQUM7SUFFRDs7T0FFRztJQUNLLGtDQUFtQixHQUEzQixVQUE0QixLQUFhO1FBQ3JDLEVBQUUsQ0FBQyxDQUFDLEtBQUssS0FBSyxJQUFJLENBQUMsS0FBSyxDQUFDLGdCQUFnQixJQUFJLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDeEUsTUFBTSxDQUFDO1FBQ1gsQ0FBQztRQUVELElBQU0saUJBQWlCLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxnQkFBZ0IsQ0FBQztRQUV0RCxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLGdCQUFnQixJQUFJLElBQUksQ0FBQyxDQUFDLENBQUM7WUFDdEMsSUFBSSxDQUFDLFFBQVEsQ0FBQztnQkFDVixnQkFBZ0IsRUFBRSxLQUFLO2FBQzFCLENBQUMsQ0FBQztRQUNQLENBQUM7UUFFRCxFQUFFLENBQUMsQ0FBQyxLQUFLLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQ3hDLElBQUksQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLEtBQUssRUFBRSxpQkFBaUIsQ0FBQyxDQUFDO1FBQ2xELENBQUM7SUFDTCxDQUFDO0lBM1NhLGlCQUFZLEdBQWU7UUFDckMsdUJBQXVCLEVBQUUsQ0FBQztLQUM3QixDQUFDO0lBSk47UUFBQyxVQUFVO1lBQUE7SUE4U1gsV0FBQztBQUFELENBN1NBLEFBNlNDLENBN1N5QixxQ0FBaUIsR0E2UzFDO0FBN1NZLFlBQUksT0E2U2hCLENBQUE7QUFFRCxJQUFJLFFBQVEsR0FBRyxDQUFDLENBQUM7QUFDakI7SUFDSSxNQUFNLENBQUMsWUFBVSxRQUFRLEVBQUksQ0FBQztBQUNsQyxDQUFDO0FBRUQsSUFBSSxVQUFVLEdBQUcsQ0FBQyxDQUFDO0FBQ25CO0lBQ0ksTUFBTSxDQUFDLGtCQUFnQixVQUFVLEVBQUksQ0FBQztBQUMxQyxDQUFDO0FBRVUsbUJBQVcsR0FBRyxLQUFLLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxDQUFDIiwiZmlsZSI6ImNvbXBvbmVudHMvdGFicy90YWJzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiLypcbiAqIENvcHlyaWdodCAyMDE1IFBhbGFudGlyIFRlY2hub2xvZ2llcywgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAtIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICovXG5cbmltcG9ydCAqIGFzIGNsYXNzTmFtZXMgZnJvbSBcImNsYXNzbmFtZXNcIjtcbmltcG9ydCAqIGFzIFB1cmVSZW5kZXIgZnJvbSBcInB1cmUtcmVuZGVyLWRlY29yYXRvclwiO1xuaW1wb3J0ICogYXMgUmVhY3QgZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgeyBmaW5kRE9NTm9kZSB9IGZyb20gXCJyZWFjdC1kb21cIjtcblxuaW1wb3J0IHsgQWJzdHJhY3RDb21wb25lbnQgfSBmcm9tIFwiLi4vLi4vY29tbW9uL2Fic3RyYWN0Q29tcG9uZW50XCI7XG5pbXBvcnQgKiBhcyBDbGFzc2VzIGZyb20gXCIuLi8uLi9jb21tb24vY2xhc3Nlc1wiO1xuaW1wb3J0ICogYXMgRXJyb3JzIGZyb20gXCIuLi8uLi9jb21tb24vZXJyb3JzXCI7XG5pbXBvcnQgKiBhcyBLZXlzIGZyb20gXCIuLi8uLi9jb21tb24va2V5c1wiO1xuaW1wb3J0IHsgSVByb3BzIH0gZnJvbSBcIi4uLy4uL2NvbW1vbi9wcm9wc1wiO1xuaW1wb3J0ICogYXMgVXRpbHMgZnJvbSBcIi4uLy4uL2NvbW1vbi91dGlsc1wiO1xuXG5pbXBvcnQgeyBJVGFiUHJvcHMsIFRhYiB9IGZyb20gXCIuL3RhYlwiO1xuaW1wb3J0IHsgSVRhYkxpc3RQcm9wcywgVGFiTGlzdCB9IGZyb20gXCIuL3RhYkxpc3RcIjtcbmltcG9ydCB7IElUYWJQYW5lbFByb3BzLCBUYWJQYW5lbCB9IGZyb20gXCIuL3RhYlBhbmVsXCI7XG5cbmV4cG9ydCBpbnRlcmZhY2UgSVRhYnNQcm9wcyBleHRlbmRzIElQcm9wcyB7XG4gICAgLyoqXG4gICAgICogVGhlIGluZGV4IG9mIHRoZSBpbml0aWFsbHkgc2VsZWN0ZWQgdGFiIHdoZW4gdGhpcyBjb21wb25lbnQgcmVuZGVycy5cbiAgICAgKiBUaGlzIHByb3AgaGFzIG5vIGVmZmVjdCBpZiBgc2VsZWN0ZWRUYWJJbmRleGAgaXMgYWxzbyBwcm92aWRlZC5cbiAgICAgKiBAZGVmYXVsdCAwXG4gICAgICovXG4gICAgaW5pdGlhbFNlbGVjdGVkVGFiSW5kZXg/OiBudW1iZXI7XG5cbiAgICAvKipcbiAgICAgKiBUaGUgaW5kZXggb2YgdGhlIGN1cnJlbnRseSBzZWxlY3RlZCB0YWIuXG4gICAgICogVXNlIHRoaXMgcHJvcCBpZiB5b3Ugd2FudCB0byBleHBsaWNpdGx5IGNvbnRyb2wgdGhlIGN1cnJlbnRseSBkaXNwbGF5ZWQgcGFuZWxcbiAgICAgKiB5b3Vyc2VsZiB3aXRoIHRoZSBgb25DaGFuZ2VgIGV2ZW50IGhhbmRsZXIuXG4gICAgICogSWYgdGhpcyBwcm9wIGlzIGxlZnQgdW5kZWZpbmVkLCB0aGUgY29tcG9uZW50IGNoYW5nZXMgdGFiIHBhbmVscyBhdXRvbWF0aWNhbGx5XG4gICAgICogd2hlbiB0YWJzIGFyZSBjbGlja2VkLlxuICAgICAqL1xuICAgIHNlbGVjdGVkVGFiSW5kZXg/OiBudW1iZXI7XG5cbiAgICAvKipcbiAgICAgKiBBIGNhbGxiYWNrIGZ1bmN0aW9uIHRoYXQgaXMgaW52b2tlZCB3aGVuIHRhYnMgaW4gdGhlIHRhYiBsaXN0IGFyZSBjbGlja2VkLlxuICAgICAqL1xuICAgIG9uQ2hhbmdlPyhzZWxlY3RlZFRhYkluZGV4OiBudW1iZXIsIHByZXZTZWxlY3RlZFRhYkluZGV4OiBudW1iZXIpOiB2b2lkO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIElUYWJzU3RhdGUge1xuICAgIC8qKlxuICAgICAqIFRoZSBsaXN0IG9mIENTUyBydWxlcyB0byB1c2Ugb24gdGhlIGluZGljYXRvciB3cmFwcGVyIG9mIHRoZSB0YWIgbGlzdC5cbiAgICAgKi9cbiAgICBpbmRpY2F0b3JXcmFwcGVyU3R5bGU/OiBSZWFjdC5DU1NQcm9wZXJ0aWVzO1xuXG4gICAgLyoqXG4gICAgICogVGhlIGluZGV4IG9mIHRoZSBjdXJyZW50bHkgc2VsZWN0ZWQgdGFiLlxuICAgICAqIElmIGEgcHJvcCB3aXRoIHRoZSBzYW1lIG5hbWUgaXMgc2V0LCB0aGlzIGJpdCBvZiBzdGF0ZSBzaW1wbHkgYWxpYXNlcyB0aGUgcHJvcC5cbiAgICAgKi9cbiAgICBzZWxlY3RlZFRhYkluZGV4PzogbnVtYmVyO1xufVxuXG5jb25zdCBUQUJfQ1NTX1NFTEVDVE9SID0gXCJsaVtyb2xlPXRhYl1cIjtcblxuQFB1cmVSZW5kZXJcbmV4cG9ydCBjbGFzcyBUYWJzIGV4dGVuZHMgQWJzdHJhY3RDb21wb25lbnQ8SVRhYnNQcm9wcywgSVRhYnNTdGF0ZT4ge1xuICAgIHB1YmxpYyBzdGF0aWMgZGVmYXVsdFByb3BzOiBJVGFic1Byb3BzID0ge1xuICAgICAgICBpbml0aWFsU2VsZWN0ZWRUYWJJbmRleDogMCxcbiAgICB9O1xuXG4gICAgcHVibGljIGRpc3BsYXlOYW1lID0gXCJCbHVlcHJpbnQuVGFic1wiO1xuICAgIC8vIHN0YXRlIGlzIGluaXRpYWxpemVkIGluIHRoZSBjb25zdHJ1Y3RvciBidXQgZ2V0U3RhdGVGcm9tUHJvcHMgbmVlZHMgc3RhdGUgZGVmaW5lZFxuICAgIHB1YmxpYyBzdGF0ZTogSVRhYnNTdGF0ZSA9IHt9O1xuXG4gICAgcHJpdmF0ZSBwYW5lbElkczogc3RyaW5nW10gPSBbXTtcbiAgICBwcml2YXRlIHRhYklkczogc3RyaW5nW10gPSBbXTtcblxuICAgIHByaXZhdGUgbW92ZVRpbWVvdXQ6IG51bWJlcjtcblxuICAgIGNvbnN0cnVjdG9yKHByb3BzPzogSVRhYnNQcm9wcywgY29udGV4dD86IGFueSkge1xuICAgICAgICBzdXBlcihwcm9wcywgY29udGV4dCk7XG4gICAgICAgIHRoaXMuc3RhdGUgPSB0aGlzLmdldFN0YXRlRnJvbVByb3BzKHRoaXMucHJvcHMpO1xuICAgIH1cblxuICAgIHB1YmxpYyByZW5kZXIoKSB7XG4gICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgY2xhc3NOYW1lPXtjbGFzc05hbWVzKENsYXNzZXMuVEFCUywgdGhpcy5wcm9wcy5jbGFzc05hbWUpfVxuICAgICAgICAgICAgICAgIG9uQ2xpY2s9e3RoaXMuaGFuZGxlQ2xpY2t9XG4gICAgICAgICAgICAgICAgb25LZXlQcmVzcz17dGhpcy5oYW5kbGVLZXlQcmVzc31cbiAgICAgICAgICAgICAgICBvbktleURvd249e3RoaXMuaGFuZGxlS2V5RG93bn1cbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICB7dGhpcy5nZXRDaGlsZHJlbigpfVxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgcHVibGljIGNvbXBvbmVudFdpbGxSZWNlaXZlUHJvcHMobmV3UHJvcHM6IElUYWJzUHJvcHMpIHtcbiAgICAgICAgdGhpcy5zZXRTdGF0ZSh0aGlzLmdldFN0YXRlRnJvbVByb3BzKG5ld1Byb3BzKSk7XG4gICAgfVxuXG4gICAgcHVibGljIGNvbXBvbmVudERpZE1vdW50KCkge1xuICAgICAgICBjb25zdCBzZWxlY3RlZFRhYiA9IGZpbmRET01Ob2RlKHRoaXMucmVmc1tgdGFicy0ke3RoaXMuc3RhdGUuc2VsZWN0ZWRUYWJJbmRleH1gXSkgYXMgSFRNTEVsZW1lbnQ7XG4gICAgICAgIHRoaXMubW92ZVRpbWVvdXQgPSBzZXRUaW1lb3V0KCgpID0+IHRoaXMubW92ZUluZGljYXRvcihzZWxlY3RlZFRhYikpO1xuICAgIH1cblxuICAgIHB1YmxpYyBjb21wb25lbnRXaWxsVW5tb3VudCgpIHtcbiAgICAgICAgY2xlYXJUaW1lb3V0KHRoaXMubW92ZVRpbWVvdXQpO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCB2YWxpZGF0ZVByb3BzKHByb3BzOiBJVGFic1Byb3BzICYge2NoaWxkcmVuPzogUmVhY3QuUmVhY3ROb2RlfSkge1xuICAgICAgICBpZiAoUmVhY3QuQ2hpbGRyZW4uY291bnQocHJvcHMuY2hpbGRyZW4pID4gMCkge1xuICAgICAgICAgICAgY29uc3QgY2hpbGQgPSBSZWFjdC5DaGlsZHJlbi50b0FycmF5KHByb3BzLmNoaWxkcmVuKVswXSBhcyBSZWFjdC5SZWFjdEVsZW1lbnQ8YW55PjtcbiAgICAgICAgICAgIGlmIChjaGlsZCAhPSBudWxsICYmIGNoaWxkLnR5cGUgIT09IFRhYkxpc3QpIHtcbiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoRXJyb3JzLlRBQlNfRklSU1RfQ0hJTEQpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAodGhpcy5nZXRUYWJzQ291bnQoKSAhPT0gdGhpcy5nZXRQYW5lbHNDb3VudCgpKSB7XG4gICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKEVycm9ycy5UQUJTX01JU01BVENIKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgaGFuZGxlQ2xpY2sgPSAoZTogUmVhY3QuU3ludGhldGljRXZlbnQ8SFRNTERpdkVsZW1lbnQ+KSA9PiB7XG4gICAgICAgIHRoaXMuaGFuZGxlVGFiU2VsZWN0aW5nRXZlbnQoZSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBoYW5kbGVLZXlQcmVzcyA9IChlOiBSZWFjdC5LZXlib2FyZEV2ZW50PEhUTUxEaXZFbGVtZW50PikgPT4ge1xuICAgICAgICBjb25zdCBpbnNpZGVUYWIgPSAoZS50YXJnZXQgYXMgSFRNTEVsZW1lbnQpLmNsb3Nlc3QoYC4ke0NsYXNzZXMuVEFCfWApICE9IG51bGw7XG4gICAgICAgIGlmIChpbnNpZGVUYWIgJiYgKGUud2hpY2ggPT09IEtleXMuU1BBQ0UgfHwgZS53aGljaCA9PT0gS2V5cy5FTlRFUikpIHtcbiAgICAgICAgICAgIGUucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICAgIHRoaXMuaGFuZGxlVGFiU2VsZWN0aW5nRXZlbnQoZSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIGhhbmRsZUtleURvd24gPSAoZTogUmVhY3QuS2V5Ym9hcmRFdmVudDxIVE1MRGl2RWxlbWVudD4pID0+IHtcbiAgICAgICAgLy8gZG9uJ3Qgd2FudCB0byBoYW5kbGUga2V5RG93biBldmVudHMgaW5zaWRlIGEgdGFiIHBhbmVsXG4gICAgICAgIGNvbnN0IGluc2lkZVRhYkxpc3QgPSAoZS50YXJnZXQgYXMgSFRNTEVsZW1lbnQpLmNsb3Nlc3QoYC4ke0NsYXNzZXMuVEFCX0xJU1R9YCkgIT0gbnVsbDtcbiAgICAgICAgaWYgKCFpbnNpZGVUYWJMaXN0KSB7IHJldHVybjsgfVxuXG4gICAgICAgIGNvbnN0IGZvY3VzZWRUYWJJbmRleCA9IHRoaXMuZ2V0Rm9jdXNlZFRhYkluZGV4KCk7XG4gICAgICAgIGlmIChmb2N1c2VkVGFiSW5kZXggPT09IC0xKSB7IHJldHVybjsgfVxuXG4gICAgICAgIGlmIChlLndoaWNoID09PSBLZXlzLkFSUk9XX0xFRlQpIHtcbiAgICAgICAgICAgIGUucHJldmVudERlZmF1bHQoKTtcblxuICAgICAgICAgICAgLy8gZmluZCBwcmV2aW91cyB0YWIgdGhhdCBpc24ndCBkaXNhYmxlZFxuICAgICAgICAgICAgbGV0IG5ld1RhYkluZGV4ID0gZm9jdXNlZFRhYkluZGV4IC0gMTtcbiAgICAgICAgICAgIGxldCB0YWJJc0Rpc2FibGVkID0gdGhpcy5pc1RhYkRpc2FibGVkKG5ld1RhYkluZGV4KTtcblxuICAgICAgICAgICAgd2hpbGUgKHRhYklzRGlzYWJsZWQgJiYgbmV3VGFiSW5kZXggIT09IC0xKSB7XG4gICAgICAgICAgICAgICAgbmV3VGFiSW5kZXgtLTtcbiAgICAgICAgICAgICAgICB0YWJJc0Rpc2FibGVkID0gdGhpcy5pc1RhYkRpc2FibGVkKG5ld1RhYkluZGV4KTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKG5ld1RhYkluZGV4ICE9PSAtMSkge1xuICAgICAgICAgICAgICAgIHRoaXMuZm9jdXNUYWIobmV3VGFiSW5kZXgpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9IGVsc2UgaWYgKGUud2hpY2ggPT09IEtleXMuQVJST1dfUklHSFQpIHtcbiAgICAgICAgICAgIGUucHJldmVudERlZmF1bHQoKTtcblxuICAgICAgICAgICAgLy8gZmluZCBuZXh0IHRhYiB0aGF0IGlzbid0IGRpc2FibGVkXG4gICAgICAgICAgICBjb25zdCB0YWJzQ291bnQgPSB0aGlzLmdldFRhYnNDb3VudCgpO1xuXG4gICAgICAgICAgICBsZXQgbmV3VGFiSW5kZXggPSBmb2N1c2VkVGFiSW5kZXggKyAxO1xuICAgICAgICAgICAgbGV0IHRhYklzRGlzYWJsZWQgPSB0aGlzLmlzVGFiRGlzYWJsZWQobmV3VGFiSW5kZXgpO1xuXG4gICAgICAgICAgICB3aGlsZSAodGFiSXNEaXNhYmxlZCAmJiBuZXdUYWJJbmRleCAhPT0gdGFic0NvdW50KSB7XG4gICAgICAgICAgICAgICAgbmV3VGFiSW5kZXgrKztcbiAgICAgICAgICAgICAgICB0YWJJc0Rpc2FibGVkID0gdGhpcy5pc1RhYkRpc2FibGVkKG5ld1RhYkluZGV4KTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKG5ld1RhYkluZGV4ICE9PSB0YWJzQ291bnQpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmZvY3VzVGFiKG5ld1RhYkluZGV4KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgaGFuZGxlVGFiU2VsZWN0aW5nRXZlbnQgPSAoZTogUmVhY3QuU3ludGhldGljRXZlbnQ8SFRNTERpdkVsZW1lbnQ+KSA9PiB7XG4gICAgICAgIGNvbnN0IHRhYkVsZW1lbnQgPSAoZS50YXJnZXQgYXMgSFRNTEVsZW1lbnQpLmNsb3Nlc3QoVEFCX0NTU19TRUxFQ1RPUikgYXMgSFRNTEVsZW1lbnQ7XG5cbiAgICAgICAgLy8gc2VsZWN0IG9ubHkgaWYgVGFiIGlzIG9uZSBvZiB1cyBhbmQgaXMgZW5hYmxlZFxuICAgICAgICBpZiAodGFiRWxlbWVudCAhPSBudWxsXG4gICAgICAgICAgICAgICAgJiYgdGhpcy50YWJJZHMuaW5kZXhPZih0YWJFbGVtZW50LmlkKSA+PSAwXG4gICAgICAgICAgICAgICAgJiYgdGFiRWxlbWVudC5nZXRBdHRyaWJ1dGUoXCJhcmlhLWRpc2FibGVkXCIpICE9PSBcInRydWVcIikge1xuICAgICAgICAgICAgY29uc3QgaW5kZXggPSB0YWJFbGVtZW50LnBhcmVudEVsZW1lbnQucXVlcnlBbGwoVEFCX0NTU19TRUxFQ1RPUikuaW5kZXhPZih0YWJFbGVtZW50KTtcblxuICAgICAgICAgICAgdGhpcy5tb3ZlSW5kaWNhdG9yKHRhYkVsZW1lbnQpO1xuICAgICAgICAgICAgdGhpcy5zZXRTZWxlY3RlZFRhYkluZGV4KGluZGV4KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENhbGN1bGF0ZSB0aGUgbmV3IGhlaWdodCwgd2lkdGgsIGFuZCBwb3NpdGlvbiBvZiB0aGUgdGFiIGluZGljYXRvci5cbiAgICAgKiBTdG9yZSB0aGUgQ1NTIHZhbHVlcyBzbyB0aGUgdHJhbnNpdGlvbiBhbmltYXRpb24gY2FuIHN0YXJ0LlxuICAgICAqL1xuICAgIHByaXZhdGUgbW92ZUluZGljYXRvcih7IGNsaWVudEhlaWdodCwgY2xpZW50V2lkdGgsIG9mZnNldExlZnQsIG9mZnNldFRvcCB9OiBIVE1MRWxlbWVudCkge1xuICAgICAgICBjb25zdCBpbmRpY2F0b3JXcmFwcGVyU3R5bGUgPSB7XG4gICAgICAgICAgICBoZWlnaHQ6IGNsaWVudEhlaWdodCxcbiAgICAgICAgICAgIHRyYW5zZm9ybTogYHRyYW5zbGF0ZVgoJHtNYXRoLmZsb29yKG9mZnNldExlZnQpfXB4KSB0cmFuc2xhdGVZKCR7TWF0aC5mbG9vcihvZmZzZXRUb3ApfXB4KWAsXG4gICAgICAgICAgICB3aWR0aDogY2xpZW50V2lkdGgsXG4gICAgICAgIH07XG4gICAgICAgIHRoaXMuc2V0U3RhdGUoeyBpbmRpY2F0b3JXcmFwcGVyU3R5bGUgfSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogTW9zdCBvZiB0aGUgY29tcG9uZW50IGxvZ2ljIGxpdmVzIGhlcmUuIFdlIGNsb25lIHRoZSBjaGlsZHJlbiBwcm92aWRlZCBieSB0aGUgdXNlciB0byBzZXQgdXAgcmVmcyxcbiAgICAgKiBhY2Nlc3NpYmlsaXR5IGF0dHJpYnV0ZXMsIGFuZCBzZWxlY3Rpb24gcHJvcHMgY29ycmVjdGx5LlxuICAgICAqL1xuICAgIHByaXZhdGUgZ2V0Q2hpbGRyZW4oKSB7XG4gICAgICAgIGZvciAobGV0IHVuYXNzaWduZWRUYWJzID0gdGhpcy5nZXRUYWJzQ291bnQoKSAtIHRoaXMudGFiSWRzLmxlbmd0aDsgdW5hc3NpZ25lZFRhYnMgPiAwOyB1bmFzc2lnbmVkVGFicy0tKSB7XG4gICAgICAgICAgICB0aGlzLnRhYklkcy5wdXNoKGdlbmVyYXRlVGFiSWQoKSk7XG4gICAgICAgICAgICB0aGlzLnBhbmVsSWRzLnB1c2goZ2VuZXJhdGVQYW5lbElkKCkpO1xuICAgICAgICB9XG5cbiAgICAgICAgbGV0IGNoaWxkSW5kZXggPSAwO1xuICAgICAgICByZXR1cm4gUmVhY3QuQ2hpbGRyZW4ubWFwKHRoaXMucHJvcHMuY2hpbGRyZW4sIChjaGlsZDogUmVhY3QuUmVhY3RFbGVtZW50PGFueT4pID0+IHtcbiAgICAgICAgICAgIGxldCByZXN1bHQ6IFJlYWN0LlJlYWN0RWxlbWVudDxhbnk+O1xuXG4gICAgICAgICAgICAvLyBjYW4gYmUgbnVsbCBpZiBjb25kaXRpb25hbGx5IHJlbmRlcmluZyBUYWJMaXN0IC8gVGFiUGFuZWxcbiAgICAgICAgICAgIGlmIChjaGlsZCA9PSBudWxsKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmIChjaGlsZEluZGV4ID09PSAwKSB7XG4gICAgICAgICAgICAgICAgLy8gY2xvbmUgVGFiTGlzdCAvIFRhYiBlbGVtZW50c1xuICAgICAgICAgICAgICAgIHJlc3VsdCA9IHRoaXMuY2xvbmVUYWJMaXN0KGNoaWxkKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgY29uc3QgdGFiUGFuZWxJbmRleCA9IGNoaWxkSW5kZXggLSAxO1xuICAgICAgICAgICAgICAgIGNvbnN0IHNob3VsZFJlbmRlclRhYlBhbmVsID0gdGhpcy5zdGF0ZS5zZWxlY3RlZFRhYkluZGV4ID09PSB0YWJQYW5lbEluZGV4O1xuICAgICAgICAgICAgICAgIHJlc3VsdCA9IHNob3VsZFJlbmRlclRhYlBhbmVsID8gdGhpcy5jbG9uZVRhYlBhbmVsKGNoaWxkLCB0YWJQYW5lbEluZGV4KSA6IG51bGw7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGNoaWxkSW5kZXgrKztcbiAgICAgICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHByaXZhdGUgY2xvbmVUYWJMaXN0KGNoaWxkOiBSZWFjdC5SZWFjdEVsZW1lbnQ8SVRhYkxpc3RQcm9wcyAmIHtjaGlsZHJlbj86IFJlYWN0LlJlYWN0Tm9kZX0+KSB7XG4gICAgICAgIGxldCB0YWJJbmRleCA9IDA7XG4gICAgICAgIGNvbnN0IHRhYnMgPSBSZWFjdC5DaGlsZHJlbi5tYXAoY2hpbGQucHJvcHMuY2hpbGRyZW4sICh0YWI6IFJlYWN0LlJlYWN0RWxlbWVudDxhbnk+KSA9PiB7XG4gICAgICAgICAgICAvLyBjYW4gYmUgbnVsbCBpZiBjb25kaXRpb25hbGx5IHJlbmRlcmluZyBUYWJcbiAgICAgICAgICAgIGlmICh0YWIgPT0gbnVsbCkge1xuICAgICAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBjb25zdCBjbG9uZWRUYWIgPSBSZWFjdC5jbG9uZUVsZW1lbnQodGFiLCB7XG4gICAgICAgICAgICAgICAgaWQ6IHRoaXMudGFiSWRzW3RhYkluZGV4XSxcbiAgICAgICAgICAgICAgICBpc1NlbGVjdGVkOiB0aGlzLnN0YXRlLnNlbGVjdGVkVGFiSW5kZXggPT09IHRhYkluZGV4LFxuICAgICAgICAgICAgICAgIHBhbmVsSWQ6IHRoaXMucGFuZWxJZHNbdGFiSW5kZXhdLFxuICAgICAgICAgICAgICAgIHJlZjogYHRhYnMtJHt0YWJJbmRleH1gLFxuICAgICAgICAgICAgfSBhcyBJVGFiUHJvcHMpO1xuICAgICAgICAgICAgdGFiSW5kZXgrKztcbiAgICAgICAgICAgIHJldHVybiBjbG9uZWRUYWI7XG4gICAgICAgIH0pO1xuICAgICAgICByZXR1cm4gUmVhY3QuY2xvbmVFbGVtZW50KGNoaWxkLCB7XG4gICAgICAgICAgICBjaGlsZHJlbjogdGFicyxcbiAgICAgICAgICAgIGluZGljYXRvcldyYXBwZXJTdHlsZTogdGhpcy5zdGF0ZS5pbmRpY2F0b3JXcmFwcGVyU3R5bGUsXG4gICAgICAgICAgICByZWY6IFwidGFibGlzdFwiLFxuICAgICAgICB9IGFzIElUYWJMaXN0UHJvcHMpO1xuICAgIH1cblxuICAgIHByaXZhdGUgY2xvbmVUYWJQYW5lbChjaGlsZDogUmVhY3QuUmVhY3RFbGVtZW50PGFueT4sIHRhYkluZGV4OiBudW1iZXIpIHtcbiAgICAgICAgcmV0dXJuIFJlYWN0LmNsb25lRWxlbWVudChjaGlsZCwge1xuICAgICAgICAgICAgaWQ6IHRoaXMucGFuZWxJZHNbdGFiSW5kZXhdLFxuICAgICAgICAgICAgaXNTZWxlY3RlZDogdGhpcy5zdGF0ZS5zZWxlY3RlZFRhYkluZGV4ID09PSB0YWJJbmRleCxcbiAgICAgICAgICAgIHJlZjogYHBhbmVscy0ke3RhYkluZGV4fWAsXG4gICAgICAgICAgICB0YWJJZDogdGhpcy50YWJJZHNbdGFiSW5kZXhdLFxuICAgICAgICB9IGFzIElUYWJQYW5lbFByb3BzKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGZvY3VzVGFiKGluZGV4OiBudW1iZXIpIHtcbiAgICAgICAgY29uc3QgcmVmID0gYHRhYnMtJHtpbmRleH1gO1xuICAgICAgICBjb25zdCB0YWIgPSBmaW5kRE9NTm9kZSh0aGlzLnJlZnNbcmVmXSkgYXMgSFRNTEVsZW1lbnQ7XG4gICAgICAgIHRhYi5mb2N1cygpO1xuICAgIH1cblxuICAgIHByaXZhdGUgZ2V0Rm9jdXNlZFRhYkluZGV4KCkge1xuICAgICAgICBjb25zdCBmb2N1c2VkRWxlbWVudCA9IGRvY3VtZW50LmFjdGl2ZUVsZW1lbnQ7XG4gICAgICAgIGlmIChmb2N1c2VkRWxlbWVudCAhPSBudWxsICYmIGZvY3VzZWRFbGVtZW50LmNsYXNzTGlzdC5jb250YWlucyhDbGFzc2VzLlRBQikpIHtcbiAgICAgICAgICAgIGNvbnN0IHRhYklkID0gZm9jdXNlZEVsZW1lbnQuaWQ7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy50YWJJZHMuaW5kZXhPZih0YWJJZCk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIC0xO1xuICAgIH1cblxuICAgIHByaXZhdGUgZ2V0VGFicygpIHtcbiAgICAgICAgaWYgKHRoaXMucHJvcHMuY2hpbGRyZW4gPT0gbnVsbCkge1xuICAgICAgICAgICAgcmV0dXJuIFtdO1xuICAgICAgICB9XG4gICAgICAgIGxldCB0YWJzOiBSZWFjdC5SZWFjdEVsZW1lbnQ8SVRhYlByb3BzPltdID0gW107XG4gICAgICAgIGlmIChSZWFjdC5DaGlsZHJlbi5jb3VudCh0aGlzLnByb3BzLmNoaWxkcmVuKSA+IDApIHtcbiAgICAgICAgICAgIGNvbnN0IGZpcnN0Q2hpbGQgPSBSZWFjdC5DaGlsZHJlbi50b0FycmF5KHRoaXMucHJvcHMuY2hpbGRyZW4pWzBdIGFzIFJlYWN0LlJlYWN0RWxlbWVudDxhbnk+O1xuICAgICAgICAgICAgaWYgKGZpcnN0Q2hpbGQgIT0gbnVsbCkge1xuICAgICAgICAgICAgICAgIFJlYWN0LkNoaWxkcmVuLmZvckVhY2goZmlyc3RDaGlsZC5wcm9wcy5jaGlsZHJlbiwgKHRhYkxpc3RDaGlsZDogUmVhY3QuUmVhY3RFbGVtZW50PGFueT4pID0+IHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHRhYkxpc3RDaGlsZC50eXBlID09PSBUYWIpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRhYnMucHVzaCh0YWJMaXN0Q2hpbGQpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRhYnM7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBnZXRUYWJzQ291bnQoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmdldFRhYnMoKS5sZW5ndGg7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBnZXRQYW5lbHNDb3VudCgpIHtcbiAgICAgICAgaWYgKHRoaXMucHJvcHMuY2hpbGRyZW4gPT0gbnVsbCkge1xuICAgICAgICAgICAgcmV0dXJuIDA7XG4gICAgICAgIH1cblxuICAgICAgICBsZXQgaW5kZXggPSAwO1xuICAgICAgICBsZXQgcGFuZWxDb3VudCA9IDA7XG4gICAgICAgIFJlYWN0LkNoaWxkcmVuLmZvckVhY2godGhpcy5wcm9wcy5jaGlsZHJlbiwgKGNoaWxkOiBSZWFjdC5SZWFjdEVsZW1lbnQ8YW55PikgPT4ge1xuICAgICAgICAgICAgaWYgKGNoaWxkLnR5cGUgPT09IFRhYlBhbmVsKSB7XG4gICAgICAgICAgICAgICAgcGFuZWxDb3VudCsrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaW5kZXgrKztcbiAgICAgICAgfSk7XG5cbiAgICAgICAgcmV0dXJuIHBhbmVsQ291bnQ7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBnZXRTdGF0ZUZyb21Qcm9wcyhwcm9wczogSVRhYnNQcm9wcyk6IElUYWJzU3RhdGUge1xuICAgICAgICBjb25zdCB7IHNlbGVjdGVkVGFiSW5kZXgsIGluaXRpYWxTZWxlY3RlZFRhYkluZGV4IH0gPSBwcm9wcztcblxuICAgICAgICBpZiAodGhpcy5pc1ZhbGlkVGFiSW5kZXgoc2VsZWN0ZWRUYWJJbmRleCkpIHtcbiAgICAgICAgICAgIHJldHVybiB7IHNlbGVjdGVkVGFiSW5kZXggfTtcbiAgICAgICAgfSBlbHNlIGlmICh0aGlzLmlzVmFsaWRUYWJJbmRleChpbml0aWFsU2VsZWN0ZWRUYWJJbmRleCkgJiYgdGhpcy5zdGF0ZS5zZWxlY3RlZFRhYkluZGV4ID09IG51bGwpIHtcbiAgICAgICAgICAgIHJldHVybiB7IHNlbGVjdGVkVGFiSW5kZXg6IGluaXRpYWxTZWxlY3RlZFRhYkluZGV4IH07XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5zdGF0ZTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgaXNUYWJEaXNhYmxlZChpbmRleDogbnVtYmVyKSB7XG4gICAgICAgIGNvbnN0IHRhYiA9IHRoaXMuZ2V0VGFicygpW2luZGV4XTtcbiAgICAgICAgcmV0dXJuIHRhYiAhPSBudWxsICYmIHRhYi5wcm9wcy5pc0Rpc2FibGVkO1xuICAgIH1cblxuICAgIHByaXZhdGUgaXNWYWxpZFRhYkluZGV4KGluZGV4OiBudW1iZXIpIHtcbiAgICAgICAgcmV0dXJuIGluZGV4ICE9IG51bGwgJiYgaW5kZXggPj0gMCAmJiBpbmRleCA8IHRoaXMuZ2V0VGFic0NvdW50KCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVXBkYXRlcyB0aGUgY29tcG9uZW50J3Mgc3RhdGUgaWYgdW5jb250cm9sbGVkIGFuZCBjYWxscyBvbkNoYW5nZS5cbiAgICAgKi9cbiAgICBwcml2YXRlIHNldFNlbGVjdGVkVGFiSW5kZXgoaW5kZXg6IG51bWJlcikge1xuICAgICAgICBpZiAoaW5kZXggPT09IHRoaXMuc3RhdGUuc2VsZWN0ZWRUYWJJbmRleCB8fCAhdGhpcy5pc1ZhbGlkVGFiSW5kZXgoaW5kZXgpKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBwcmV2U2VsZWN0ZWRJbmRleCA9IHRoaXMuc3RhdGUuc2VsZWN0ZWRUYWJJbmRleDtcblxuICAgICAgICBpZiAodGhpcy5wcm9wcy5zZWxlY3RlZFRhYkluZGV4ID09IG51bGwpIHtcbiAgICAgICAgICAgIHRoaXMuc2V0U3RhdGUoe1xuICAgICAgICAgICAgICAgIHNlbGVjdGVkVGFiSW5kZXg6IGluZGV4LFxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoVXRpbHMuaXNGdW5jdGlvbih0aGlzLnByb3BzLm9uQ2hhbmdlKSkge1xuICAgICAgICAgICAgdGhpcy5wcm9wcy5vbkNoYW5nZShpbmRleCwgcHJldlNlbGVjdGVkSW5kZXgpO1xuICAgICAgICB9XG4gICAgfVxufVxuXG5sZXQgdGFiQ291bnQgPSAwO1xuZnVuY3Rpb24gZ2VuZXJhdGVUYWJJZCgpIHtcbiAgICByZXR1cm4gYHB0LXRhYi0ke3RhYkNvdW50Kyt9YDtcbn1cblxubGV0IHBhbmVsQ291bnQgPSAwO1xuZnVuY3Rpb24gZ2VuZXJhdGVQYW5lbElkKCkge1xuICAgIHJldHVybiBgcHQtdGFiLXBhbmVsLSR7cGFuZWxDb3VudCsrfWA7XG59XG5cbmV4cG9ydCB2YXIgVGFic0ZhY3RvcnkgPSBSZWFjdC5jcmVhdGVGYWN0b3J5KFRhYnMpO1xuIl0sInNvdXJjZVJvb3QiOiIvc291cmNlLyJ9
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9jb21wb25lbnRzL3RhYnMvdGFicy50c3giXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7OztHQUdHOzs7Ozs7Ozs7Ozs7O0FBRUgsSUFBWSxVQUFVLFdBQU0sWUFBWSxDQUFDLENBQUE7QUFDekMsSUFBWSxVQUFVLFdBQU0sdUJBQXVCLENBQUMsQ0FBQTtBQUNwRCxJQUFZLEtBQUssV0FBTSxPQUFPLENBQUMsQ0FBQTtBQUMvQiwwQkFBNEIsV0FBVyxDQUFDLENBQUE7QUFFeEMsa0NBQWtDLGdDQUFnQyxDQUFDLENBQUE7QUFDbkUsSUFBWSxPQUFPLFdBQU0sc0JBQXNCLENBQUMsQ0FBQTtBQUNoRCxJQUFZLE1BQU0sV0FBTSxxQkFBcUIsQ0FBQyxDQUFBO0FBQzlDLElBQVksSUFBSSxXQUFNLG1CQUFtQixDQUFDLENBQUE7QUFFMUMsSUFBWSxLQUFLLFdBQU0sb0JBQW9CLENBQUMsQ0FBQTtBQUU1QyxvQkFBK0IsT0FBTyxDQUFDLENBQUE7QUFDdkMsd0JBQXVDLFdBQVcsQ0FBQyxDQUFBO0FBQ25ELHlCQUF5QyxZQUFZLENBQUMsQ0FBQTtBQXNDdEQsSUFBTSxnQkFBZ0IsR0FBRyxjQUFjLENBQUM7QUFHeEM7SUFBMEIsd0JBQXlDO0lBYy9ELGNBQVksS0FBa0IsRUFBRSxPQUFhO1FBZGpELGlCQTBUQztRQTNTTyxrQkFBTSxLQUFLLEVBQUUsT0FBTyxDQUFDLENBQUM7UUFWbkIsZ0JBQVcsR0FBRyxnQkFBZ0IsQ0FBQztRQUN0QyxvRkFBb0Y7UUFDN0UsVUFBSyxHQUFlLEVBQUUsQ0FBQztRQUV0QixhQUFRLEdBQWEsRUFBRSxDQUFDO1FBQ3hCLFdBQU0sR0FBYSxFQUFFLENBQUM7UUE4RHRCLGdCQUFXLEdBQUcsVUFBQyxDQUF1QztZQUMxRCxLQUFJLENBQUMsdUJBQXVCLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDcEMsQ0FBQyxDQUFBO1FBRU8sbUJBQWMsR0FBRyxVQUFDLENBQXNDO1lBQzVELElBQU0sU0FBUyxHQUFJLENBQUMs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QztnQkFDVixnQkFBZ0IsRUFBRSxLQUFLO2FBQzFCLENBQUMsQ0FBQztRQUNQLENBQUM7UUFFRCxFQUFFLENBQUMsQ0FBQyxLQUFLLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQ3hDLElBQUksQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLEtBQUssRUFBRSxpQkFBaUIsQ0FBQyxDQUFDO1FBQ2xELENBQUM7SUFDTCxDQUFDO0lBeFRhLGlCQUFZLEdBQWU7UUFDckMsdUJBQXVCLEVBQUUsQ0FBQztLQUM3QixDQUFDO0lBSk47UUFBQyxVQUFVO1lBQUE7SUEyVFgsV0FBQztBQUFELENBMVRBLEFBMFRDLENBMVR5QixxQ0FBaUIsR0EwVDFDO0FBMVRZLFlBQUksT0EwVGhCLENBQUE7QUFFRCxJQUFJLFFBQVEsR0FBRyxDQUFDLENBQUM7QUFDakI7SUFDSSxNQUFNLENBQUMsWUFBVSxRQUFRLEVBQUksQ0FBQztBQUNsQyxDQUFDO0FBRUQsSUFBSSxVQUFVLEdBQUcsQ0FBQyxDQUFDO0FBQ25CO0lBQ0ksTUFBTSxDQUFDLGtCQUFnQixVQUFVLEVBQUksQ0FBQztBQUMxQyxDQUFDO0FBRVUsbUJBQVcsR0FBRyxLQUFLLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxDQUFDIiwiZmlsZSI6ImNvbXBvbmVudHMvdGFicy90YWJzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiLypcbiAqIENvcHlyaWdodCAyMDE1IFBhbGFudGlyIFRlY2hub2xvZ2llcywgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAtIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICovXG5cbmltcG9ydCAqIGFzIGNsYXNzTmFtZXMgZnJvbSBcImNsYXNzbmFtZXNcIjtcbmltcG9ydCAqIGFzIFB1cmVSZW5kZXIgZnJvbSBcInB1cmUtcmVuZGVyLWRlY29yYXRvclwiO1xuaW1wb3J0ICogYXMgUmVhY3QgZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgeyBmaW5kRE9NTm9kZSB9IGZyb20gXCJyZWFjdC1kb21cIjtcblxuaW1wb3J0IHsgQWJzdHJhY3RDb21wb25lbnQgfSBmcm9tIFwiLi4vLi4vY29tbW9uL2Fic3RyYWN0Q29tcG9uZW50XCI7XG5pbXBvcnQgKiBhcyBDbGFzc2VzIGZyb20gXCIuLi8uLi9jb21tb24vY2xhc3Nlc1wiO1xuaW1wb3J0ICogYXMgRXJyb3JzIGZyb20gXCIuLi8uLi9jb21tb24vZXJyb3JzXCI7XG5pbXBvcnQgKiBhcyBLZXlzIGZyb20gXCIuLi8uLi9jb21tb24va2V5c1wiO1xuaW1wb3J0IHsgSVByb3BzIH0gZnJvbSBcIi4uLy4uL2NvbW1vbi9wcm9wc1wiO1xuaW1wb3J0ICogYXMgVXRpbHMgZnJvbSBcIi4uLy4uL2NvbW1vbi91dGlsc1wiO1xuXG5pbXBvcnQgeyBJVGFiUHJvcHMsIFRhYiB9IGZyb20gXCIuL3RhYlwiO1xuaW1wb3J0IHsgSVRhYkxpc3RQcm9wcywgVGFiTGlzdCB9IGZyb20gXCIuL3RhYkxpc3RcIjtcbmltcG9ydCB7IElUYWJQYW5lbFByb3BzLCBUYWJQYW5lbCB9IGZyb20gXCIuL3RhYlBhbmVsXCI7XG5cbmV4cG9ydCBpbnRlcmZhY2UgSVRhYnNQcm9wcyBleHRlbmRzIElQcm9wcyB7XG4gICAgLyoqXG4gICAgICogVGhlIGluZGV4IG9mIHRoZSBpbml0aWFsbHkgc2VsZWN0ZWQgdGFiIHdoZW4gdGhpcyBjb21wb25lbnQgcmVuZGVycy5cbiAgICAgKiBUaGlzIHByb3AgaGFzIG5vIGVmZmVjdCBpZiBgc2VsZWN0ZWRUYWJJbmRleGAgaXMgYWxzbyBwcm92aWRlZC5cbiAgICAgKiBAZGVmYXVsdCAwXG4gICAgICovXG4gICAgaW5pdGlhbFNlbGVjdGVkVGFiSW5kZXg/OiBudW1iZXI7XG5cbiAgICAvKipcbiAgICAgKiBUaGUgaW5kZXggb2YgdGhlIGN1cnJlbnRseSBzZWxlY3RlZCB0YWIuXG4gICAgICogVXNlIHRoaXMgcHJvcCBpZiB5b3Ugd2FudCB0byBleHBsaWNpdGx5IGNvbnRyb2wgdGhlIGN1cnJlbnRseSBkaXNwbGF5ZWQgcGFuZWxcbiAgICAgKiB5b3Vyc2VsZiB3aXRoIHRoZSBgb25DaGFuZ2VgIGV2ZW50IGhhbmRsZXIuXG4gICAgICogSWYgdGhpcyBwcm9wIGlzIGxlZnQgdW5kZWZpbmVkLCB0aGUgY29tcG9uZW50IGNoYW5nZXMgdGFiIHBhbmVscyBhdXRvbWF0aWNhbGx5XG4gICAgICogd2hlbiB0YWJzIGFyZSBjbGlja2VkLlxuICAgICAqL1xuICAgIHNlbGVjdGVkVGFiSW5kZXg/OiBudW1iZXI7XG5cbiAgICAvKipcbiAgICAgKiBBIGNhbGxiYWNrIGZ1bmN0aW9uIHRoYXQgaXMgaW52b2tlZCB3aGVuIHRhYnMgaW4gdGhlIHRhYiBsaXN0IGFyZSBjbGlja2VkLlxuICAgICAqL1xuICAgIG9uQ2hhbmdlPyhzZWxlY3RlZFRhYkluZGV4OiBudW1iZXIsIHByZXZTZWxlY3RlZFRhYkluZGV4OiBudW1iZXIpOiB2b2lkO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIElUYWJzU3RhdGUge1xuICAgIC8qKlxuICAgICAqIFRoZSBsaXN0IG9mIENTUyBydWxlcyB0byB1c2Ugb24gdGhlIGluZGljYXRvciB3cmFwcGVyIG9mIHRoZSB0YWIgbGlzdC5cbiAgICAgKi9cbiAgICBpbmRpY2F0b3JXcmFwcGVyU3R5bGU/OiBSZWFjdC5DU1NQcm9wZXJ0aWVzO1xuXG4gICAgLyoqXG4gICAgICogVGhlIGluZGV4IG9mIHRoZSBjdXJyZW50bHkgc2VsZWN0ZWQgdGFiLlxuICAgICAqIElmIGEgcHJvcCB3aXRoIHRoZSBzYW1lIG5hbWUgaXMgc2V0LCB0aGlzIGJpdCBvZiBzdGF0ZSBzaW1wbHkgYWxpYXNlcyB0aGUgcHJvcC5cbiAgICAgKi9cbiAgICBzZWxlY3RlZFRhYkluZGV4PzogbnVtYmVyO1xufVxuXG5jb25zdCBUQUJfQ1NTX1NFTEVDVE9SID0gXCJsaVtyb2xlPXRhYl1cIjtcblxuQFB1cmVSZW5kZXJcbmV4cG9ydCBjbGFzcyBUYWJzIGV4dGVuZHMgQWJzdHJhY3RDb21wb25lbnQ8SVRhYnNQcm9wcywgSVRhYnNTdGF0ZT4ge1xuICAgIHB1YmxpYyBzdGF0aWMgZGVmYXVsdFByb3BzOiBJVGFic1Byb3BzID0ge1xuICAgICAgICBpbml0aWFsU2VsZWN0ZWRUYWJJbmRleDogMCxcbiAgICB9O1xuXG4gICAgcHVibGljIGRpc3BsYXlOYW1lID0gXCJCbHVlcHJpbnQuVGFic1wiO1xuICAgIC8vIHN0YXRlIGlzIGluaXRpYWxpemVkIGluIHRoZSBjb25zdHJ1Y3RvciBidXQgZ2V0U3RhdGVGcm9tUHJvcHMgbmVlZHMgc3RhdGUgZGVmaW5lZFxuICAgIHB1YmxpYyBzdGF0ZTogSVRhYnNTdGF0ZSA9IHt9O1xuXG4gICAgcHJpdmF0ZSBwYW5lbElkczogc3RyaW5nW10gPSBbXTtcbiAgICBwcml2YXRlIHRhYklkczogc3RyaW5nW10gPSBbXTtcblxuICAgIHByaXZhdGUgbW92ZVRpbWVvdXQ6IG51bWJlcjtcblxuICAgIGNvbnN0cnVjdG9yKHByb3BzPzogSVRhYnNQcm9wcywgY29udGV4dD86IGFueSkge1xuICAgICAgICBzdXBlcihwcm9wcywgY29udGV4dCk7XG4gICAgICAgIHRoaXMuc3RhdGUgPSB0aGlzLmdldFN0YXRlRnJvbVByb3BzKHRoaXMucHJvcHMpO1xuICAgIH1cblxuICAgIHB1YmxpYyByZW5kZXIoKSB7XG4gICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgY2xhc3NOYW1lPXtjbGFzc05hbWVzKENsYXNzZXMuVEFCUywgdGhpcy5wcm9wcy5jbGFzc05hbWUpfVxuICAgICAgICAgICAgICAgIG9uQ2xpY2s9e3RoaXMuaGFuZGxlQ2xpY2t9XG4gICAgICAgICAgICAgICAgb25LZXlQcmVzcz17dGhpcy5oYW5kbGVLZXlQcmVzc31cbiAgICAgICAgICAgICAgICBvbktleURvd249e3RoaXMuaGFuZGxlS2V5RG93bn1cbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICB7dGhpcy5nZXRDaGlsZHJlbigpfVxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgcHVibGljIGNvbXBvbmVudFdpbGxSZWNlaXZlUHJvcHMobmV3UHJvcHM6IElUYWJzUHJvcHMpIHtcbiAgICAgICAgY29uc3QgbmV3U3RhdGUgPSB0aGlzLmdldFN0YXRlRnJvbVByb3BzKG5ld1Byb3BzKTtcbiAgICAgICAgY29uc3QgbmV3SW5kZXggPSBuZXdTdGF0ZS5zZWxlY3RlZFRhYkluZGV4O1xuICAgICAgICBpZiAobmV3SW5kZXggIT09IHRoaXMuc3RhdGUuc2VsZWN0ZWRUYWJJbmRleCkge1xuICAgICAgICAgICAgdGhpcy5zZXRTZWxlY3RlZFRhYkluZGV4KG5ld0luZGV4KTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLnNldFN0YXRlKG5ld1N0YXRlKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgY29tcG9uZW50RGlkTW91bnQoKSB7XG4gICAgICAgIGNvbnN0IHNlbGVjdGVkVGFiID0gZmluZERPTU5vZGUodGhpcy5yZWZzW2B0YWJzLSR7dGhpcy5zdGF0ZS5zZWxlY3RlZFRhYkluZGV4fWBdKSBhcyBIVE1MRWxlbWVudDtcbiAgICAgICAgdGhpcy5tb3ZlVGltZW91dCA9IHNldFRpbWVvdXQoKCkgPT4gdGhpcy5tb3ZlSW5kaWNhdG9yKHNlbGVjdGVkVGFiKSk7XG4gICAgfVxuXG4gICAgcHVibGljIGNvbXBvbmVudERpZFVwZGF0ZShfOiBJVGFic1Byb3BzLCBwcmV2U3RhdGU6IElUYWJzU3RhdGUpIHtcbiAgICAgICAgY29uc3QgbmV3SW5kZXggPSB0aGlzLnN0YXRlLnNlbGVjdGVkVGFiSW5kZXg7XG4gICAgICAgIGlmIChuZXdJbmRleCAhPT0gcHJldlN0YXRlLnNlbGVjdGVkVGFiSW5kZXgpIHtcbiAgICAgICAgICAgIGNvbnN0IHRhYkVsZW1lbnQgPSBmaW5kRE9NTm9kZSh0aGlzLnJlZnNbYHRhYnMtJHtuZXdJbmRleH1gXSkgYXMgSFRNTEVsZW1lbnQ7XG4gICAgICAgICAgICAvLyBuZWVkIHRvIG1lYXN1cmUgb24gdGhlIG5leHQgZnJhbWUgaW4gY2FzZSB0aGUgVGFiIGNoaWxkcmVuIHNpbXVsdGFuZW91c2x5IGNoYW5nZVxuICAgICAgICAgICAgdGhpcy5tb3ZlVGltZW91dCA9IHNldFRpbWVvdXQoKCkgPT4gdGhpcy5tb3ZlSW5kaWNhdG9yKHRhYkVsZW1lbnQpKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHB1YmxpYyBjb21wb25lbnRXaWxsVW5tb3VudCgpIHtcbiAgICAgICAgY2xlYXJUaW1lb3V0KHRoaXMubW92ZVRpbWVvdXQpO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCB2YWxpZGF0ZVByb3BzKHByb3BzOiBJVGFic1Byb3BzICYge2NoaWxkcmVuPzogUmVhY3QuUmVhY3ROb2RlfSkge1xuICAgICAgICBpZiAoUmVhY3QuQ2hpbGRyZW4uY291bnQocHJvcHMuY2hpbGRyZW4pID4gMCkge1xuICAgICAgICAgICAgY29uc3QgY2hpbGQgPSBSZWFjdC5DaGlsZHJlbi50b0FycmF5KHByb3BzLmNoaWxkcmVuKVswXSBhcyBSZWFjdC5SZWFjdEVsZW1lbnQ8YW55PjtcbiAgICAgICAgICAgIGlmIChjaGlsZCAhPSBudWxsICYmIGNoaWxkLnR5cGUgIT09IFRhYkxpc3QpIHtcbiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoRXJyb3JzLlRBQlNfRklSU1RfQ0hJTEQpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAodGhpcy5nZXRUYWJzQ291bnQoKSAhPT0gdGhpcy5nZXRQYW5lbHNDb3VudCgpKSB7XG4gICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKEVycm9ycy5UQUJTX01JU01BVENIKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgaGFuZGxlQ2xpY2sgPSAoZTogUmVhY3QuU3ludGhldGljRXZlbnQ8SFRNTERpdkVsZW1lbnQ+KSA9PiB7XG4gICAgICAgIHRoaXMuaGFuZGxlVGFiU2VsZWN0aW5nRXZlbnQoZSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBoYW5kbGVLZXlQcmVzcyA9IChlOiBSZWFjdC5LZXlib2FyZEV2ZW50PEhUTUxEaXZFbGVtZW50PikgPT4ge1xuICAgICAgICBjb25zdCBpbnNpZGVUYWIgPSAoZS50YXJnZXQgYXMgSFRNTEVsZW1lbnQpLmNsb3Nlc3QoYC4ke0NsYXNzZXMuVEFCfWApICE9IG51bGw7XG4gICAgICAgIGlmIChpbnNpZGVUYWIgJiYgKGUud2hpY2ggPT09IEtleXMuU1BBQ0UgfHwgZS53aGljaCA9PT0gS2V5cy5FTlRFUikpIHtcbiAgICAgICAgICAgIGUucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICAgIHRoaXMuaGFuZGxlVGFiU2VsZWN0aW5nRXZlbnQoZSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIGhhbmRsZUtleURvd24gPSAoZTogUmVhY3QuS2V5Ym9hcmRFdmVudDxIVE1MRGl2RWxlbWVudD4pID0+IHtcbiAgICAgICAgLy8gZG9uJ3Qgd2FudCB0byBoYW5kbGUga2V5RG93biBldmVudHMgaW5zaWRlIGEgdGFiIHBhbmVsXG4gICAgICAgIGNvbnN0IGluc2lkZVRhYkxpc3QgPSAoZS50YXJnZXQgYXMgSFRNTEVsZW1lbnQpLmNsb3Nlc3QoYC4ke0NsYXNzZXMuVEFCX0xJU1R9YCkgIT0gbnVsbDtcbiAgICAgICAgaWYgKCFpbnNpZGVUYWJMaXN0KSB7IHJldHVybjsgfVxuXG4gICAgICAgIGNvbnN0IGZvY3VzZWRUYWJJbmRleCA9IHRoaXMuZ2V0Rm9jdXNlZFRhYkluZGV4KCk7XG4gICAgICAgIGlmIChmb2N1c2VkVGFiSW5kZXggPT09IC0xKSB7IHJldHVybjsgfVxuXG4gICAgICAgIGlmIChlLndoaWNoID09PSBLZXlzLkFSUk9XX0xFRlQpIHtcbiAgICAgICAgICAgIGUucHJldmVudERlZmF1bHQoKTtcblxuICAgICAgICAgICAgLy8gZmluZCBwcmV2aW91cyB0YWIgdGhhdCBpc24ndCBkaXNhYmxlZFxuICAgICAgICAgICAgbGV0IG5ld1RhYkluZGV4ID0gZm9jdXNlZFRhYkluZGV4IC0gMTtcbiAgICAgICAgICAgIGxldCB0YWJJc0Rpc2FibGVkID0gdGhpcy5pc1RhYkRpc2FibGVkKG5ld1RhYkluZGV4KTtcblxuICAgICAgICAgICAgd2hpbGUgKHRhYklzRGlzYWJsZWQgJiYgbmV3VGFiSW5kZXggIT09IC0xKSB7XG4gICAgICAgICAgICAgICAgbmV3VGFiSW5kZXgtLTtcbiAgICAgICAgICAgICAgICB0YWJJc0Rpc2FibGVkID0gdGhpcy5pc1RhYkRpc2FibGVkKG5ld1RhYkluZGV4KTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKG5ld1RhYkluZGV4ICE9PSAtMSkge1xuICAgICAgICAgICAgICAgIHRoaXMuZm9jdXNUYWIobmV3VGFiSW5kZXgpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9IGVsc2UgaWYgKGUud2hpY2ggPT09IEtleXMuQVJST1dfUklHSFQpIHtcbiAgICAgICAgICAgIGUucHJldmVudERlZmF1bHQoKTtcblxuICAgICAgICAgICAgLy8gZmluZCBuZXh0IHRhYiB0aGF0IGlzbid0IGRpc2FibGVkXG4gICAgICAgICAgICBjb25zdCB0YWJzQ291bnQgPSB0aGlzLmdldFRhYnNDb3VudCgpO1xuXG4gICAgICAgICAgICBsZXQgbmV3VGFiSW5kZXggPSBmb2N1c2VkVGFiSW5kZXggKyAxO1xuICAgICAgICAgICAgbGV0IHRhYklzRGlzYWJsZWQgPSB0aGlzLmlzVGFiRGlzYWJsZWQobmV3VGFiSW5kZXgpO1xuXG4gICAgICAgICAgICB3aGlsZSAodGFiSXNEaXNhYmxlZCAmJiBuZXdUYWJJbmRleCAhPT0gdGFic0NvdW50KSB7XG4gICAgICAgICAgICAgICAgbmV3VGFiSW5kZXgrKztcbiAgICAgICAgICAgICAgICB0YWJJc0Rpc2FibGVkID0gdGhpcy5pc1RhYkRpc2FibGVkKG5ld1RhYkluZGV4KTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKG5ld1RhYkluZGV4ICE9PSB0YWJzQ291bnQpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmZvY3VzVGFiKG5ld1RhYkluZGV4KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgaGFuZGxlVGFiU2VsZWN0aW5nRXZlbnQgPSAoZTogUmVhY3QuU3ludGhldGljRXZlbnQ8SFRNTERpdkVsZW1lbnQ+KSA9PiB7XG4gICAgICAgIGNvbnN0IHRhYkVsZW1lbnQgPSAoZS50YXJnZXQgYXMgSFRNTEVsZW1lbnQpLmNsb3Nlc3QoVEFCX0NTU19TRUxFQ1RPUikgYXMgSFRNTEVsZW1lbnQ7XG5cbiAgICAgICAgLy8gc2VsZWN0IG9ubHkgaWYgVGFiIGlzIG9uZSBvZiB1cyBhbmQgaXMgZW5hYmxlZFxuICAgICAgICBpZiAodGFiRWxlbWVudCAhPSBudWxsXG4gICAgICAgICAgICAgICAgJiYgdGhpcy50YWJJZHMuaW5kZXhPZih0YWJFbGVtZW50LmlkKSA+PSAwXG4gICAgICAgICAgICAgICAgJiYgdGFiRWxlbWVudC5nZXRBdHRyaWJ1dGUoXCJhcmlhLWRpc2FibGVkXCIpICE9PSBcInRydWVcIikge1xuICAgICAgICAgICAgY29uc3QgaW5kZXggPSB0YWJFbGVtZW50LnBhcmVudEVsZW1lbnQucXVlcnlBbGwoVEFCX0NTU19TRUxFQ1RPUikuaW5kZXhPZih0YWJFbGVtZW50KTtcblxuICAgICAgICAgICAgdGhpcy5zZXRTZWxlY3RlZFRhYkluZGV4KGluZGV4KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENhbGN1bGF0ZSB0aGUgbmV3IGhlaWdodCwgd2lkdGgsIGFuZCBwb3NpdGlvbiBvZiB0aGUgdGFiIGluZGljYXRvci5cbiAgICAgKiBTdG9yZSB0aGUgQ1NTIHZhbHVlcyBzbyB0aGUgdHJhbnNpdGlvbiBhbmltYXRpb24gY2FuIHN0YXJ0LlxuICAgICAqL1xuICAgIHByaXZhdGUgbW92ZUluZGljYXRvcih7IGNsaWVudEhlaWdodCwgY2xpZW50V2lkdGgsIG9mZnNldExlZnQsIG9mZnNldFRvcCB9OiBIVE1MRWxlbWVudCkge1xuICAgICAgICBjb25zdCBpbmRpY2F0b3JXcmFwcGVyU3R5bGUgPSB7XG4gICAgICAgICAgICBoZWlnaHQ6IGNsaWVudEhlaWdodCxcbiAgICAgICAgICAgIHRyYW5zZm9ybTogYHRyYW5zbGF0ZVgoJHtNYXRoLmZsb29yKG9mZnNldExlZnQpfXB4KSB0cmFuc2xhdGVZKCR7TWF0aC5mbG9vcihvZmZzZXRUb3ApfXB4KWAsXG4gICAgICAgICAgICB3aWR0aDogY2xpZW50V2lkdGgsXG4gICAgICAgIH07XG4gICAgICAgIHRoaXMuc2V0U3RhdGUoeyBpbmRpY2F0b3JXcmFwcGVyU3R5bGUgfSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogTW9zdCBvZiB0aGUgY29tcG9uZW50IGxvZ2ljIGxpdmVzIGhlcmUuIFdlIGNsb25lIHRoZSBjaGlsZHJlbiBwcm92aWRlZCBieSB0aGUgdXNlciB0byBzZXQgdXAgcmVmcyxcbiAgICAgKiBhY2Nlc3NpYmlsaXR5IGF0dHJpYnV0ZXMsIGFuZCBzZWxlY3Rpb24gcHJvcHMgY29ycmVjdGx5LlxuICAgICAqL1xuICAgIHByaXZhdGUgZ2V0Q2hpbGRyZW4oKSB7XG4gICAgICAgIGZvciAobGV0IHVuYXNzaWduZWRUYWJzID0gdGhpcy5nZXRUYWJzQ291bnQoKSAtIHRoaXMudGFiSWRzLmxlbmd0aDsgdW5hc3NpZ25lZFRhYnMgPiAwOyB1bmFzc2lnbmVkVGFicy0tKSB7XG4gICAgICAgICAgICB0aGlzLnRhYklkcy5wdXNoKGdlbmVyYXRlVGFiSWQoKSk7XG4gICAgICAgICAgICB0aGlzLnBhbmVsSWRzLnB1c2goZ2VuZXJhdGVQYW5lbElkKCkpO1xuICAgICAgICB9XG5cbiAgICAgICAgbGV0IGNoaWxkSW5kZXggPSAwO1xuICAgICAgICByZXR1cm4gUmVhY3QuQ2hpbGRyZW4ubWFwKHRoaXMucHJvcHMuY2hpbGRyZW4sIChjaGlsZDogUmVhY3QuUmVhY3RFbGVtZW50PGFueT4pID0+IHtcbiAgICAgICAgICAgIGxldCByZXN1bHQ6IFJlYWN0LlJlYWN0RWxlbWVudDxhbnk+O1xuXG4gICAgICAgICAgICAvLyBjYW4gYmUgbnVsbCBpZiBjb25kaXRpb25hbGx5IHJlbmRlcmluZyBUYWJMaXN0IC8gVGFiUGFuZWxcbiAgICAgICAgICAgIGlmIChjaGlsZCA9PSBudWxsKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmIChjaGlsZEluZGV4ID09PSAwKSB7XG4gICAgICAgICAgICAgICAgLy8gY2xvbmUgVGFiTGlzdCAvIFRhYiBlbGVtZW50c1xuICAgICAgICAgICAgICAgIHJlc3VsdCA9IHRoaXMuY2xvbmVUYWJMaXN0KGNoaWxkKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgY29uc3QgdGFiUGFuZWxJbmRleCA9IGNoaWxkSW5kZXggLSAxO1xuICAgICAgICAgICAgICAgIGNvbnN0IHNob3VsZFJlbmRlclRhYlBhbmVsID0gdGhpcy5zdGF0ZS5zZWxlY3RlZFRhYkluZGV4ID09PSB0YWJQYW5lbEluZGV4O1xuICAgICAgICAgICAgICAgIHJlc3VsdCA9IHNob3VsZFJlbmRlclRhYlBhbmVsID8gdGhpcy5jbG9uZVRhYlBhbmVsKGNoaWxkLCB0YWJQYW5lbEluZGV4KSA6IG51bGw7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGNoaWxkSW5kZXgrKztcbiAgICAgICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHByaXZhdGUgY2xvbmVUYWJMaXN0KGNoaWxkOiBSZWFjdC5SZWFjdEVsZW1lbnQ8SVRhYkxpc3RQcm9wcyAmIHtjaGlsZHJlbj86IFJlYWN0LlJlYWN0Tm9kZX0+KSB7XG4gICAgICAgIGxldCB0YWJJbmRleCA9IDA7XG4gICAgICAgIGNvbnN0IHRhYnMgPSBSZWFjdC5DaGlsZHJlbi5tYXAoY2hpbGQucHJvcHMuY2hpbGRyZW4sICh0YWI6IFJlYWN0LlJlYWN0RWxlbWVudDxhbnk+KSA9PiB7XG4gICAgICAgICAgICAvLyBjYW4gYmUgbnVsbCBpZiBjb25kaXRpb25hbGx5IHJlbmRlcmluZyBUYWJcbiAgICAgICAgICAgIGlmICh0YWIgPT0gbnVsbCkge1xuICAgICAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBjb25zdCBjbG9uZWRUYWIgPSBSZWFjdC5jbG9uZUVsZW1lbnQodGFiLCB7XG4gICAgICAgICAgICAgICAgaWQ6IHRoaXMudGFiSWRzW3RhYkluZGV4XSxcbiAgICAgICAgICAgICAgICBpc1NlbGVjdGVkOiB0aGlzLnN0YXRlLnNlbGVjdGVkVGFiSW5kZXggPT09IHRhYkluZGV4LFxuICAgICAgICAgICAgICAgIHBhbmVsSWQ6IHRoaXMucGFuZWxJZHNbdGFiSW5kZXhdLFxuICAgICAgICAgICAgICAgIHJlZjogYHRhYnMtJHt0YWJJbmRleH1gLFxuICAgICAgICAgICAgfSBhcyBJVGFiUHJvcHMpO1xuICAgICAgICAgICAgdGFiSW5kZXgrKztcbiAgICAgICAgICAgIHJldHVybiBjbG9uZWRUYWI7XG4gICAgICAgIH0pO1xuICAgICAgICByZXR1cm4gUmVhY3QuY2xvbmVFbGVtZW50KGNoaWxkLCB7XG4gICAgICAgICAgICBjaGlsZHJlbjogdGFicyxcbiAgICAgICAgICAgIGluZGljYXRvcldyYXBwZXJTdHlsZTogdGhpcy5zdGF0ZS5pbmRpY2F0b3JXcmFwcGVyU3R5bGUsXG4gICAgICAgICAgICByZWY6IFwidGFibGlzdFwiLFxuICAgICAgICB9IGFzIElUYWJMaXN0UHJvcHMpO1xuICAgIH1cblxuICAgIHByaXZhdGUgY2xvbmVUYWJQYW5lbChjaGlsZDogUmVhY3QuUmVhY3RFbGVtZW50PGFueT4sIHRhYkluZGV4OiBudW1iZXIpIHtcbiAgICAgICAgcmV0dXJuIFJlYWN0LmNsb25lRWxlbWVudChjaGlsZCwge1xuICAgICAgICAgICAgaWQ6IHRoaXMucGFuZWxJZHNbdGFiSW5kZXhdLFxuICAgICAgICAgICAgaXNTZWxlY3RlZDogdGhpcy5zdGF0ZS5zZWxlY3RlZFRhYkluZGV4ID09PSB0YWJJbmRleCxcbiAgICAgICAgICAgIHJlZjogYHBhbmVscy0ke3RhYkluZGV4fWAsXG4gICAgICAgICAgICB0YWJJZDogdGhpcy50YWJJZHNbdGFiSW5kZXhdLFxuICAgICAgICB9IGFzIElUYWJQYW5lbFByb3BzKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGZvY3VzVGFiKGluZGV4OiBudW1iZXIpIHtcbiAgICAgICAgY29uc3QgcmVmID0gYHRhYnMtJHtpbmRleH1gO1xuICAgICAgICBjb25zdCB0YWIgPSBmaW5kRE9NTm9kZSh0aGlzLnJlZnNbcmVmXSkgYXMgSFRNTEVsZW1lbnQ7XG4gICAgICAgIHRhYi5mb2N1cygpO1xuICAgIH1cblxuICAgIHByaXZhdGUgZ2V0Rm9jdXNlZFRhYkluZGV4KCkge1xuICAgICAgICBjb25zdCBmb2N1c2VkRWxlbWVudCA9IGRvY3VtZW50LmFjdGl2ZUVsZW1lbnQ7XG4gICAgICAgIGlmIChmb2N1c2VkRWxlbWVudCAhPSBudWxsICYmIGZvY3VzZWRFbGVtZW50LmNsYXNzTGlzdC5jb250YWlucyhDbGFzc2VzLlRBQikpIHtcbiAgICAgICAgICAgIGNvbnN0IHRhYklkID0gZm9jdXNlZEVsZW1lbnQuaWQ7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy50YWJJZHMuaW5kZXhPZih0YWJJZCk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIC0xO1xuICAgIH1cblxuICAgIHByaXZhdGUgZ2V0VGFicygpIHtcbiAgICAgICAgaWYgKHRoaXMucHJvcHMuY2hpbGRyZW4gPT0gbnVsbCkge1xuICAgICAgICAgICAgcmV0dXJuIFtdO1xuICAgICAgICB9XG4gICAgICAgIGxldCB0YWJzOiBSZWFjdC5SZWFjdEVsZW1lbnQ8SVRhYlByb3BzPltdID0gW107XG4gICAgICAgIGlmIChSZWFjdC5DaGlsZHJlbi5jb3VudCh0aGlzLnByb3BzLmNoaWxkcmVuKSA+IDApIHtcbiAgICAgICAgICAgIGNvbnN0IGZpcnN0Q2hpbGQgPSBSZWFjdC5DaGlsZHJlbi50b0FycmF5KHRoaXMucHJvcHMuY2hpbGRyZW4pWzBdIGFzIFJlYWN0LlJlYWN0RWxlbWVudDxhbnk+O1xuICAgICAgICAgICAgaWYgKGZpcnN0Q2hpbGQgIT0gbnVsbCkge1xuICAgICAgICAgICAgICAgIFJlYWN0LkNoaWxkcmVuLmZvckVhY2goZmlyc3RDaGlsZC5wcm9wcy5jaGlsZHJlbiwgKHRhYkxpc3RDaGlsZDogUmVhY3QuUmVhY3RFbGVtZW50PGFueT4pID0+IHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHRhYkxpc3RDaGlsZC50eXBlID09PSBUYWIpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRhYnMucHVzaCh0YWJMaXN0Q2hpbGQpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRhYnM7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBnZXRUYWJzQ291bnQoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmdldFRhYnMoKS5sZW5ndGg7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBnZXRQYW5lbHNDb3VudCgpIHtcbiAgICAgICAgaWYgKHRoaXMucHJvcHMuY2hpbGRyZW4gPT0gbnVsbCkge1xuICAgICAgICAgICAgcmV0dXJuIDA7XG4gICAgICAgIH1cblxuICAgICAgICBsZXQgaW5kZXggPSAwO1xuICAgICAgICBsZXQgcGFuZWxDb3VudCA9IDA7XG4gICAgICAgIFJlYWN0LkNoaWxkcmVuLmZvckVhY2godGhpcy5wcm9wcy5jaGlsZHJlbiwgKGNoaWxkOiBSZWFjdC5SZWFjdEVsZW1lbnQ8YW55PikgPT4ge1xuICAgICAgICAgICAgaWYgKGNoaWxkLnR5cGUgPT09IFRhYlBhbmVsKSB7XG4gICAgICAgICAgICAgICAgcGFuZWxDb3VudCsrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaW5kZXgrKztcbiAgICAgICAgfSk7XG5cbiAgICAgICAgcmV0dXJuIHBhbmVsQ291bnQ7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBnZXRTdGF0ZUZyb21Qcm9wcyhwcm9wczogSVRhYnNQcm9wcyk6IElUYWJzU3RhdGUge1xuICAgICAgICBjb25zdCB7IHNlbGVjdGVkVGFiSW5kZXgsIGluaXRpYWxTZWxlY3RlZFRhYkluZGV4IH0gPSBwcm9wcztcblxuICAgICAgICBpZiAodGhpcy5pc1ZhbGlkVGFiSW5kZXgoc2VsZWN0ZWRUYWJJbmRleCkpIHtcbiAgICAgICAgICAgIHJldHVybiB7IHNlbGVjdGVkVGFiSW5kZXggfTtcbiAgICAgICAgfSBlbHNlIGlmICh0aGlzLmlzVmFsaWRUYWJJbmRleChpbml0aWFsU2VsZWN0ZWRUYWJJbmRleCkgJiYgdGhpcy5zdGF0ZS5zZWxlY3RlZFRhYkluZGV4ID09IG51bGwpIHtcbiAgICAgICAgICAgIHJldHVybiB7IHNlbGVjdGVkVGFiSW5kZXg6IGluaXRpYWxTZWxlY3RlZFRhYkluZGV4IH07XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5zdGF0ZTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgaXNUYWJEaXNhYmxlZChpbmRleDogbnVtYmVyKSB7XG4gICAgICAgIGNvbnN0IHRhYiA9IHRoaXMuZ2V0VGFicygpW2luZGV4XTtcbiAgICAgICAgcmV0dXJuIHRhYiAhPSBudWxsICYmIHRhYi5wcm9wcy5pc0Rpc2FibGVkO1xuICAgIH1cblxuICAgIHByaXZhdGUgaXNWYWxpZFRhYkluZGV4KGluZGV4OiBudW1iZXIpIHtcbiAgICAgICAgcmV0dXJuIGluZGV4ICE9IG51bGwgJiYgaW5kZXggPj0gMCAmJiBpbmRleCA8IHRoaXMuZ2V0VGFic0NvdW50KCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVXBkYXRlcyB0aGUgY29tcG9uZW50J3Mgc3RhdGUgaWYgdW5jb250cm9sbGVkIGFuZCBjYWxscyBvbkNoYW5nZS5cbiAgICAgKi9cbiAgICBwcml2YXRlIHNldFNlbGVjdGVkVGFiSW5kZXgoaW5kZXg6IG51bWJlcikge1xuICAgICAgICBpZiAoaW5kZXggPT09IHRoaXMuc3RhdGUuc2VsZWN0ZWRUYWJJbmRleCB8fCAhdGhpcy5pc1ZhbGlkVGFiSW5kZXgoaW5kZXgpKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBwcmV2U2VsZWN0ZWRJbmRleCA9IHRoaXMuc3RhdGUuc2VsZWN0ZWRUYWJJbmRleDtcblxuICAgICAgICBpZiAodGhpcy5wcm9wcy5zZWxlY3RlZFRhYkluZGV4ID09IG51bGwpIHtcbiAgICAgICAgICAgIHRoaXMuc2V0U3RhdGUoe1xuICAgICAgICAgICAgICAgIHNlbGVjdGVkVGFiSW5kZXg6IGluZGV4LFxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoVXRpbHMuaXNGdW5jdGlvbih0aGlzLnByb3BzLm9uQ2hhbmdlKSkge1xuICAgICAgICAgICAgdGhpcy5wcm9wcy5vbkNoYW5nZShpbmRleCwgcHJldlNlbGVjdGVkSW5kZXgpO1xuICAgICAgICB9XG4gICAgfVxufVxuXG5sZXQgdGFiQ291bnQgPSAwO1xuZnVuY3Rpb24gZ2VuZXJhdGVUYWJJZCgpIHtcbiAgICByZXR1cm4gYHB0LXRhYi0ke3RhYkNvdW50Kyt9YDtcbn1cblxubGV0IHBhbmVsQ291bnQgPSAwO1xuZnVuY3Rpb24gZ2VuZXJhdGVQYW5lbElkKCkge1xuICAgIHJldHVybiBgcHQtdGFiLXBhbmVsLSR7cGFuZWxDb3VudCsrfWA7XG59XG5cbmV4cG9ydCB2YXIgVGFic0ZhY3RvcnkgPSBSZWFjdC5jcmVhdGVGYWN0b3J5KFRhYnMpO1xuIl0sInNvdXJjZVJvb3QiOiIvc291cmNlLyJ9
{
"name": "@blueprintjs/core",
"version": "0.1.0",
"version": "1.0.0",
"main": "dist/index.js",

@@ -5,0 +5,0 @@ "typings": "dist/index.d.ts",

@@ -1,10 +0,15 @@

Blueprint v2
------------
<img height="204" src="https://cloud.githubusercontent.com/assets/464822/20228152/d3f36dc2-a804-11e6-80ff-51ada2d13ea7.png">
> Palantir's CSS framework & UI library for web applications.
# [Blueprint](http://blueprintjs.com/) Core Components
## Usage
Blueprint is a React UI toolkit for the Web.
This package contains the core set of UI components as CSS and React code.
## Installation
```
npm install --save @blueprintjs/core
```
### [Full Documentation](http://blueprintjs.com/docs) | [Source Code](https://github.com/palantir/blueprint)

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

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

Packages

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc