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

@glimmer/vm

Package Overview
Dependencies
Maintainers
11
Versions
255
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

@glimmer/vm - npm Package Compare versions

Comparing version 0.34.8 to 0.35.0

2

dist/commonjs/es2017/lib/opcodes.js
"use strict";
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3Bjb2Rlcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3BhY2thZ2VzL0BnbGltbWVyL3ZtL2xpYi9vcGNvZGVzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgY29uc3QgZW51bSBPcCB7XG4gIC8qXG4gICAgRG9jdW1lbnRhdGlvbiBUT0RPOlxuXG4gICAgRG9jdW1lbnQgdGhlIGxvY2FsIHZhcmlhYmxlIGxheW91dCBpbiB0aGUgc3RhY2tcbiAgICBkaWFncmFtIGJlZm9yZS1hbmQtYWZ0ZXIuXG5cbiAgICBEb2N1bWVudCB1cGRhdGluZyBvcGNvZGVzIGVtaXR0aW5nIGZyb20gdW5yZWFjaGFibGVcbiAgICBhcHBlbmQgb3Bjb2RlLlxuXG4gICAgRG9jdW1lbnQgdGhlIGVsZW1lbnQgc3RhY2ssIGJsb2NrIHN0YWNrIGFuZCBMaXN0XG4gICAgYmxvY2sgc3RhY2suXG4gICAqL1xuXG4gIC8qKlxuICAgKiBUaGlzIG9wY29kZSBzaG91bGQgbmV2ZXIgYmUgcmVhY2hlZC5cbiAgICovXG4gIEJ1ZyxcblxuICAvLy8gRVhQUkVTU0lPTlNcblxuICAvKipcbiAgICogT3BlcmF0aW9uOiBFdmFsdWF0ZSBhIEhlbHBlci5cbiAgICogRm9ybWF0OlxuICAgKiAgIChIZWxwZXIgaGVscGVyOiNGdW5jdGlvbilcbiAgICogT3BlcmFuZCBTdGFjazpcbiAgICogICAuLi4sIFtWZXJzaW9uZWRQYXRoUmVmZXJlbmNlIC4uLl0sIEFyZ3VtZW50cyDihpJcbiAgICogICAuLi4sIFZlcnNpb25lZFBhdGhSZWZlcmVuY2VcbiAgICovXG4gIEhlbHBlcixcblxuICAvKipcbiAgICogT3BlcmF0aW9uOlxuICAgKiAgIEJpbmQgdGhlIG5hbWVkIGFyZ3VtZW50cyBpbiB0aGUgQXJndW1lbnRzIHRvIHRoZSBzeW1ib2xzXG4gICAqICAgc3BlY2lmaWVkIGJ5IHRoZSBzeW1ib2wgdGFibGUgaW4gdGhlIGNvbXBvbmVudCBzdGF0ZSBhdCByZWdpc3Rlci5cbiAgICogRm9ybWF0OlxuICAgKiAgIChTZXROYW1lZFZhcmlhYmxlcyByZWdpc3Rlcjp1MzIpXG4gICAqIE9wZXJhbmQgU3RhY2s6XG4gICAqICAgLi4uLCBBcmd1bWVudHMg4oaSXG4gICAqICAgLi4uXG4gICAqL1xuICBTZXROYW1lZFZhcmlhYmxlcyxcblxuICAvKipcbiAgICogT3BlcmF0aW9uOlxuICAgKiAgIEJpbmQgdGhlIGJsb2NrcyBpbiB0aGUgQXJndW1lbnRzIHRvIHRoZSBzeW1ib2xzIHNwZWNpZmllZCBieSB0aGVcbiAgICogICBzeW1ib2wgdGFibGUgaW4gdGhlIGNvbXBvbmVudCBzdGF0ZSBhdCByZWdpc3Rlci5cbiAgICogRm9ybWF0OlxuICAgKiAgIChTZXRCbG9ja3MgcmVnaXN0ZXI6dTMyKVxuICAgKiBPcGVyYW5kIFN0YWNrOlxuICAgKiAgIC4uLiwgQXJndW1lbnRzIOKGklxuICAgKiAgIC4uLlxuICAgKi9cbiAgU2V0QmxvY2tzLFxuXG4gIC8qKlxuICAgKiBPcGVyYXRpb246XG4gICAqICAgQmluZCB0aGUgdmFyaWFibGUgcmVwcmVzZW50ZWQgYnkgYSBzeW1ib2wgZnJvbVxuICAgKiAgIHRoZSB2YWx1ZSBhdCB0aGUgdG9wIG9mIHRoZSBzdGFjay5cbiAgICogRm9ybWF0OlxuICAgKiAgIChTZXRWYXJpYWJsZSBzeW1ib2w6dTMyKVxuICAgKiBPcGVyYW5kIFN0YWNrOlxuICAgKiAgIC4uLiwgVmVyc2lvbmVkUGF0aFJlZmVyZW5jZSDihpJcbiAgICogICAuLi5cbiAgICovXG4gIFNldFZhcmlhYmxlLFxuXG4gIC8qKlxuICAgKiBPcGVyYXRpb246XG4gICAqICAgQmluZCB0aGUgYmxvY2sgYXQgdGhlIHRvcCBvZiB0aGUgc3RhY2suXG4gICAqIEZvcm1hdDpcbiAgICogICAoU2V0QmxvY2sgc3ltYm9sOnUzMilcbiAgICogT3BlcmFuZCBTdGFjazpcbiAgICogICAuLi4sIFN5bWJvbFRhYmxlLCBIYW5kbGUg4oaSXG4gICAqICAgLi4uXG4gICAqL1xuICBTZXRCbG9jayxcblxuICAvKipcbiAgICogT3BlcmF0aW9uOlxuICAgKiAgIFB1c2ggdGhlIGNvbnRlbnRzIG9mIHRoZSB2YXJpYWJsZSByZXByZXNlbnRlZCBieVxuICAgKiAgIGEgc3ltYm9sIChhIHBvc2l0aW9uYWwgb3IgbmFtZWQgYXJndW1lbnQpIG9udG9cbiAgICogICB0aGUgc3RhY2suXG4gICAqIEZvcm1hdDpcbiAgICogICAoUHVzaFN5bWJvbCBzeW1ib2w6dTMyKVxuICAgKiBPcGVyYW5kIFN0YWNrOlxuICAgKiAgIC4uLiDihpJcbiAgICogICAuLi4sIFZlcnNpb25lZFBhdGhSZWZlcmVuY2VcbiAgICovXG4gIEdldFZhcmlhYmxlLFxuXG4gIC8qKlxuICAgKiBPcGVyYXRpb246XG4gICAqICAgUG9wIGEgVmVyc2lvbmVkUGF0aFJlZmVyZW5jZSBmcm9tIHRoZSB0b3Agb2YgdGhlXG4gICAqICAgc3RhY2ssIGFuZCBwdXNoIGEgVmVyc2lvbmVkUGF0aFJlZmVyZW5jZSBjb25zdHJ1Y3RlZFxuICAgKiAgIGJ5IGAuZ2V0KHByb3BlcnR5KWAuXG4gICAqIEZvcm1hdDpcbiAgICogICAoR2V0UHJvcGVydHkgcHJvcGVydHk6I3N0cmluZylcbiAgICogT3BlcmFuZCBTdGFjazpcbiAgICogICAuLi4sIFZlcnNpb25lZFBhdGhSZWZlcmVuY2Ug4oaSXG4gICAqICAgLi4uLCBWZXJzaW9uZWRQYXRoUmVmZXJlbmNlXG4gICAqL1xuICBHZXRQcm9wZXJ0eSxcblxuICAvKipcbiAgICogT3BlcmF0aW9uOiBQdXNoIHRoZSBzcGVjaWZpZWQgYm91bmQgYmxvY2sgb250byB0aGUgc3RhY2suXG4gICAqIEZvcm1hdDpcbiAgICogICAoR2V0QmxvY2sgYmxvY2s6dTMyKVxuICAgKiBPcGVyYW5kIFN0YWNrOlxuICAgKiAgIC4uLiDihpJcbiAgICogICAuLi4sIElubGluZUJsb2NrXG4gICAqL1xuICBHZXRCbG9jayxcblxuICAvKipcbiAgICogT3BlcmF0aW9uOlxuICAgKiAgIFB1c2ggVFJVRSBvbnRvIHRoZSBzdGFjayBpZiB0aGUgc3BlY2lmaWVkIGJsb2NrXG4gICAqICAgaXMgYm91bmQgYW5kIEZBTFNFIGlmIGl0IGlzIG5vdC5cbiAgICogRm9ybWF0OlxuICAgKiAgIChIYXNCbG9jayBibG9jazp1MzIpXG4gICAqIE9wZXJhbmQgU3RhY2s6XG4gICAqICAgLi4uIOKGklxuICAgKiAgIC4uLiwgYm9vbGVhblxuICAgKi9cbiAgSGFzQmxvY2ssXG5cbiAgLyoqXG4gICAqIE9wZXJhdGlvbjpcbiAgICogICBQdXNoIFRSVUUgb250byB0aGUgc3RhY2sgaWYgdGhlIHNwZWNpZmllZCBibG9ja1xuICAgKiAgIGlzIGJvdW5kICphbmQqIGhhcyBhdCBsZWFzdCBvbmUgc3BlY2lmaWVkIGZvcm1hbFxuICAgKiAgIHBhcmFtZXRlciwgYW5kIEZBTFNFIG90aGVyd2lzZS5cbiAgICogRm9ybWF0OlxuICAgKiAgIChIYXNCbG9ja1BhcmFtcyBibG9jazp1MzIpXG4gICAqIE9wZXJhbmQgU3RhY2s6XG4gICAqICAgLi4uIOKGklxuICAgKiAgIC4uLiwgVmVyc2lvbmVkUGF0aFJlZmVyZW5jZSAoYm9vbGVhbilcbiAgICovXG4gIEhhc0Jsb2NrUGFyYW1zLFxuXG4gIC8qKlxuICAgKiBPcGVyYXRpb246XG4gICAqICAgUG9wIGNvdW50IGBWZXJzaW9uZWRQYXRoUmVmZXJlbmNlYHMgb2ZmIHRoZSBzdGFjayBhbmRcbiAgICogICBjb25zdHJ1Y3QgYSBuZXcgQ29uY2F0UmVmZXJlbmNlIGZyb20gdGhlbSAoaW4gcmV2ZXJzZVxuICAgKiAgIG9yZGVyKS5cbiAgICogRm9ybWF0OlxuICAgKiAgIChDb25jYXQgY291bnQ6dTMyKVxuICAgKiBPcGVyYW5kIFN0YWNrOlxuICAgKiAgIC4uLiwgVmVyc2lvbmVkUGF0aFJlZmVyZW5jZSwgW1ZlcnNpb25lZFBhdGhSZWZlcmVuY2UgLi4uXSDihpJcbiAgICogICAuLi4sIENvbmNhdFJlZmVyZW5jZVxuICAgKi9cbiAgQ29uY2F0LFxuXG4gIC8qKlxuICAgKiBPcGVyYXRpb246XG4gICAqICAgUHVzaCBhbiBPYmplY3QgY29uc3RhbnQgb250byB0aGUgc3RhY2sgdGhhdCBpcyBub3RcbiAgICogICBhIEphdmFTY3JpcHQgcHJpbWl0aXZlLlxuICAgKiBGb3JtYXQ6XG4gICAqICAgKFB1c2hDb25zdGFudCBjb25zdGFudDojT2JqZWN0KVxuICAgKiBPcGVyYW5kIFN0YWNrOlxuICAgKiAgIC4uLiDihpJcbiAgICogICAuLi4sIE9wYXF1ZVxuICAgKi9cbiAgQ29uc3RhbnQsXG5cbiAgLyoqXG4gICAqIE9wZXJhdGlvbjpcbiAgICogICBXcmFwIGEgSmF2YVNjcmlwdCBwcmltaXRpdmUgaW4gYSByZWZlcmVuY2UgYW5kIHB1c2ggaXRcbiAgICogICBvbnRvIHRoZSBzdGFjay5cbiAgICogRm9ybWF0OlxuICAgKiAgIChQdXNoUHJpbWl0aXZlIGNvbnN0YW50OiNQcmltaXRpdmUpXG4gICAqIE9wZXJhbmQgU3RhY2s6XG4gICAqICAgLi4uIOKGklxuICAgKiAgIC4uLiwgUHJpbWl0aXZlXG4gICAqIERlc2NyaXB0aW9uOlxuICAgKiAgIFRoZSB0d28gaGlnaCBiaXRzIG9mIHRoZSBjb25zdGFudCByZWZlcmVuY2UgZGVzY3JpYmVcbiAgICogICB0aGUga2luZCBvZiBwcmltaXRpdmU6XG4gICAqXG4gICAqICAgMDA6IG51bWJlclxuICAgKiAgIDAxOiBzdHJpbmdcbiAgICogICAxMDogdHJ1ZSB8IGZhbHNlIHwgbnVsbCB8IHVuZGVmaW5lZFxuICAgKi9cbiAgUHJpbWl0aXZlLFxuXG4gIC8qKlxuICAgKiBPcGVyYXRpb246IENvbnZlcnQgdGhlIHRvcCBvZiB0aGUgc3RhY2sgaW50byBhIHByaW1pdGl2ZSByZWZlcmVuY2UuXG4gICAqXG4gICAqIEZvcm1hdDpcbiAgICogICAoUHJpbWl0aXZlUmVmZXJlbmNlKVxuICAgKiBPcGVyYW5kIFN0YWNrOlxuICAgKiAgIC4uLiwgUHJpbWl0aXZlIOKGklxuICAgKiAgIC4uLiwgVmVyc2lvbmVkUGF0aFJlZmVyZW5jZTxQcmltaXRpdmU+XG4gICAqL1xuICBQcmltaXRpdmVSZWZlcmVuY2UsXG5cbiAgLyoqXG4gICAqIE9wZXJhdGlvbjogQ29udmVydCB0aGUgdG9wIG9mIHRoZSBzdGFjayBpbnRvIGEgbnVtYmVyLlxuICAgKlxuICAgKiBGb3JtYXQ6XG4gICAqICAgKFJlaWZ5VTMyKVxuICAgKiBPcGVyYW5kIFN0YWNrOlxuICAgKiAgIC4uLiwgVmVyc2lvbmVkUGF0aFJlZmVyZW5jZTx1MzI+IOKGklxuICAgKiAgIC4uLiwgVmVyc2lvbmVkUGF0aFJlZmVyZW5jZTx1MzI+LCB1MzJcbiAgICovXG4gIFJlaWZ5VTMyLFxuXG4gIC8qKlxuICAgKiBPcGVyYXRpb246IER1cGxpY2F0ZSBhbmQgcHVzaCBpdGVtIGZyb20gYW4gb2Zmc2V0IGluIHRoZSBzdGFjay5cbiAgICogRm9ybWF0OlxuICAgKiAgIChEdXAgcmVnaXN0ZXI6dTMyLCBvZmZzZXQ6dTMyKVxuICAgKiBPcGVyYW5kIFN0YWNrOlxuICAgKiAgIC4uLiwgT3BhcXVlIOKGklxuICAgKiAgIC4uLiwgT3BhcXVlLCBPcGFxdWVcbiAgICovXG4gIER1cCxcblxuICAvKipcbiAgICogT3BlcmF0aW9uOiBQb3AgTiBpdGVtcyBvZmYgdGhlIHN0YWNrIGFuZCB0aHJvdyBhd2F5IHRoZSB2YWx1ZS5cbiAgICogRm9ybWF0OlxuICAgKiAgIChQb3ApXG4gICAqIE9wZXJhbmQgU3RhY2s6XG4gICAqICAgLi4uLCBPcGFxdWUsIC4uLiwgT3BhcXVlIOKGklxuICAgKiAgIC4uLlxuICAgKi9cbiAgUG9wLFxuXG4gIC8qKlxuICAgKiBPcGVyYXRpb246IExvYWQgYSB2YWx1ZSBpbnRvIGEgcmVnaXN0ZXJcbiAgICogRm9ybWF0OlxuICAgKiAgIChMb2FkIHJlZ2lzdGVyOnUzMilcbiAgICogT3BlcmFuZCBTdGFjazpcbiAgICogICAuLi4sIE9wYXF1ZSDihpJcbiAgICogICAuLi5cbiAgICovXG4gIExvYWQsXG5cbiAgLyoqXG4gICAqIE9wZXJhdGlvbjogRmV0Y2ggYSB2YWx1ZSBmcm9tIGEgcmVnaXN0ZXJcbiAgICogRm9ybWF0OlxuICAgKiAgIChGZXRjaCByZWdpc3Rlcjp1MzIpXG4gICAqIE9wZXJhbmQgU3RhY2s6XG4gICAqICAgLi4uIOKGklxuICAgKiAgIC4uLiwgT3BhcXVlXG4gICAqL1xuICBGZXRjaCxcblxuICAvLy8gUFJFTFVERSAmIEVYSVRcblxuICAvKipcbiAgICogT3BlcmF0aW9uOiBQdXNoIGEgbmV3IHJvb3Qgc2NvcGUgb250byB0aGUgc2NvcGUgc3RhY2suXG4gICAqXG4gICAqIEZvcm1hdDpcbiAgICogICAoUm9vdFNjb3BlIHN5bWJvbHM6dTMyIGJpbmRDYWxsZXJTY29wZTpib29sKVxuICAgKiBPcGVyYW5kIFN0YWNrOlxuICAgKiAgIC4uLiDihpJcbiAgICogICAuLi5cbiAgICogRGVzY3JpcHRpb246XG4gICAqICAgQSByb290IHNjb3BlIGhhcyBubyBwYXJlbnQgc2NvcGUsIGFuZCB0aGVyZWZvcmUgaW5oZXJpdHMgbm8gbGV4aWNhbFxuICAgKiAgIHZhcmlhYmxlcy4gSWYgYGJpbmRDYWxsZXJTY29wZWAgaXMgYHRydWVgLCB0aGUgY3VycmVudCBzY29wZSByZW1lbWJlcnNcbiAgICogICB0aGUgY2FsbGVyIHNjb3BlIChmb3IgeWllbGRpbmcgYmxvY2tzKS5cbiAgICovXG4gIFJvb3RTY29wZSxcblxuICAvKipcbiAgICogT3BlcmF0aW9uOiBQdXNoIGEgbmV3IHJvb3Qgc2NvcGUgb250byB0aGUgc2NvcGUgc3RhY2suXG4gICAqXG4gICAqIEZvcm1hdDpcbiAgICogICAoVmlydHVhbFJvb3RTY29wZSByZWdpc3Rlcjp1MzIpXG4gICAqIE9wZXJhbmQgU3RhY2s6XG4gICAqICAgLi4uIOKGklxuICAgKiAgIC4uLlxuICAgKiBEZXNjcmlwdGlvbjpcbiAgICogICBUaGUgc3ltYm9sIGNvdW50IGlzIGRldGVybWluZWQgYnkgdGhlIGNvbXBvbmVudCBzdGF0ZSBpblxuICAgKiAgIHRoZSBzcGVjaWZpZWQgcmVnaXN0ZXIuXG4gICAqL1xuICBWaXJ0dWFsUm9vdFNjb3BlLFxuXG4gIC8qKlxuICAgKiBPcGVyYXRpb246IFB1c2ggYSBuZXcgY2hpbGQgc2NvcGUgb250byB0aGUgc2NvcGUgc3RhY2suXG4gICAqXG4gICAqIEZvcm1hdDpcbiAgICogICAoQ2hpbGRTY29wZSlcbiAgICogT3BlcmFuZCBTdGFjazpcbiAgICogICAuLi4g4oaSXG4gICAqICAgLi4uXG4gICAqIERlc2NyaXB0aW9uOlxuICAgKiAgIEEgY2hpbGQgc2NvcGUgaW5oZXJpdHMgZnJvbSB0aGUgY3VycmVudCBwYXJlbnQgc2NvcGUsIGFuZCB0aGVyZWZvcmVcbiAgICogICBzaGFyZXMgaXRzIGxleGljYWwgdmFyaWFibGVzLlxuICAgKi9cbiAgQ2hpbGRTY29wZSxcblxuICAvKipcbiAgICogT3BlcmF0aW9uOiBQb3AgdGhlIGN1cnJlbnQgc2NvcGUgZnJvbSB0aGUgc2NvcGUgc3RhY2suXG4gICAqIEZvcm1hdDpcbiAgICogICAoUG9wU2NvcGUpXG4gICAqIE9wZXJhbmQgU3RhY2s6XG4gICAqICAgLi4uIOKGklxuICAgKiAgIC4uLlxuICAgKi9cbiAgUG9wU2NvcGUsXG5cbiAgLyoqXG4gICAqIE9wZXJhdGlvbjogUmV0dXJuIHRvIHRoZSBwcmV2aW91cyBmcmFtZS5cbiAgICogRm9ybWF0OlxuICAgKiAgIChSZXR1cm4pXG4gICAqIE9wZXJhbmQgU3RhY2s6XG4gICAqICAgLi4uLCBhZGRyZXNzOm51bWJlciDihpJcbiAgICogICAuLi5cbiAgICovXG4gIFJldHVybixcblxuICAvKipcbiAgICogT3BlcmF0aW9uOiBSZXR1cm4gdG8gYSBwbGFjZSBpbiB0aGUgcHJvZ3JhbSBnaXZlbiBhbiBvZmZzZXRcbiAgICogRm9ybWF0OlxuICAgKiAgKFJldHVyblRvIG9mZnNldDppMzIpXG4gICAqIE9wZXJhbmQgU3RhY2s6XG4gICAqICAgIC4uLiDihpJcbiAgICovXG4gIFJldHVyblRvLFxuXG4gIC8vLyBIVE1MXG5cbiAgLyoqXG4gICAqIE9wZXJhdGlvbjogQXBwZW5kIGEgVGV4dCBub2RlIHdpdGggdmFsdWUgYGNvbnRlbnRzYFxuICAgKiBGb3JtYXQ6XG4gICAqICAgKFRleHQgY29udGVudHM6I3N0cmluZylcbiAgICogT3BlcmFuZCBTdGFjazpcbiAgICogICAuLi4g4oaSXG4gICAqICAgLi4uXG4gICAqL1xuICBUZXh0LFxuXG4gIC8qKlxuICAgKiBPcGVyYXRpb246IEFwcGVuZCBhIENvbW1lbnQgbm9kZSB3aXRoIHZhbHVlIGBjb250ZW50c2BcbiAgICogRm9ybWF0OlxuICAgKiAgIChDb21tZW50IGNvbnRlbnRzOiNzdHJpbmcpXG4gICAqIE9wZXJhbmQgU3RhY2s6XG4gICAqICAgLi4uIOKGklxuICAgKiAgIC4uLlxuICAgKi9cbiAgQ29tbWVudCxcblxuICAvKipcbiAgICogT3BlcmF0aW9uOiBBcHBlbmQgY29udGVudCBhcyBIVE1MLlxuICAgKiBGb3JtYXQ6XG4gICAqICAgKEFwcGVuZEhUTUwpXG4gICAqIE9wZXJhbmQgU3RhY2s6XG4gICAqICAgLi4uLCBWZXJzaW9uZWRQYXRoUmVmZXJlbmNlPHN0cmluZz4g4oaSXG4gICAqICAgLi4uXG4gICAqL1xuICBBcHBlbmRIVE1MLFxuXG4gIC8qKlxuICAgKiBPcGVyYXRpb246IEFwcGVuZCBTYWZlSFRNTCBhcyBIVE1MLlxuICAgKiBGb3JtYXQ6XG4gICAqICAgKEFwcGVuZFNhZmVIVE1MKVxuICAgKiBPcGVyYW5kIFN0YWNrOlxuICAgKiAgIC4uLiwgVmVyc2lvbmVkUGF0aFJlZmVyZW5jZTxTYWZlSFRNTD4g4oaSXG4gICAqICAgLi4uXG4gICAqL1xuICBBcHBlbmRTYWZlSFRNTCxcblxuICAvKipcbiAgICogT3BlcmF0aW9uOiBBcHBlbmQgRG9jdW1lbnRGcmFnbWVudC5cbiAgICogRm9ybWF0OlxuICAgKiAgIChBcHBlbmRGcmFnbWVudClcbiAgICogT3BlcmFuZCBTdGFjazpcbiAgICogICAuLi4sIFZlcnNpb25lZFBhdGhSZWZlcmVuY2U8RG9jdW1lbnRGcmFnbWVudD4g4oaSXG4gICAqICAgLi4uXG4gICAqL1xuICBBcHBlbmREb2N1bWVudEZyYWdtZW50LFxuXG4gIC8qKlxuICAgKiBPcGVyYXRpb246IEFwcGVuZCBOb2RlLlxuICAgKiBGb3JtYXQ6XG4gICAqICAgKEFwcGVuZEZyYWdtZW50KVxuICAgKiBPcGVyYW5kIFN0YWNrOlxuICAgKiAgIC4uLiwgVmVyc2lvbmVkUGF0aFJlZmVyZW5jZTxOb2RlPiDihpJcbiAgICogICAuLi5cbiAgICovXG4gIEFwcGVuZE5vZGUsXG5cbiAgLyoqXG4gICAqIE9wZXJhdGlvbjogQXBwZW5kIGNvbnRlbnQgYXMgdGV4dC5cbiAgICogRm9ybWF0OlxuICAgKiAgIChBcHBlbmRUZXh0KVxuICAgKiBPcGVyYW5kIFN0YWNrOlxuICAgKiAgIC4uLiwgVmVyc2lvbmVkUGF0aFJlZmVyZW5jZTxzdHJpbmc+IOKGklxuICAgKiAgIC4uLlxuICAgKi9cbiAgQXBwZW5kVGV4dCxcblxuICAvKipcbiAgICogT3BlcmF0aW9uOiBPcGVuIGEgbmV3IEVsZW1lbnQgbmFtZWQgYHRhZ2AuXG4gICAqIEZvcm1hdDpcbiAgICogICAoT3BlbkVsZW1lbnQgdGFnOiNzdHJpbmcpXG4gICAqIE9wZXJhbmQgU3RhY2s6XG4gICAqICAgLi4uIOKGklxuICAgKiAgIC4uLlxuICAgKi9cbiAgT3BlbkVsZW1lbnQsXG5cbiAgLyoqXG4gICAqIE9wZXJhdGlvbjpcbiAgICogICBPcGVuIGEgbmV3IEVsZW1lbnQgd2l0aCBhIG5hbWUgb24gdGhlIHN0YWNrIGFuZCB3aXRoIHNwZWNpYWxcbiAgICogICBvcGVyYXRpb25zIHByb3ZpZGVkIG9uIHRoZSBzdGFjay5cbiAgICogRm9ybWF0OlxuICAgKiAgIChPcGVuRHluYW1pY0VsZW1lbnQpXG4gICAqIE9wZXJhbmQgU3RhY2s6XG4gICAqICAgLi4uLCBzdHJpbmcsIEVsZW1lbnRPcGVyYXRpb25zIOKGklxuICAgKiAgIC4uLlxuICAgKi9cbiAgT3BlbkR5bmFtaWNFbGVtZW50LFxuXG4gIC8qKlxuICAgKiBPcGVyYXRpb246IEFkZCBhbiBhdHRyaWJ1dGUgdG8gdGhlIGN1cnJlbnQgRWxlbWVudC5cbiAgICogRm9ybWF0OlxuICAgKiAgIChTdGF0aWNBdHRyIG5hbWU6I3N0cmluZyB2YWx1ZTojc3RyaW5nIG5hbWVzcGFjZTpPcHRpb248I3N0cmluZz4pXG4gICAqIE9wZXJhbmQgU3RhY2s6XG4gICAqICAgLi4uIOKGklxuICAgKiAgIC4uLlxuICAgKi9cbiAgU3RhdGljQXR0cixcblxuICAvKipcbiAgICogT3BlcmF0aW9uOlxuICAgKiAgIEFkZCBhbiBhdHRyaWJ1dGUgdG8gdGhlIGN1cnJlbnQgZWxlbWVudCB1c2luZyB0aGUgdmFsdWVcbiAgICogICBhdCB0aGUgdG9wIG9mIHRoZSBzdGFjay5cbiAgICpcbiAgICogRm9ybWF0OlxuICAgKiAgIChEeW5hbWljQXR0ciBuYW1lOiNzdHJpbmcgdHJ1c3Rpbmc6Ym9vbGVhbiBuYW1lc3BhY2U6T3B0aW9uPCNzdHJpbmc+KVxuICAgKiBPcGVyYW5kIFN0YWNrOlxuICAgKiAgIC4uLiwgVmVyc2lvbmVkUGF0aFJlZmVyZW5jZSDihpJcbiAgICogICAuLi5cbiAgICogRGVzY3JpcHRpb246XG4gICAqICAgSWYgYHRydXN0aW5nYCBpcyBmYWxzZSwgdGhlIGhvc3QgbWF5IHNhbml0aXplIHRoZSBhdHRyaWJ1dGVcbiAgICogICBiYXNlZCB1cG9uIGtub3duIHJpc2tzLlxuICAgKi9cbiAgRHluYW1pY0F0dHIsXG5cbiAgLyoqXG4gICAqIE9wZXJhdGlvbjpcbiAgICogICBBZGQgYW4gYXR0cmlidXRlIHRvIHRoZSBjdXJyZW50IGVsZW1lbnQgdXNpbmcgdGhlIHZhbHVlXG4gICAqICAgYXQgdGhlIHRvcCBvZiB0aGUgc3RhY2suXG4gICAqXG4gICAqIEZvcm1hdDpcbiAgICogICAoQ29tcG9uZW50QXRyIG5hbWU6I3N0cmluZyB0cnVzdGluZzpib29sZWFuIG5hbWVzcGFjZTpPcHRpb248I3N0cmluZz4pXG4gICAqIE9wZXJhbmQgU3RhY2s6XG4gICAqICAgLi4uLCBWZXJzaW9uZWRQYXRoUmVmZXJlbmNlIOKGklxuICAgKiAgIC4uLlxuICAgKi9cbiAgQ29tcG9uZW50QXR0cixcblxuICAvKipcbiAgICogT3BlcmF0aW9uOiBGaW5pc2ggc2V0dGluZyBhdHRyaWJ1dGVzIG9uIHRoZSBjdXJyZW50IGVsZW1lbnQuXG4gICAqXG4gICAqIEZvcm1hdDpcbiAgICogICAoRmx1c2hFbGVtZW50KVxuICAgKiBPcGVyYW5kIFN0YWNrOlxuICAgKiAgIC4uLiDihpJcbiAgICogICAuLi5cbiAgICovXG4gIEZsdXNoRWxlbWVudCxcblxuICAvKipcbiAgICogT3BlcmF0aW9uOiBDbG9zZSB0aGUgY3VycmVudCBlbGVtZW50LlxuICAgKlxuICAgKiBGb3JtYXQ6XG4gICAqICAgKENsb3NlRWxlbWVudClcbiAgICogT3BlcmFuZCBTdGFjazpcbiAgICogICAuLi4g4oaSXG4gICAqICAgLi4uXG4gICAqL1xuICBDbG9zZUVsZW1lbnQsXG5cbiAgLy8vIE1PRElGSUVSXG4gIE1vZGlmaWVyLCAvLyAoQ29uc3RhbnRTdHJpbmcsIENvbnN0YW50T3RoZXI8TW9kaWZpZXJNYW5hZ2VyPiwgQ29uc3RhbnRFeHByZXNzaW9uKVxuXG4gIC8vLyBXT1JNSE9MRVxuICBQdXNoUmVtb3RlRWxlbWVudCwgLy8gKClcbiAgUG9wUmVtb3RlRWxlbWVudCwgLy8gKClcblxuICAvLy8gRFlOQU1JQyBTQ09QRVxuXG4gIC8qKlxuICAgKiBPcGVyYXRpb246IEJpbmQgc3RhY2sgdmFsdWVzIGFzIGR5bmFtaWMgdmFyaWFibGVzLlxuICAgKiBGb3JtYXQ6XG4gICAqICAgKEJpbmREeW5hbWljU2NvcGUgbmFtZXM6I0FycmF5PCNzdHJpbmc+KVxuICAgKiBPcGVyYW5kIFN0YWNrOlxuICAgKiAgIC4uLiwgVmVyc2lvbmVkUGF0aFJlZmVyZW5jZSwgW1ZlcnNpb25lZFBhdGhSZWZlcmVuY2UgLi4uXSDihpJcbiAgICogICAuLi5cbiAgICogRGVzY3JpcHRpb246XG4gICAqICAgVGhpcyBpcyB1c2VkIHRvIGV4cG9zZSBgLXdpdGgtZHluYW1pYy12YXJzYCwgYW5kIGlzIGFcbiAgICogICBuaWNoZSBmZWF0dXJlLlxuICAgKi9cbiAgQmluZER5bmFtaWNTY29wZSxcblxuICBQdXNoRHluYW1pY1Njb3BlLCAvLyAoKVxuICBQb3BEeW5hbWljU2NvcGUsIC8vICgpXG5cbiAgLy8vIFZNXG5cbiAgLyoqXG4gICAqIE9wZXJhdGlvbjogQ29tcGlsZSB0aGUgSW5saW5lQmxvY2sgYXQgdGhlIHRvcCBvZiB0aGUgc3RhY2suXG4gICAqIEZvcm1hdDpcbiAgICogICAoQ29tcGlsZUJsb2NrKVxuICAgKiBPcGVyYW5kIFN0YWNrOlxuICAgKiAgIC4uLiwgQ29tcGlsYWJsZUJsb2NrIOKGklxuICAgKiAgIC4uLiwgSGFuZGxlXG4gICAqL1xuICBDb21waWxlQmxvY2ssXG5cbiAgLyoqXG4gICAqIE9wZXJhdGlvbjogUHVzaCBhIHNjb3BlIG9udG8gdGhlIHN0YWNrLlxuICAgKiBGb3JtYXQ6XG4gICAqICAgKFB1c2hCbG9ja1Njb3BlICNTY29wZSlcbiAgICogT3BlcmFuZCBTdGFjazpcbiAgICogICAuLi4sIOKGklxuICAgKiAgIC4uLiwgU2NvcGVcbiAgICovXG4gIFB1c2hCbG9ja1Njb3BlLFxuXG4gIC8qKlxuICAgKiBPcGVyYXRpb246IFB1c2ggYSBzeW1ib2wgdGFibGUgb250byB0aGUgc3RhY2suXG4gICAqIEZvcm1hdDpcbiAgICogICAoUHVzaFN5bWJvbFRhYmxlICNTeW1ib2xUYWJsZSlcbiAgICogT3BlcmFuZCBTdGFjazpcbiAgICogICAuLi4sIOKGklxuICAgKiAgIC4uLiwgU3ltYm9sVGFibGVcbiAgICovXG4gIFB1c2hTeW1ib2xUYWJsZSxcblxuICAvKipcbiAgICogT3BlcmF0aW9uOiBFdmFsdWF0ZSB0aGUgaGFuZGxlIGF0IHRoZSB0b3Agb2YgdGhlIHN0YWNrLlxuICAgKiBGb3JtYXQ6XG4gICAqICAgKEludm9rZVZpcnR1YWwpXG4gICAqIE9wZXJhbmQgU3RhY2s6XG4gICAqICAgLi4uLCBIYW5kbGUsIOKGklxuICAgKiAgIC4uLlxuICAgKi9cbiAgSW52b2tlVmlydHVhbCxcblxuICAvKipcbiAgICogT3BlcmF0aW9uOiBFdmFsdWF0ZSB0aGUgaGFuZGxlLlxuICAgKiBGb3JtYXQ6XG4gICAqICAgKEludm9rZVN0YXRpYyBoYW5kbGU6dTMyKVxuICAgKiBPcGVyYW5kIFN0YWNrOlxuICAgKiAgIC4uLiDihpJcbiAgICogICAuLi5cbiAgICovXG4gIEludm9rZVN0YXRpYyxcblxuICAvKipcbiAgICogT3BlcmF0aW9uOiBZaWVsZCB0byBhIGJsb2NrLlxuICAgKiBGb3JtYXQ6XG4gICAqICAgKEludm9rZVlpZWxkKVxuICAgKiBPcGVyYW5kIFN0YWNrOlxuICAgKiAgIC4uLiwgW1ZlcnNpb25lZFBhdGhSZWZlcmVuY2UgLi4uXSwgQXJndW1lbnRzLCBTeW1ib2xUYWJsZSwgSGFuZGxlIOKGklxuICAgKiAgIC4uLlxuICAgKi9cbiAgSW52b2tlWWllbGQsXG5cbiAgLyoqXG4gICAqIE9wZXJhdGlvbjogSnVtcCB0byB0aGUgc3BlY2lmaWVkIG9mZnNldC5cbiAgICpcbiAgICogRm9ybWF0OlxuICAgKiAgIChKdW1wIHRvOnUzMilcbiAgICogT3BlcmFuZCBTdGFjazpcbiAgICogICAuLi4g4oaSXG4gICAqICAgLi4uXG4gICAqL1xuICBKdW1wLFxuXG4gIC8qKlxuICAgKiBPcGVyYXRpb246XG4gICAqICAgSnVtcCB0byB0aGUgc3BlY2lmaWVkIG9mZnNldCBpZiB0aGUgdmFsdWUgYXRcbiAgICogICB0aGUgdG9wIG9mIHRoZSBzdGFjayBpcyB0cnVlLlxuICAgKlxuICAgKiBGb3JtYXQ6XG4gICAqICAgKEp1bXBJZiB0bzp1MzIpXG4gICAqIE9wZXJhbmQgU3RhY2s6XG4gICAqICAgLi4uLCBWZXJzaW9uZWRQYXRoUmVmZXJlbmNlIOKGklxuICAgKiAgIC4uLlxuICAgKi9cbiAgSnVtcElmLFxuXG4gIC8qKlxuICAgKiBPcGVyYXRpb246XG4gICAqICAgSnVtcCB0byB0aGUgc3BlY2lmaWVkIG9mZnNldCBpZiB0aGUgdmFsdWUgYXRcbiAgICogICB0aGUgdG9wIG9mIHRoZSBzdGFjayBpcyBmYWxzZS5cbiAgICpcbiAgICogRm9ybWF0OlxuICAgKiAgIChKdW1wVW5sZXNzIHRvOnUzMilcbiAgICogT3BlcmFuZCBTdGFjazpcbiAgICogICAuLi4sIFZlcnNpb25lZFBhdGhSZWZlcmVuY2Ug4oaSXG4gICAqICAgLi4uXG4gICAqL1xuICBKdW1wVW5sZXNzLFxuXG4gIC8qKlxuICAgKiBPcGVyYXRpb246XG4gICAqICAgSnVtcCB0byB0aGUgc3BlY2lmaWVkIG9mZnNldCBpZiB0aGUgdmFsdWUgYXRcbiAgICogICB0aGUgdG9wIG9mIHRoZSBzdGFjayBpcyB0aGUgc2FtZSBhcyB0aGVcbiAgICogICBjb21wYXJpc29uLlxuICAgKlxuICAgKiBGb3JtYXQ6XG4gICAqICAgKEp1bXBFcSB0bzppMzIgY29tcGFyaXNvbjppMzIpXG4gICAqIE9wZXJhbmQgU3RhY2s6XG4gICAqICAgLi4uLCB1MzIg4oaSXG4gICAqICAgLi4uLCB1MzJcbiAgICovXG4gIEp1bXBFcSxcblxuICAvKipcbiAgICogT3BlcmF0aW9uOlxuICAgKiAgIFZhbGlkYXRlIHRoYXQgdGhlIHZhbHVlIGF0IHRoZSB0b3Agb2YgdGhlIHN0YWNrXG4gICAqICAgaGFzbid0IGNoYW5nZWQuXG4gICAqXG4gICAqIEZvcm1hdDpcbiAgICogICAoQXNzZXJ0U2FtZSlcbiAgICogT3BlcmFuZCBTdGFjazpcbiAgICogICAuLi4sIFZlcnNpb25lZFBhdGhSZWZlcmVuY2U8dTMyPiDihpJcbiAgICogICAuLi4sIFZlcnNpb25lZFBhdGhSZWZlcmVuY2U8dTMyPlxuICAgKi9cbiAgQXNzZXJ0U2FtZSxcblxuICAvKipcbiAgICogT3BlcmF0aW9uOiBQdXNoIGEgc3RhY2sgZnJhbWVcbiAgICpcbiAgICogRm9ybWF0OlxuICAgKiAgIChQdXNoRnJhbWUpXG4gICAqIE9wZXJhbmQgU3RhY2s6XG4gICAqICAgLi4uIOKGklxuICAgKiAgICRyYSwgJGZwXG4gICAqL1xuICBQdXNoRnJhbWUsXG5cbiAgLyoqXG4gICAqIE9wZXJhdGlvbjogUG9wIGEgc3RhY2sgZnJhbWVcbiAgICpcbiAgICogRm9ybWF0OlxuICAgKiAgIChQdXNoRnJhbWUpXG4gICAqIE9wZXJhbmQgU3RhY2s6XG4gICAqICAgJHJhLCAkZnAg4oaSXG4gICAqICAgLi4uXG4gICAqL1xuICBQb3BGcmFtZSxcblxuICAvKipcbiAgICogT3BlcmF0aW9uOiBQdXNoIGEgc21hbGwgc3RhY2sgZnJhbWVcbiAgICpcbiAgICogRm9ybWF0OlxuICAgKiAgIChQdXNoU21hbGxGcmFtZSlcbiAgICogT3BlcmFuZCBTdGFjazpcbiAgICogICAuLi4g4oaSXG4gICAqICAgJGZwXG4gICAqL1xuICBQdXNoU21hbGxGcmFtZSxcblxuICAvKipcbiAgICogT3BlcmF0aW9uOiBQb3AgYSBzdGFjayBmcmFtZVxuICAgKlxuICAgKiBGb3JtYXQ6XG4gICAqICAgKFBvcFNtYWxsRnJhbWUpXG4gICAqIE9wZXJhbmQgU3RhY2s6XG4gICAqICAgJGZwIOKGklxuICAgKiAgIC4uLlxuICAgKi9cbiAgUG9wU21hbGxGcmFtZSxcblxuICAvKipcbiAgICogT3BlcmF0aW9uOlxuICAgKiAgIFN0YXJ0IHRyYWNraW5nIGEgbmV3IG91dHB1dCBibG9jayB0aGF0IGNvdWxkIGNoYW5nZVxuICAgKiAgIGlmIG9uZSBvZiBpdHMgaW5wdXRzIGNoYW5nZXMuXG4gICAqXG4gICAqIEZvcm1hdDpcbiAgICogICAoRW50ZXIgYXJnczp1MzIpXG4gICAqIE9wZXJhbmQgU3RhY2s6XG4gICAqICAgLi4uIOKGklxuICAgKiAgIC4uLlxuICAgKiBEZXNjcmlwdGlvbjpcbiAgICogICBTb29uIGFmdGVyIHRoaXMgb3Bjb2RlLCBvbmUgb2YgSnVtcCwgSnVtcElmLFxuICAgKiAgIEp1bXBVbmxlc3MsIG9yIEp1bXBFcSB3aWxsIHByb2R1Y2UgYW4gdXBkYXRpbmdcbiAgICogICBhc3NlcnRpb24uIElmIHRoYXQgYXNzZXJ0aW9uIGZhaWxzLCB0aGUgYXBwZW5kaW5nXG4gICAqICAgVk0gd2lsbCBiZSByZS1lbnRlcmVkLCBhbmQgdGhlIGluc3RydWN0aW9ucyBmcm9tIGBmcm9tYFxuICAgKiAgIHRvIGB0b2Agd2lsbCBiZSBleGVjdXRlZC5cbiAgICpcbiAgICogICBUT0RPOiBTYXZlIGFuZCByZXN0b3JlLlxuICAgKi9cbiAgRW50ZXIsXG5cbiAgLyoqXG4gICAqIE9wZXJhdGlvbjpcbiAgICogICBGaW5pc2ggdHJhY2tpbmcgdGhlIGN1cnJlbnQgYmxvY2suXG4gICAqXG4gICAqIEZvcm1hdDpcbiAgICogICAoRXhpdClcbiAgICogT3BlcmFuZCBTdGFjazpcbiAgICogICAuLi4g4oaSXG4gICAqICAgLi4uXG4gICAqIERlc2NyaXB0aW9uOlxuICAgKiAgIFRoaXMgZmluYWxpemVzIHRoZSB2YWxpZGF0b3JzIHRoYXQgdGhlIHVwZGF0aW5nXG4gICAqICAgYmxvY2sgbXVzdCBjaGVjayB0byBkZXRlcm1pbmUgd2hldGhlciBpdCdzIHNhZmUgdG9cbiAgICogICBza2lwIHJ1bm5pbmcgdGhlIGNvbnRlbnRzLlxuICAgKi9cbiAgRXhpdCxcblxuICAvKipcbiAgICogT3BlcmF0aW9uOiBDb252ZXJ0IHRoZSB0b3Agb2YgdGhlIHN0YWNrIGludG8gYSBib29sZWFuIHJlZmVyZW5jZS5cbiAgICpcbiAgICogRm9ybWF0OlxuICAgKiAgIChUb0Jvb2xlYW4pXG4gICAqIE9wZXJhbmQgU3RhY2s6XG4gICAqICAgLi4uLCBWZXJzaW9uZWRQYXRoUmVmZXJlbmNlPE9wYXF1ZT4g4oaSXG4gICAqICAgLi4uLCBWZXJzaW9uZWRQYXRoUmVmZXJlbmNlPGJvb2w+XG4gICAqL1xuICBUb0Jvb2xlYW4sXG5cbiAgLy8vIExJU1RTXG5cbiAgLyoqXG4gICAqIE9wZXJhdGlvbjogRW50ZXIgYSBsaXN0LlxuICAgKlxuICAgKiBGb3JtYXQ6XG4gICAqICAgKEVudGVyTGlzdCBhZGRyZXNzOnUzMilcbiAgICogT3BlcmFuZCBTdGFjazpcbiAgICogICAuLi4sIEl0ZXJhdG9yIOKGklxuICAgKiAgIC4uLlxuICAgKi9cbiAgRW50ZXJMaXN0LFxuXG4gIC8qKlxuICAgKiBPcGVyYXRpb246IEV4aXQgdGhlIGN1cnJlbnQgbGlzdC5cbiAgICpcbiAgICogRm9ybWF0OlxuICAgKiAgIChFeGl0TGlzdClcbiAgICogT3BlcmFuZCBTdGFjazpcbiAgICogICAuLi4g4oaSXG4gICAqICAgLi4uXG4gICAqL1xuICBFeGl0TGlzdCxcblxuICAvKipcbiAgICogT3BlcmF0aW9uOlxuICAgKiAgIENvbnZlcnQgYW4gb3BlcmFuZCBhbmQga2V5IGludG8gYW4gaXRlcmF0b3IgYW5kXG4gICAqICAgcHJlc2VuY2UgcmVmZXJlbmNlLlxuICAgKlxuICAgKiBGb3JtYXQ6XG4gICAqICAgKFB1dEl0ZXJhdG9yKVxuICAgKiBPcGVyYW5kIFN0YWNrOlxuICAgKiAgIC4uLiwga2V5OnN0cmluZywgbGlzdDpWZXJzaW9uZWRQYXRoUmVmZXJlbmNlIOKGklxuICAgKiAgIC4uLiwgaXRlcmF0b3I6UmVmZXJlbmNlSXRlcmF0b3IsIHByZXNlbnQ6UHJlc2VuY2VSZWZlcmVuY2VcbiAgICovXG4gIFB1dEl0ZXJhdG9yLFxuXG4gIC8qKlxuICAgKiBPcGVyYXRpb246XG4gICAqICAgU2V0IHVwIHRoZSBzdGFjayBmb3IgaXRlcmF0aW5nIGZvciBhIGdpdmVuIGtleSxcbiAgICogICBvciBqdW1wIHRvIGBlbmRgIGlmIHRoZXJlIGlzIG5vdGhpbmcgbGVmdCB0b1xuICAgKiAgIGl0ZXJhdGUuXG4gICAqXG4gICAqIEZvcm1hdDpcbiAgICogICAoSXRlcmF0ZSBlbmQ6dTMyKVxuICAgKiBPcGVyYW5kIFN0YWNrOlxuICAgKiAgIEZvcm0gMTogKHNvbWV0aGluZyB0byBpdGVyYXRlKVxuICAgKiAgIC4uLiDihpJcbiAgICogICAuLi4sIFZlcnNpb25lZFBhdGhSZWZlcmVuY2UsIFZlcnNpb25lZFBhdGhSZWZlcmVuY2UsIHN0cmluZ1xuICAgKiAgIEZvcm0gMjogKG5vdGhpbmcgbGVmdCB0byBpdGVyYXRlKVxuICAgKiAgIC4uLiDihpJcbiAgICogICAuLi5cbiAgICogRGVzY3JpcHRpb246XG4gICAqICAgSW4gRm9ybSAxLCB0aGUgc3RhY2sgd2lsbCBoYXZlIChpbiByZXZlcnNlIG9yZGVyKTpcbiAgICpcbiAgICogICAtIHRoZSBrZXksIGFzIGEgc3RyaW5nXG4gICAqICAgLSB0aGUgY3VycmVudCBpdGVyYXRlZCB2YWx1ZVxuICAgKiAgIC0gdGhlIG1lbW9pemVkIGl0ZXJhdGVkIHZhbHVlXG4gICAqL1xuICBJdGVyYXRlLFxuXG4gIC8vLyBDT01QT05FTlRTXG5cbiAgLyoqXG4gICAqIE9wZXJhdGlvbjogVGVzdCB3aGV0aGVyIGEgcmVmZXJlbmNlIGNvbnRhaW5zIGEgY29tcG9uZW50IGRlZmluaXRpb24uXG4gICAqXG4gICAqIEZvcm1hdDpcbiAgICogICAoTWFpbiBzdGF0ZTpyZWdpc3RlcilcbiAgICogT3BlcmFuZCBTdGFjazpcbiAgICogICAuLi4sIEludm9jYXRpb24sIENvbXBvbmVudERlZmluaXRpb24g4oaSXG4gICAqICAgLi4uXG4gICAqL1xuICBNYWluLFxuXG4gIC8qKlxuICAgKiBPcGVyYXRpb246IFRlc3Qgd2hldGhlciBhIHJlZmVyZW5jZSBjb250YWlucyBhIGNvbXBvbmVudCBkZWZpbml0aW9uLlxuICAgKlxuICAgKiBGb3JtYXQ6XG4gICAqICAgKElzQ29tcG9uZW50KVxuICAgKiBPcGVyYW5kIFN0YWNrOlxuICAgKiAgIC4uLiwgVmVyc2lvbmVkUGF0aFJlZmVyZW5jZTxPcGFxdWU+IOKGklxuICAgKiAgIC4uLiwgVmVyc2lvbmVkUGF0aFJlZmVyZW5jZTxib29sZWFuPlxuICAgKi9cbiAgSXNDb21wb25lbnQsXG5cbiAgLyoqXG4gICAqIE9wZXJhdGlvbjogUHVzaCB0aGUgY29udGVudCB0eXBlIG9udG8gdGhlIHN0YWNrLlxuICAgKlxuICAgKiBGb3JtYXQ6XG4gICAqICAgKENvbnRlbnRUeXBlKVxuICAgKiBPcGVyYW5kIFN0YWNrOlxuICAgKiAgIC4uLiwgVmVyc2lvbmVkUGF0aFJlZmVyZW5jZTxPcGFxdWU+IOKGklxuICAgKiAgIC4uLiwgVmVyc2lvbmVkUGF0aFJlZmVyZW5jZTxPcGFxdWU+LCBWZXJzaW9uZWRQYXRoUmVmZXJlbmNlPENvbnRlbnRUeXBlPlxuICAgKi9cbiAgQ29udGVudFR5cGUsXG5cbiAgLyoqXG4gICAqIE9wZXJhdGlvbjogQ3VycnkgYSBjb21wb25lbnQgZGVmaW5pdGlvbiBmb3IgYSBsYXRlciBpbnZvY2F0aW9uLlxuICAgKlxuICAgKiBGb3JtYXQ6XG4gICAqICAgKEN1cnJ5Q29tcG9uZW50IHRlbXBsYXRlTWV0YTojTG9jYXRvcilcbiAgICogT3BlcmFuZCBTdGFjazpcbiAgICogICAuLi4sIFZlcnNpb25lZFBhdGhSZWZlcmVuY2UsIFtWZXJzaW9uZWRQYXRoUmVmZXJlbmNlIC4uLl0sIEFyZ3VtZW50cyDihpJcbiAgICogICAuLi4sIHsgVmVyc2lvbmVkUGF0aFJlZmVyZW5jZSwgTG9jYXRvciwgQ2FwdHVyZWRBcmd1bWVudHMgfVxuICAgKi9cbiAgQ3VycnlDb21wb25lbnQsXG5cbiAgLyoqXG4gICAqIE9wZXJhdGlvbjogUHVzaCBhbiBhcHByb3ByaWF0ZSBjb21wb25lbnQgbWFuYWdlciBvbnRvIHRoZSBzdGFjay5cbiAgICpcbiAgICogRm9ybWF0OlxuICAgKiAgIChQdXNoQ29tcG9uZW50TWFuYWdlciAjQ29tcG9uZW50U3BlYylcbiAgICogT3BlcmFuZCBTdGFjazpcbiAgICogICAuLi4g4oaSXG4gICAqICAgLi4uLCB7IENvbXBvbmVudERlZmluaXRpb24sIENvbXBvbmVudE1hbmFnZXIgfVxuICAgKi9cbiAgUHVzaENvbXBvbmVudERlZmluaXRpb24sXG5cbiAgLyoqXG4gICAqIE9wZXJhdGlvbjpcbiAgICogICBQdXNoZXMgdGhlIENvbXBvbmVudEluc3RhbmNlIG9udG8gdGhlIHN0YWNrIHRoYXQgaXNcbiAgICogICB1c2VkIGR1cmluZyB0aGUgaW52b2tlLlxuICAgKlxuICAgKiBGb3JtYXQ6XG4gICAqICAgKFB1c2hEeW5hbWljQ29tcG9uZW50SW5zdGFuY2UpXG4gICAqIE9wZXJhbmQgU3RhY2s6XG4gICAqICAgLi4uLCBDb21wb25lbnREZWZpbml0aW9uIOKGklxuICAgKiAgIC4uLiwgeyBDb21wb25lbnREZWZpbml0aW9uLCBtYW5hZ2VyOiBudWxsLCBsYXlvdXQ6IG51bGwsIHN0YXRlOiBudWxsLCBoYW5kbGU6IG51bGwsIHRhYmxlOiBudWxsIH1cbiAgICovXG5cbiAgUHVzaER5bmFtaWNDb21wb25lbnRJbnN0YW5jZSxcblxuICAvKipcbiAgICogT3BlcmF0aW9uOlxuICAgKiAgIFB1c2hlcyBhIGN1cnJpZWQgY29tcG9uZW50IGRlZmluaXRpb24gb24gdG8gdGhlIHN0YWNrXG4gICAqXG4gICAqIEZvcm1hdDpcbiAgICogICAoUHVzaEN1cnJpZWRDb21wb25lbnQpXG4gICAqIE9wZXJhbmQgU3RhY2s6XG4gICAqICAgLi4uLCBWZXJzaW9uZWRQYXRoUmVmZXJlbmNlPE9wYXF1ZT4g4oaSXG4gICAqICAgLi4uLCBDb21wb25lbnREZWZpbml0aW9uXG4gICAqL1xuICBQdXNoQ3VycmllZENvbXBvbmVudCxcblxuICAvKipcbiAgICogT3BlcmF0aW9uOlxuICAgKiAgIFB1c2ggYSByZXNvbHZlZCBjb21wb25lbnQgZGVmaW5pdGlvbiBvbnRvIHRoZSBzdGFja1xuICAgKlxuICAgKiBGb3JtYXQ6XG4gICAqICAgKFJlc29sdmVEeW5hbWljQ29tcG9uZW50IHRlbXBsYXRlTWV0YTojTG9jYXRvcilcbiAgICogT3BlcmFuZCBTdGFjazpcbiAgICogICAuLi4sIFZlcnNpb25lZFBhdGhSZWZlcmVuY2U8T3BhcXVlPiDihpJcbiAgICogICAuLi4sIENvbXBvbmVudERlZmluaXRpb25cbiAgICovXG4gIFJlc29sdmVEeW5hbWljQ29tcG9uZW50LFxuXG4gIC8qKlxuICAgKiBPcGVyYXRpb246IFB1c2ggYSB1c2VyIHJlcHJlc2VudGF0aW9uIG9mIGFyZ3Mgb250byB0aGUgc3RhY2suXG4gICAqXG4gICAqIEZvcm1hdDpcbiAgICogICAoUHVzaEFyZ3MgbmFtZXM6I0FycmF5PCNzdHJpbmc+IHBvc2l0aW9uYWxDb3VudDp1MzIgc3ludGhldGljOiNib29sZWFuKVxuICAgKlxuICAgKiBPcGVyYW5kIFN0YWNrOlxuICAgKiAgIC4uLiwgW1ZlcnNpb25lZFBhdGhSZWZlcmVuY2UgLi4uXSAg4oaSXG4gICAqICAgLi4uLCBbVmVyc2lvbmVkUGF0aFJlZmVyZW5jZSAuLi5dLCBBcmd1bWVudHNcbiAgICpcbiAgICogRGVzY3JpcHRpb246XG4gICAqICAgVGhpcyBhcmd1bWVudHMgb2JqZWN0IGlzIG9ubHkgbmVjZXNzYXJ5IHdoZW4gY2FsbGluZyBpbnRvXG4gICAqICAgdXNlci1zcGVjaWZpZWQgaG9va3MuIEl0IGlzIG1lYW50IHRvIGJlIGltcGxlbWVudGVkIGFzIGFcbiAgICogICB0cmFuc2llbnQgcHJveHkgdGhhdCByZWFkcyBpbnRvIHRoZSBzdGFjayBhcyBuZWVkZWQuXG4gICAqICAgSG9sZGluZyBvbnRvIHRoZSBBcmd1bWVudHMgYWZ0ZXIgdGhlIGNhbGwgaGFzIGNvbXBsZXRlZCBpc1xuICAgKiAgIGlsbGVnYWwuXG4gICAqL1xuICBQdXNoQXJncyxcblxuICAvKipcbiAgICogT3BlcmF0aW9uOiBQdXNoIGVtcHR5IGFyZ3Mgb250byB0aGUgc3RhY2tcbiAgICpcbiAgICogRm9ybWF0OlxuICAgKiAgIChFbXB0eUFyZ3MpXG4gICAqXG4gICAqIE9wZXJhbmRTdGFjazpcbiAgICogICAuLi4g4oaSXG4gICAqICAgLi4uLCBBcmd1bWVudHNcbiAgICovXG4gIFB1c2hFbXB0eUFyZ3MsXG5cbiAgLyoqXG4gICAqIE9wZXJhdGlvbjogUG9wcyBBcmd1bWVudHMgZnJvbSB0aGUgc3RhY2sgYW5kIGNsZWFycyB0aGUgbmV4dCBOIGFyZ3MuXG4gICAqXG4gICAqIEZvcm1hdDpcbiAgICogICAoUG9wQXJncylcbiAgICpcbiAgICogT3BlcmFuZCBTdGFjazpcbiAgICogICAuLi4sIFtWZXJzaW9uZWRQYXRoUmVmZXJlbmNlIC4uLl0sIEFyZ3VtZW50cyAg4oaSXG4gICAqICAgLi4uXG4gICAqXG4gICAqIERlc2NyaXB0aW9uOlxuICAgKiBUaGUgYXJndW1lbnRzIG9iamVjdCBjb250YWlucyB0aGUgaW5mb3JtYXRpb24gb2YgaG93IG1hbnkgdXNlclxuICAgKiBzdXBwbGllZCBhcmdzIHRoZSBjb21wb25lbnQgd2FzIGludm9rZWQgd2l0aC4gVG8gY2xlYXIgdGhlbSBmcm9tXG4gICAqIHRoZSBzdGFjayB3ZSBtdXN0IHBvcCBpdCBmcm9tIHRoZSBzdGFjayBhbmQgY2FsbCBgY2xlYXJgIG9uIGl0XG4gICAqIHRvIHJlbW92ZSB0aGUgYXJndW1lbnQgdmFsdWVzIGZyb20gdGhlIHN0YWNrLlxuICAgKi9cbiAgUG9wQXJncyxcblxuICAvKipcbiAgICogT3BlcmF0aW9uOiAuLi5cbiAgICogRm9ybWF0OlxuICAgKiAgIChQcmVwYXJlQXJncyBzdGF0ZTpyZWdpc3RlcilcbiAgICogT3BlcmFuZCBTdGFjazpcbiAgICogICAuLi4g4oaSXG4gICAqICAgLi4uXG4gICAqL1xuICBQcmVwYXJlQXJncyxcblxuICAvKipcbiAgICogT3BlcmF0aW9uOiBSZXBsYWNlcyBBcmd1bWVudHMgb24gdGhlIHN0YWNrIHdpdGggQ2FwdHVyZWRBcmd1bWVudHNcbiAgICogRm9ybWF0OlxuICAgKiAgIChDYXB0dXJlQXJncylcbiAgICpcbiAgICogT3BlcmFuZCBTdGFjazpcbiAgICogICAuLi4sIEFyZ3VtZW50cyAg4oaSXG4gICAqICAgLi4uLCBDYXB0dXJlZEFyZ3VtZW50c1xuICAgKlxuICAgKiBEZXNjcmlwdGlvbjpcbiAgICogVGhlIEFyZ3VtZW50cyBvYmplY3QgaXMgbXV0YXRlZCBpbiBwbGFjZSBiZWNhdXNlIGl0IGlzIHVzdWFsbHkgY29uc3VtZWQgaW1tZWRpYXRlbHlcbiAgICogYWZ0ZXIgYmVpbmcgcHVzaGVkIG9uIHRvIHRoZSBzdGFjay4gSW4gc29tZSBzaXR1YXRpb25zLCBzdWNoIGFzIHdpdGggY3VycmllZCBjb21wb25lbnRzLFxuICAgKiBpbmZvcm1hdGlvbiBhYm91dCBtb3JlIHRoYW4gb25lIEFyZ3VtZW50IG1heSBuZWVkIHRvIGV4aXN0IG9uIHRoZSBzdGFjayBhdCBvbmNlLiBJbiB0aG9zZVxuICAgKiBjYXNlcywgdGhlIENhcHR1cmVBcmdzIGluc3RydWN0aW9uIHBvcHMgYW4gQXJndW1lbnRzIG9iamVjdCBvZmYgdGhlIHN0YWNrIGFuZCByZXBsYWNlcyBpdFxuICAgKiB3aXRoIHRoZSBpbW11dGFibGUgQ2FwdHVyZWRBcmdzIHNuYXBzaG90LlxuICAgKi9cbiAgQ2FwdHVyZUFyZ3MsXG5cbiAgLyoqXG4gICAqIE9wZXJhdGlvbjogQ3JlYXRlIHRoZSBjb21wb25lbnQgYW5kIHB1c2ggaXQgb250byB0aGUgc3RhY2suXG4gICAqIEZvcm1hdDpcbiAgICogICAoQ3JlYXRlQ29tcG9uZW50IGZsYWdzOnUzMiBzdGF0ZTpyZWdpc3RlcilcbiAgICogICAuLi4g4oaSXG4gICAqICAgLi4uXG4gICAqIERlc2NyaXB0aW9uOlxuICAgKiBPcGVyYW5kIFN0YWNrOlxuICAgKiAgIEZsYWdzOlxuICAgKlxuICAgKiAgICogMGIwMDE6IEhhcyBhIGRlZmF1bHQgYmxvY2tcbiAgICogICAqIDBiMDEwOiBIYXMgYW4gaW52ZXJzZSBibG9ja1xuICAgKi9cbiAgQ3JlYXRlQ29tcG9uZW50LFxuXG4gIC8qKlxuICAgKiBPcGVyYXRpb246IFJlZ2lzdGVyIGEgZGVzdHJ1Y3RvciBmb3IgdGhlIGN1cnJlbnQgY29tcG9uZW50XG4gICAqXG4gICAqIEZvcm1hdDpcbiAgICogICAoUmVnaXN0ZXJDb21wb25lbnREZXN0cnVjdG9yIHN0YXRlOnJlZ2lzdGVyKVxuICAgKiBPcGVyYW5kIFN0YWNrOlxuICAgKiAgIC4uLiDihpJcbiAgICogICAuLi5cbiAgICovXG4gIFJlZ2lzdGVyQ29tcG9uZW50RGVzdHJ1Y3RvcixcblxuICAvKipcbiAgICogT3BlcmF0aW9uOiBQdXNoIGEgbmV3IEVsZW1lbnRPcGVyYXRpb25zIGZvciB0aGUgY3VycmVudCBjb21wb25lbnQuXG4gICAqXG4gICAqIEZvcm1hdDpcbiAgICogICAoUHV0Q29tcG9uZW50T3BlcmF0aW9ucylcbiAgICogT3BlcmFuZCBTdGFjazpcbiAgICogICAuLi4g4oaSXG4gICAqICAgLi4uXG4gICAqL1xuICBQdXRDb21wb25lbnRPcGVyYXRpb25zLFxuXG4gIC8qKlxuICAgKiBPcGVyYXRpb246IFB1c2ggdGhlIGNvbXBvbmVudCdzIGBzZWxmYCBvbnRvIHRoZSBzdGFjay5cbiAgICpcbiAgICogRm9ybWF0OlxuICAgKiAgIChHZXRDb21wb25lbnRTZWxmIHN0YXRlOnJlZ2lzdGVyKVxuICAgKiBPcGVyYW5kIFN0YWNrOlxuICAgKiAgIC4uLiDihpJcbiAgICogICAuLi4sIFZlcnNpb25lZFBhdGhSZWZlcmVuY2VcbiAgICovXG4gIEdldENvbXBvbmVudFNlbGYsXG5cbiAgLyoqXG4gICAqIE9wZXJhdGlvbjogUHVzaCB0aGUgY29tcG9uZW50J3MgYHNlbGZgIG9udG8gdGhlIHN0YWNrLlxuICAgKlxuICAgKiBGb3JtYXQ6XG4gICAqICAgKEdldENvbXBvbmVudFRhZ05hbWUgc3RhdGU6cmVnaXN0ZXIpXG4gICAqIE9wZXJhbmQgU3RhY2s6XG4gICAqICAgLi4uIOKGklxuICAgKiAgIC4uLiwgT3B0aW9uPHN0cmluZz5cbiAgICovXG4gIEdldENvbXBvbmVudFRhZ05hbWUsXG5cbiAgLyoqXG4gICAqIE9wZXJhdGlvbjogR2V0IHRoZSBjb21wb25lbnQgbGF5b3V0IGZyb20gdGhlIG1hbmFnZXIuXG4gICAqXG4gICAqIEZvcm1hdDpcbiAgICogICAoR2V0Q29tcG9uZW50TGF5b3V0IHN0YXRlOnJlZ2lzdGVyKVxuICAgKiBPcGVyYW5kIFN0YWNrOlxuICAgKiAgIC4uLiDihpJcbiAgICogICAuLi4sIFByb2dyYW1TeW1ib2xUYWJsZSwgSGFuZGxlXG4gICAqL1xuICBHZXRDb21wb25lbnRMYXlvdXQsXG5cbiAgLyoqXG4gICAqIE9wZXJhdGlvbjogUG9wdWxhdGUgdGhlIGV2YWwgbG9va3VwIGlmIG5lY2Vzc2FyeS5cbiAgICpcbiAgICogRm9ybWF0OlxuICAgKiAgIChTZXR1cEZvckV2YWwgc3RhdGU6cmVnaXN0ZXIpXG4gICAqIE9wZXJhbmQgU3RhY2s6XG4gICAqICAgLi4uIOKGklxuICAgKiAgIC4uLlxuICAgKi9cbiAgU2V0dXBGb3JFdmFsLFxuXG4gIC8qKlxuICAgKiBPcGVyYXRpb246IFBvcHVsYXRlIHRoZSBldmFsIGxvb2t1cCBpZiBuZWNlc3NhcnkuXG4gICAqXG4gICAqIEZvcm1hdDpcbiAgICogICAoU2V0dXBGb3JFdmFsIHN0YXRlOnJlZ2lzdGVyKVxuICAgKiBPcGVyYW5kIFN0YWNrOlxuICAgKiAgIC4uLiDihpJcbiAgICogICAuLi5cbiAgICovXG4gIEJpbmRFdmFsU2NvcGUsXG5cbiAgLyoqXG4gICAqIE9wZXJhdGlvbjpcbiAgICogICBQb3B1bGF0ZSB0aGUgc3RhdGUgcmVnaXN0ZXIgd2l0aCB0aGUgbGF5b3V0IGN1cnJlbnRseVxuICAgKiAgIG9uIHRoZSBzdGFjay5cbiAgICpcbiAgICogRm9ybWF0OlxuICAgKiAgIChQb3B1bGF0ZUxheW91dCBzdGF0ZTpyZWdpc3RlcilcbiAgICogT3BlcmFuZCBTdGFjazpcbiAgICogICAuLi4sIFByb2dyYW1TeW1ib2xUYWJsZSwgSGFuZGxlIOKGklxuICAgKiAgIC4uLlxuICAgKi9cbiAgUG9wdWxhdGVMYXlvdXQsXG5cbiAgLyoqXG4gICAqIE9wZXJhdGlvbjogSW52b2tlIHRoZSBsYXlvdXQgcmV0dXJuZWQgYnkgdGhlIG1hbmFnZXIuXG4gICAqXG4gICAqIEZvcm1hdDpcbiAgICogICAoSW52b2tlQ29tcG9uZW50TGF5b3V0IHN0YXRlOnJlZ2lzdGVyKVxuICAgKiBPcGVyYW5kIFN0YWNrOlxuICAgKiAgIC4uLiDihpJcbiAgICogICAuLi5cbiAgICovXG4gIEludm9rZUNvbXBvbmVudExheW91dCxcblxuICAvKipcbiAgICogT3BlcmF0aW9uOiBCZWdpbiBhIG5ldyBjYWNoZSBncm91cFxuICAgKlxuICAgKiBGb3JtYXQ6XG4gICAqICAgKEJlZ2luQ29tcG9uZW50VHJhbnNhY3Rpb24pXG4gICAqIE9wZXJhbmQgU3RhY2s6XG4gICAqICAgLi4uLCBDb21wb25lbnRNYW5hZ2VyPFQ+LCBUIOKGklxuICAgKiAgIC4uLiwgQ29tcG9uZW50TWFuYWdlcjxUPiwgVFxuICAgKi9cbiAgQmVnaW5Db21wb25lbnRUcmFuc2FjdGlvbixcblxuICAvKipcbiAgICogT3BlcmF0aW9uOiBDb21taXQgdGhlIGN1cnJlbnQgY2FjaGUgZ3JvdXBcbiAgICpcbiAgICogRm9ybWF0OlxuICAgKiAgIChDb21taXRDb21wb25lbnRUcmFuc2FjdGlvbilcbiAgICogT3BlcmFuZCBTdGFjazpcbiAgICogICAuLi4g4oaSXG4gICAqICAgLi4uXG4gICAqL1xuICBDb21taXRDb21wb25lbnRUcmFuc2FjdGlvbixcblxuICAvKipcbiAgICogT3BlcmF0aW9uOiBJbnZva2UgZGlkQ3JlYXRlRWxlbWVudCBvbiB0aGUgY3VycmVudCBjb21wb25lbnQgbWFuYWdlclxuICAgKlxuICAgKiBGb3JtYXQ6XG4gICAqICAgKERpZENyZWF0ZUVsZW1lbnQgc3RhdGU6cmVnaXN0ZXIpXG4gICAqIE9wZXJhbmQgU3RhY2s6XG4gICAqICAgLi4uIOKGklxuICAgKiAgIC4uLlxuICAgKi9cbiAgRGlkQ3JlYXRlRWxlbWVudCxcblxuICAvKipcbiAgICogT3BlcmF0aW9uOiBJbnZva2UgZGlkUmVuZGVyTGF5b3V0IG9uIHRoZSBjdXJyZW50IGNvbXBvbmVudCBtYW5hZ2VyXG4gICAqXG4gICAqIEZvcm1hdDpcbiAgICogICAoRGlkUmVuZGVyTGF5b3V0IHN0YXRlOnJlZ2lzdGVyKVxuICAgKiBPcGVyYW5kIFN0YWNrOlxuICAgKiAgIC4uLiwg4oaSXG4gICAqICAgLi4uXG4gICAqL1xuICBEaWRSZW5kZXJMYXlvdXQsXG5cbiAgLy8vIFBBUlRJQUxTXG5cbiAgLyoqXG4gICAqIE9wZXJhdGlvbjogTG9va3VwIGFuZCBpbnZva2UgYSBwYXJ0aWFsIHRlbXBsYXRlLlxuICAgKlxuICAgKiBGb3JtYXQ6XG4gICAqICAgKEludm9rZVBhcnRpYWwgdGVtcGxhdGVNZXRhOiNMb2NhdG9yIHN5bWJvbHM6I0FycmF5PCNzdHJpbmc+IGV2YWxJbmZvOiNBcnJheTxudW1iZXI+KVxuICAgKiBPcGVyYW5kIFN0YWNrOlxuICAgKiAgIC4uLiwgVmVyc2lvbmVkUGF0aFJlZmVyZW5jZTxzdHJpbmc+IOKGklxuICAgKiAgIC4uLlxuICAgKi9cbiAgSW52b2tlUGFydGlhbCxcblxuICAvKipcbiAgICogT3BlcmF0aW9uOlxuICAgKiAgIFJlc29sdmUge3tmb299fSBpbnNpZGUgYSBwYXJ0aWFsLCB3aGljaCBjb3VsZCBiZSBlaXRoZXIgYSBzZWxmLWxvb2t1cFxuICAgKiAgIG9yIGEgbG9jYWwgdmFyaWFibGUgdGhhdCBpcyBpbi1zY29wZSBmb3IgdGhlIGNhbGxlci5cbiAgICpcbiAgICogRm9ybWF0OlxuICAgKiAgIChSZXNvbHZlTWF5YmVMb2NhbCBsb2NhbDojc3RyaW5nKVxuICAgKiBPcGVyYW5kIFN0YWNrOlxuICAgKiAgIC4uLiDihpJcbiAgICogICAuLi4sIFZlcnNpb25lZFBhdGhSZWZlcmVuY2VcbiAgICovXG4gIFJlc29sdmVNYXliZUxvY2FsLFxuXG4gIC8vLyBERUJVR0dFUlxuXG4gIC8qKlxuICAgKiBPcGVyYXRpb246IEFjdGl2YXRlIHRoZSBkZWJ1Z2dlclxuICAgKlxuICAgKiBGb3JtYXQ6XG4gICAqICAgKERlYnVnZ2VyIHN5bWJvbHM6I0FycmF5PHN0cmluZz4gZXZhbEluZm86I0FycmF5PG51bWJlcj4pXG4gICAqIE9wZXJhbmQgU3RhY2s6XG4gICAqICAgLi4uIOKGklxuICAgKiAgIC4uLlxuICAgKi9cbiAgRGVidWdnZXIsXG5cbiAgLyoqIFRoZSBzaXplIG9mIHRoZSBvcGNvZGUgbGlzdCAqL1xuICBTaXplLFxufVxuIl19
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3Bjb2Rlcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3BhY2thZ2VzL0BnbGltbWVyL3ZtL2xpYi9vcGNvZGVzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgY29uc3QgZW51bSBPcCB7XG4gIC8qXG4gICAgRG9jdW1lbnRhdGlvbiBUT0RPOlxuXG4gICAgRG9jdW1lbnQgdGhlIGxvY2FsIHZhcmlhYmxlIGxheW91dCBpbiB0aGUgc3RhY2tcbiAgICBkaWFncmFtIGJlZm9yZS1hbmQtYWZ0ZXIuXG5cbiAgICBEb2N1bWVudCB1cGRhdGluZyBvcGNvZGVzIGVtaXR0aW5nIGZyb20gdW5yZWFjaGFibGVcbiAgICBhcHBlbmQgb3Bjb2RlLlxuXG4gICAgRG9jdW1lbnQgdGhlIGVsZW1lbnQgc3RhY2ssIGJsb2NrIHN0YWNrIGFuZCBMaXN0XG4gICAgYmxvY2sgc3RhY2suXG4gICAqL1xuXG4gIC8qKlxuICAgKiBUaGlzIG9wY29kZSBzaG91bGQgbmV2ZXIgYmUgcmVhY2hlZC5cbiAgICovXG4gIEJ1ZyxcblxuICAvLy8gRVhQUkVTU0lPTlNcblxuICAvKipcbiAgICogT3BlcmF0aW9uOiBFdmFsdWF0ZSBhIEhlbHBlci5cbiAgICogRm9ybWF0OlxuICAgKiAgIChIZWxwZXIgaGVscGVyOiNGdW5jdGlvbilcbiAgICogT3BlcmFuZCBTdGFjazpcbiAgICogICAuLi4sIFtWZXJzaW9uZWRQYXRoUmVmZXJlbmNlIC4uLl0sIEFyZ3VtZW50cyDihpJcbiAgICogICAuLi4sIFZlcnNpb25lZFBhdGhSZWZlcmVuY2VcbiAgICovXG4gIEhlbHBlcixcblxuICAvKipcbiAgICogT3BlcmF0aW9uOlxuICAgKiAgIEJpbmQgdGhlIG5hbWVkIGFyZ3VtZW50cyBpbiB0aGUgQXJndW1lbnRzIHRvIHRoZSBzeW1ib2xzXG4gICAqICAgc3BlY2lmaWVkIGJ5IHRoZSBzeW1ib2wgdGFibGUgaW4gdGhlIGNvbXBvbmVudCBzdGF0ZSBhdCByZWdpc3Rlci5cbiAgICogRm9ybWF0OlxuICAgKiAgIChTZXROYW1lZFZhcmlhYmxlcyByZWdpc3Rlcjp1MzIpXG4gICAqIE9wZXJhbmQgU3RhY2s6XG4gICAqICAgLi4uLCBBcmd1bWVudHMg4oaSXG4gICAqICAgLi4uXG4gICAqL1xuICBTZXROYW1lZFZhcmlhYmxlcyxcblxuICAvKipcbiAgICogT3BlcmF0aW9uOlxuICAgKiAgIEJpbmQgdGhlIGJsb2NrcyBpbiB0aGUgQXJndW1lbnRzIHRvIHRoZSBzeW1ib2xzIHNwZWNpZmllZCBieSB0aGVcbiAgICogICBzeW1ib2wgdGFibGUgaW4gdGhlIGNvbXBvbmVudCBzdGF0ZSBhdCByZWdpc3Rlci5cbiAgICogRm9ybWF0OlxuICAgKiAgIChTZXRCbG9ja3MgcmVnaXN0ZXI6dTMyKVxuICAgKiBPcGVyYW5kIFN0YWNrOlxuICAgKiAgIC4uLiwgQXJndW1lbnRzIOKGklxuICAgKiAgIC4uLlxuICAgKi9cbiAgU2V0QmxvY2tzLFxuXG4gIC8qKlxuICAgKiBPcGVyYXRpb246XG4gICAqICAgQmluZCB0aGUgdmFyaWFibGUgcmVwcmVzZW50ZWQgYnkgYSBzeW1ib2wgZnJvbVxuICAgKiAgIHRoZSB2YWx1ZSBhdCB0aGUgdG9wIG9mIHRoZSBzdGFjay5cbiAgICogRm9ybWF0OlxuICAgKiAgIChTZXRWYXJpYWJsZSBzeW1ib2w6dTMyKVxuICAgKiBPcGVyYW5kIFN0YWNrOlxuICAgKiAgIC4uLiwgVmVyc2lvbmVkUGF0aFJlZmVyZW5jZSDihpJcbiAgICogICAuLi5cbiAgICovXG4gIFNldFZhcmlhYmxlLFxuXG4gIC8qKlxuICAgKiBPcGVyYXRpb246XG4gICAqICAgQmluZCB0aGUgYmxvY2sgYXQgdGhlIHRvcCBvZiB0aGUgc3RhY2suXG4gICAqIEZvcm1hdDpcbiAgICogICAoU2V0QmxvY2sgc3ltYm9sOnUzMilcbiAgICogT3BlcmFuZCBTdGFjazpcbiAgICogICAuLi4sIFN5bWJvbFRhYmxlLCBIYW5kbGUg4oaSXG4gICAqICAgLi4uXG4gICAqL1xuICBTZXRCbG9jayxcblxuICAvKipcbiAgICogT3BlcmF0aW9uOlxuICAgKiAgIFB1c2ggdGhlIGNvbnRlbnRzIG9mIHRoZSB2YXJpYWJsZSByZXByZXNlbnRlZCBieVxuICAgKiAgIGEgc3ltYm9sIChhIHBvc2l0aW9uYWwgb3IgbmFtZWQgYXJndW1lbnQpIG9udG9cbiAgICogICB0aGUgc3RhY2suXG4gICAqIEZvcm1hdDpcbiAgICogICAoUHVzaFN5bWJvbCBzeW1ib2w6dTMyKVxuICAgKiBPcGVyYW5kIFN0YWNrOlxuICAgKiAgIC4uLiDihpJcbiAgICogICAuLi4sIFZlcnNpb25lZFBhdGhSZWZlcmVuY2VcbiAgICovXG4gIEdldFZhcmlhYmxlLFxuXG4gIC8qKlxuICAgKiBPcGVyYXRpb246XG4gICAqICAgUG9wIGEgVmVyc2lvbmVkUGF0aFJlZmVyZW5jZSBmcm9tIHRoZSB0b3Agb2YgdGhlXG4gICAqICAgc3RhY2ssIGFuZCBwdXNoIGEgVmVyc2lvbmVkUGF0aFJlZmVyZW5jZSBjb25zdHJ1Y3RlZFxuICAgKiAgIGJ5IGAuZ2V0KHByb3BlcnR5KWAuXG4gICAqIEZvcm1hdDpcbiAgICogICAoR2V0UHJvcGVydHkgcHJvcGVydHk6I3N0cmluZylcbiAgICogT3BlcmFuZCBTdGFjazpcbiAgICogICAuLi4sIFZlcnNpb25lZFBhdGhSZWZlcmVuY2Ug4oaSXG4gICAqICAgLi4uLCBWZXJzaW9uZWRQYXRoUmVmZXJlbmNlXG4gICAqL1xuICBHZXRQcm9wZXJ0eSxcblxuICAvKipcbiAgICogT3BlcmF0aW9uOiBQdXNoIHRoZSBzcGVjaWZpZWQgYm91bmQgYmxvY2sgb250byB0aGUgc3RhY2suXG4gICAqIEZvcm1hdDpcbiAgICogICAoR2V0QmxvY2sgYmxvY2s6dTMyKVxuICAgKiBPcGVyYW5kIFN0YWNrOlxuICAgKiAgIC4uLiDihpJcbiAgICogICAuLi4sIElubGluZUJsb2NrXG4gICAqL1xuICBHZXRCbG9jayxcblxuICAvKipcbiAgICogT3BlcmF0aW9uOlxuICAgKiAgIFB1c2ggVFJVRSBvbnRvIHRoZSBzdGFjayBpZiB0aGUgc3BlY2lmaWVkIGJsb2NrXG4gICAqICAgaXMgYm91bmQgYW5kIEZBTFNFIGlmIGl0IGlzIG5vdC5cbiAgICogRm9ybWF0OlxuICAgKiAgIChIYXNCbG9jayBibG9jazp1MzIpXG4gICAqIE9wZXJhbmQgU3RhY2s6XG4gICAqICAgLi4uIOKGklxuICAgKiAgIC4uLiwgYm9vbGVhblxuICAgKi9cbiAgSGFzQmxvY2ssXG5cbiAgLyoqXG4gICAqIE9wZXJhdGlvbjpcbiAgICogICBQdXNoIFRSVUUgb250byB0aGUgc3RhY2sgaWYgdGhlIHNwZWNpZmllZCBibG9ja1xuICAgKiAgIGlzIGJvdW5kICphbmQqIGhhcyBhdCBsZWFzdCBvbmUgc3BlY2lmaWVkIGZvcm1hbFxuICAgKiAgIHBhcmFtZXRlciwgYW5kIEZBTFNFIG90aGVyd2lzZS5cbiAgICogRm9ybWF0OlxuICAgKiAgIChIYXNCbG9ja1BhcmFtcyBibG9jazp1MzIpXG4gICAqIE9wZXJhbmQgU3RhY2s6XG4gICAqICAgLi4uIOKGklxuICAgKiAgIC4uLiwgVmVyc2lvbmVkUGF0aFJlZmVyZW5jZSAoYm9vbGVhbilcbiAgICovXG4gIEhhc0Jsb2NrUGFyYW1zLFxuXG4gIC8qKlxuICAgKiBPcGVyYXRpb246XG4gICAqICAgUG9wIGNvdW50IGBWZXJzaW9uZWRQYXRoUmVmZXJlbmNlYHMgb2ZmIHRoZSBzdGFjayBhbmRcbiAgICogICBjb25zdHJ1Y3QgYSBuZXcgQ29uY2F0UmVmZXJlbmNlIGZyb20gdGhlbSAoaW4gcmV2ZXJzZVxuICAgKiAgIG9yZGVyKS5cbiAgICogRm9ybWF0OlxuICAgKiAgIChDb25jYXQgY291bnQ6dTMyKVxuICAgKiBPcGVyYW5kIFN0YWNrOlxuICAgKiAgIC4uLiwgVmVyc2lvbmVkUGF0aFJlZmVyZW5jZSwgW1ZlcnNpb25lZFBhdGhSZWZlcmVuY2UgLi4uXSDihpJcbiAgICogICAuLi4sIENvbmNhdFJlZmVyZW5jZVxuICAgKi9cbiAgQ29uY2F0LFxuXG4gIC8qKlxuICAgKiBPcGVyYXRpb246XG4gICAqICAgUHVzaCBhbiBPYmplY3QgY29uc3RhbnQgb250byB0aGUgc3RhY2sgdGhhdCBpcyBub3RcbiAgICogICBhIEphdmFTY3JpcHQgcHJpbWl0aXZlLlxuICAgKiBGb3JtYXQ6XG4gICAqICAgKFB1c2hDb25zdGFudCBjb25zdGFudDojT2JqZWN0KVxuICAgKiBPcGVyYW5kIFN0YWNrOlxuICAgKiAgIC4uLiDihpJcbiAgICogICAuLi4sIE9wYXF1ZVxuICAgKi9cbiAgQ29uc3RhbnQsXG5cbiAgLyoqXG4gICAqIE9wZXJhdGlvbjpcbiAgICogICBXcmFwIGEgSmF2YVNjcmlwdCBwcmltaXRpdmUgaW4gYSByZWZlcmVuY2UgYW5kIHB1c2ggaXRcbiAgICogICBvbnRvIHRoZSBzdGFjay5cbiAgICogRm9ybWF0OlxuICAgKiAgIChQdXNoUHJpbWl0aXZlIGNvbnN0YW50OiNQcmltaXRpdmUpXG4gICAqIE9wZXJhbmQgU3RhY2s6XG4gICAqICAgLi4uIOKGklxuICAgKiAgIC4uLiwgUHJpbWl0aXZlXG4gICAqIERlc2NyaXB0aW9uOlxuICAgKiAgIFRoZSB0d28gaGlnaCBiaXRzIG9mIHRoZSBjb25zdGFudCByZWZlcmVuY2UgZGVzY3JpYmVcbiAgICogICB0aGUga2luZCBvZiBwcmltaXRpdmU6XG4gICAqXG4gICAqICAgMDA6IG51bWJlclxuICAgKiAgIDAxOiBzdHJpbmdcbiAgICogICAxMDogdHJ1ZSB8IGZhbHNlIHwgbnVsbCB8IHVuZGVmaW5lZFxuICAgKi9cbiAgUHJpbWl0aXZlLFxuXG4gIC8qKlxuICAgKiBPcGVyYXRpb246IENvbnZlcnQgdGhlIHRvcCBvZiB0aGUgc3RhY2sgaW50byBhIHByaW1pdGl2ZSByZWZlcmVuY2UuXG4gICAqXG4gICAqIEZvcm1hdDpcbiAgICogICAoUHJpbWl0aXZlUmVmZXJlbmNlKVxuICAgKiBPcGVyYW5kIFN0YWNrOlxuICAgKiAgIC4uLiwgUHJpbWl0aXZlIOKGklxuICAgKiAgIC4uLiwgVmVyc2lvbmVkUGF0aFJlZmVyZW5jZTxQcmltaXRpdmU+XG4gICAqL1xuICBQcmltaXRpdmVSZWZlcmVuY2UsXG5cbiAgLyoqXG4gICAqIE9wZXJhdGlvbjogQ29udmVydCB0aGUgdG9wIG9mIHRoZSBzdGFjayBpbnRvIGEgbnVtYmVyLlxuICAgKlxuICAgKiBGb3JtYXQ6XG4gICAqICAgKFJlaWZ5VTMyKVxuICAgKiBPcGVyYW5kIFN0YWNrOlxuICAgKiAgIC4uLiwgVmVyc2lvbmVkUGF0aFJlZmVyZW5jZTx1MzI+IOKGklxuICAgKiAgIC4uLiwgVmVyc2lvbmVkUGF0aFJlZmVyZW5jZTx1MzI+LCB1MzJcbiAgICovXG4gIFJlaWZ5VTMyLFxuXG4gIC8qKlxuICAgKiBPcGVyYXRpb246IER1cGxpY2F0ZSBhbmQgcHVzaCBpdGVtIGZyb20gYW4gb2Zmc2V0IGluIHRoZSBzdGFjay5cbiAgICogRm9ybWF0OlxuICAgKiAgIChEdXAgcmVnaXN0ZXI6dTMyLCBvZmZzZXQ6dTMyKVxuICAgKiBPcGVyYW5kIFN0YWNrOlxuICAgKiAgIC4uLiwgT3BhcXVlIOKGklxuICAgKiAgIC4uLiwgT3BhcXVlLCBPcGFxdWVcbiAgICovXG4gIER1cCxcblxuICAvKipcbiAgICogT3BlcmF0aW9uOiBQb3AgTiBpdGVtcyBvZmYgdGhlIHN0YWNrIGFuZCB0aHJvdyBhd2F5IHRoZSB2YWx1ZS5cbiAgICogRm9ybWF0OlxuICAgKiAgIChQb3ApXG4gICAqIE9wZXJhbmQgU3RhY2s6XG4gICAqICAgLi4uLCBPcGFxdWUsIC4uLiwgT3BhcXVlIOKGklxuICAgKiAgIC4uLlxuICAgKi9cbiAgUG9wLFxuXG4gIC8qKlxuICAgKiBPcGVyYXRpb246IExvYWQgYSB2YWx1ZSBpbnRvIGEgcmVnaXN0ZXJcbiAgICogRm9ybWF0OlxuICAgKiAgIChMb2FkIHJlZ2lzdGVyOnUzMilcbiAgICogT3BlcmFuZCBTdGFjazpcbiAgICogICAuLi4sIE9wYXF1ZSDihpJcbiAgICogICAuLi5cbiAgICovXG4gIExvYWQsXG5cbiAgLyoqXG4gICAqIE9wZXJhdGlvbjogRmV0Y2ggYSB2YWx1ZSBmcm9tIGEgcmVnaXN0ZXJcbiAgICogRm9ybWF0OlxuICAgKiAgIChGZXRjaCByZWdpc3Rlcjp1MzIpXG4gICAqIE9wZXJhbmQgU3RhY2s6XG4gICAqICAgLi4uIOKGklxuICAgKiAgIC4uLiwgT3BhcXVlXG4gICAqL1xuICBGZXRjaCxcblxuICAvLy8gUFJFTFVERSAmIEVYSVRcblxuICAvKipcbiAgICogT3BlcmF0aW9uOiBQdXNoIGEgbmV3IHJvb3Qgc2NvcGUgb250byB0aGUgc2NvcGUgc3RhY2suXG4gICAqXG4gICAqIEZvcm1hdDpcbiAgICogICAoUm9vdFNjb3BlIHN5bWJvbHM6dTMyIGJpbmRDYWxsZXJTY29wZTpib29sKVxuICAgKiBPcGVyYW5kIFN0YWNrOlxuICAgKiAgIC4uLiDihpJcbiAgICogICAuLi5cbiAgICogRGVzY3JpcHRpb246XG4gICAqICAgQSByb290IHNjb3BlIGhhcyBubyBwYXJlbnQgc2NvcGUsIGFuZCB0aGVyZWZvcmUgaW5oZXJpdHMgbm8gbGV4aWNhbFxuICAgKiAgIHZhcmlhYmxlcy4gSWYgYGJpbmRDYWxsZXJTY29wZWAgaXMgYHRydWVgLCB0aGUgY3VycmVudCBzY29wZSByZW1lbWJlcnNcbiAgICogICB0aGUgY2FsbGVyIHNjb3BlIChmb3IgeWllbGRpbmcgYmxvY2tzKS5cbiAgICovXG4gIFJvb3RTY29wZSxcblxuICAvKipcbiAgICogT3BlcmF0aW9uOiBQdXNoIGEgbmV3IHJvb3Qgc2NvcGUgb250byB0aGUgc2NvcGUgc3RhY2suXG4gICAqXG4gICAqIEZvcm1hdDpcbiAgICogICAoVmlydHVhbFJvb3RTY29wZSByZWdpc3Rlcjp1MzIpXG4gICAqIE9wZXJhbmQgU3RhY2s6XG4gICAqICAgLi4uIOKGklxuICAgKiAgIC4uLlxuICAgKiBEZXNjcmlwdGlvbjpcbiAgICogICBUaGUgc3ltYm9sIGNvdW50IGlzIGRldGVybWluZWQgYnkgdGhlIGNvbXBvbmVudCBzdGF0ZSBpblxuICAgKiAgIHRoZSBzcGVjaWZpZWQgcmVnaXN0ZXIuXG4gICAqL1xuICBWaXJ0dWFsUm9vdFNjb3BlLFxuXG4gIC8qKlxuICAgKiBPcGVyYXRpb246IFB1c2ggYSBuZXcgY2hpbGQgc2NvcGUgb250byB0aGUgc2NvcGUgc3RhY2suXG4gICAqXG4gICAqIEZvcm1hdDpcbiAgICogICAoQ2hpbGRTY29wZSlcbiAgICogT3BlcmFuZCBTdGFjazpcbiAgICogICAuLi4g4oaSXG4gICAqICAgLi4uXG4gICAqIERlc2NyaXB0aW9uOlxuICAgKiAgIEEgY2hpbGQgc2NvcGUgaW5oZXJpdHMgZnJvbSB0aGUgY3VycmVudCBwYXJlbnQgc2NvcGUsIGFuZCB0aGVyZWZvcmVcbiAgICogICBzaGFyZXMgaXRzIGxleGljYWwgdmFyaWFibGVzLlxuICAgKi9cbiAgQ2hpbGRTY29wZSxcblxuICAvKipcbiAgICogT3BlcmF0aW9uOiBQb3AgdGhlIGN1cnJlbnQgc2NvcGUgZnJvbSB0aGUgc2NvcGUgc3RhY2suXG4gICAqIEZvcm1hdDpcbiAgICogICAoUG9wU2NvcGUpXG4gICAqIE9wZXJhbmQgU3RhY2s6XG4gICAqICAgLi4uIOKGklxuICAgKiAgIC4uLlxuICAgKi9cbiAgUG9wU2NvcGUsXG5cbiAgLyoqXG4gICAqIE9wZXJhdGlvbjogUmV0dXJuIHRvIHRoZSBwcmV2aW91cyBmcmFtZS5cbiAgICogRm9ybWF0OlxuICAgKiAgIChSZXR1cm4pXG4gICAqIE9wZXJhbmQgU3RhY2s6XG4gICAqICAgLi4uLCBhZGRyZXNzOm51bWJlciDihpJcbiAgICogICAuLi5cbiAgICovXG4gIFJldHVybixcblxuICAvKipcbiAgICogT3BlcmF0aW9uOiBSZXR1cm4gdG8gYSBwbGFjZSBpbiB0aGUgcHJvZ3JhbSBnaXZlbiBhbiBvZmZzZXRcbiAgICogRm9ybWF0OlxuICAgKiAgKFJldHVyblRvIG9mZnNldDppMzIpXG4gICAqIE9wZXJhbmQgU3RhY2s6XG4gICAqICAgIC4uLiDihpJcbiAgICovXG4gIFJldHVyblRvLFxuXG4gIC8vLyBIVE1MXG5cbiAgLyoqXG4gICAqIE9wZXJhdGlvbjogQXBwZW5kIGEgVGV4dCBub2RlIHdpdGggdmFsdWUgYGNvbnRlbnRzYFxuICAgKiBGb3JtYXQ6XG4gICAqICAgKFRleHQgY29udGVudHM6I3N0cmluZylcbiAgICogT3BlcmFuZCBTdGFjazpcbiAgICogICAuLi4g4oaSXG4gICAqICAgLi4uXG4gICAqL1xuICBUZXh0LFxuXG4gIC8qKlxuICAgKiBPcGVyYXRpb246IEFwcGVuZCBhIENvbW1lbnQgbm9kZSB3aXRoIHZhbHVlIGBjb250ZW50c2BcbiAgICogRm9ybWF0OlxuICAgKiAgIChDb21tZW50IGNvbnRlbnRzOiNzdHJpbmcpXG4gICAqIE9wZXJhbmQgU3RhY2s6XG4gICAqICAgLi4uIOKGklxuICAgKiAgIC4uLlxuICAgKi9cbiAgQ29tbWVudCxcblxuICAvKipcbiAgICogT3BlcmF0aW9uOiBBcHBlbmQgY29udGVudCBhcyBIVE1MLlxuICAgKiBGb3JtYXQ6XG4gICAqICAgKEFwcGVuZEhUTUwpXG4gICAqIE9wZXJhbmQgU3RhY2s6XG4gICAqICAgLi4uLCBWZXJzaW9uZWRQYXRoUmVmZXJlbmNlPHN0cmluZz4g4oaSXG4gICAqICAgLi4uXG4gICAqL1xuICBBcHBlbmRIVE1MLFxuXG4gIC8qKlxuICAgKiBPcGVyYXRpb246IEFwcGVuZCBTYWZlSFRNTCBhcyBIVE1MLlxuICAgKiBGb3JtYXQ6XG4gICAqICAgKEFwcGVuZFNhZmVIVE1MKVxuICAgKiBPcGVyYW5kIFN0YWNrOlxuICAgKiAgIC4uLiwgVmVyc2lvbmVkUGF0aFJlZmVyZW5jZTxTYWZlSFRNTD4g4oaSXG4gICAqICAgLi4uXG4gICAqL1xuICBBcHBlbmRTYWZlSFRNTCxcblxuICAvKipcbiAgICogT3BlcmF0aW9uOiBBcHBlbmQgRG9jdW1lbnRGcmFnbWVudC5cbiAgICogRm9ybWF0OlxuICAgKiAgIChBcHBlbmRGcmFnbWVudClcbiAgICogT3BlcmFuZCBTdGFjazpcbiAgICogICAuLi4sIFZlcnNpb25lZFBhdGhSZWZlcmVuY2U8RG9jdW1lbnRGcmFnbWVudD4g4oaSXG4gICAqICAgLi4uXG4gICAqL1xuICBBcHBlbmREb2N1bWVudEZyYWdtZW50LFxuXG4gIC8qKlxuICAgKiBPcGVyYXRpb246IEFwcGVuZCBOb2RlLlxuICAgKiBGb3JtYXQ6XG4gICAqICAgKEFwcGVuZEZyYWdtZW50KVxuICAgKiBPcGVyYW5kIFN0YWNrOlxuICAgKiAgIC4uLiwgVmVyc2lvbmVkUGF0aFJlZmVyZW5jZTxOb2RlPiDihpJcbiAgICogICAuLi5cbiAgICovXG4gIEFwcGVuZE5vZGUsXG5cbiAgLyoqXG4gICAqIE9wZXJhdGlvbjogQXBwZW5kIGNvbnRlbnQgYXMgdGV4dC5cbiAgICogRm9ybWF0OlxuICAgKiAgIChBcHBlbmRUZXh0KVxuICAgKiBPcGVyYW5kIFN0YWNrOlxuICAgKiAgIC4uLiwgVmVyc2lvbmVkUGF0aFJlZmVyZW5jZTxzdHJpbmc+IOKGklxuICAgKiAgIC4uLlxuICAgKi9cbiAgQXBwZW5kVGV4dCxcblxuICAvKipcbiAgICogT3BlcmF0aW9uOiBPcGVuIGEgbmV3IEVsZW1lbnQgbmFtZWQgYHRhZ2AuXG4gICAqIEZvcm1hdDpcbiAgICogICAoT3BlbkVsZW1lbnQgdGFnOiNzdHJpbmcpXG4gICAqIE9wZXJhbmQgU3RhY2s6XG4gICAqICAgLi4uIOKGklxuICAgKiAgIC4uLlxuICAgKi9cbiAgT3BlbkVsZW1lbnQsXG5cbiAgLyoqXG4gICAqIE9wZXJhdGlvbjpcbiAgICogICBPcGVuIGEgbmV3IEVsZW1lbnQgd2l0aCBhIG5hbWUgb24gdGhlIHN0YWNrIGFuZCB3aXRoIHNwZWNpYWxcbiAgICogICBvcGVyYXRpb25zIHByb3ZpZGVkIG9uIHRoZSBzdGFjay5cbiAgICogRm9ybWF0OlxuICAgKiAgIChPcGVuRHluYW1pY0VsZW1lbnQpXG4gICAqIE9wZXJhbmQgU3RhY2s6XG4gICAqICAgLi4uLCBzdHJpbmcsIEVsZW1lbnRPcGVyYXRpb25zIOKGklxuICAgKiAgIC4uLlxuICAgKi9cbiAgT3BlbkR5bmFtaWNFbGVtZW50LFxuXG4gIC8qKlxuICAgKiBPcGVyYXRpb246IEFkZCBhbiBhdHRyaWJ1dGUgdG8gdGhlIGN1cnJlbnQgRWxlbWVudC5cbiAgICogRm9ybWF0OlxuICAgKiAgIChTdGF0aWNBdHRyIG5hbWU6I3N0cmluZyB2YWx1ZTojc3RyaW5nIG5hbWVzcGFjZTpPcHRpb248I3N0cmluZz4pXG4gICAqIE9wZXJhbmQgU3RhY2s6XG4gICAqICAgLi4uIOKGklxuICAgKiAgIC4uLlxuICAgKi9cbiAgU3RhdGljQXR0cixcblxuICAvKipcbiAgICogT3BlcmF0aW9uOlxuICAgKiAgIEFkZCBhbiBhdHRyaWJ1dGUgdG8gdGhlIGN1cnJlbnQgZWxlbWVudCB1c2luZyB0aGUgdmFsdWVcbiAgICogICBhdCB0aGUgdG9wIG9mIHRoZSBzdGFjay5cbiAgICpcbiAgICogRm9ybWF0OlxuICAgKiAgIChEeW5hbWljQXR0ciBuYW1lOiNzdHJpbmcgdHJ1c3Rpbmc6Ym9vbGVhbiBuYW1lc3BhY2U6T3B0aW9uPCNzdHJpbmc+KVxuICAgKiBPcGVyYW5kIFN0YWNrOlxuICAgKiAgIC4uLiwgVmVyc2lvbmVkUGF0aFJlZmVyZW5jZSDihpJcbiAgICogICAuLi5cbiAgICogRGVzY3JpcHRpb246XG4gICAqICAgSWYgYHRydXN0aW5nYCBpcyBmYWxzZSwgdGhlIGhvc3QgbWF5IHNhbml0aXplIHRoZSBhdHRyaWJ1dGVcbiAgICogICBiYXNlZCB1cG9uIGtub3duIHJpc2tzLlxuICAgKi9cbiAgRHluYW1pY0F0dHIsXG5cbiAgLyoqXG4gICAqIE9wZXJhdGlvbjpcbiAgICogICBBZGQgYW4gYXR0cmlidXRlIHRvIHRoZSBjdXJyZW50IGVsZW1lbnQgdXNpbmcgdGhlIHZhbHVlXG4gICAqICAgYXQgdGhlIHRvcCBvZiB0aGUgc3RhY2suXG4gICAqXG4gICAqIEZvcm1hdDpcbiAgICogICAoQ29tcG9uZW50QXRyIG5hbWU6I3N0cmluZyB0cnVzdGluZzpib29sZWFuIG5hbWVzcGFjZTpPcHRpb248I3N0cmluZz4pXG4gICAqIE9wZXJhbmQgU3RhY2s6XG4gICAqICAgLi4uLCBWZXJzaW9uZWRQYXRoUmVmZXJlbmNlIOKGklxuICAgKiAgIC4uLlxuICAgKi9cbiAgQ29tcG9uZW50QXR0cixcblxuICAvKipcbiAgICogT3BlcmF0aW9uOiBGaW5pc2ggc2V0dGluZyBhdHRyaWJ1dGVzIG9uIHRoZSBjdXJyZW50IGVsZW1lbnQuXG4gICAqXG4gICAqIEZvcm1hdDpcbiAgICogICAoRmx1c2hFbGVtZW50KVxuICAgKiBPcGVyYW5kIFN0YWNrOlxuICAgKiAgIC4uLiDihpJcbiAgICogICAuLi5cbiAgICovXG4gIEZsdXNoRWxlbWVudCxcblxuICAvKipcbiAgICogT3BlcmF0aW9uOiBDbG9zZSB0aGUgY3VycmVudCBlbGVtZW50LlxuICAgKlxuICAgKiBGb3JtYXQ6XG4gICAqICAgKENsb3NlRWxlbWVudClcbiAgICogT3BlcmFuZCBTdGFjazpcbiAgICogICAuLi4g4oaSXG4gICAqICAgLi4uXG4gICAqL1xuICBDbG9zZUVsZW1lbnQsXG5cbiAgLy8vIE1PRElGSUVSXG4gIE1vZGlmaWVyLCAvLyAoQ29uc3RhbnRTdHJpbmcsIENvbnN0YW50T3RoZXI8TW9kaWZpZXJNYW5hZ2VyPiwgQ29uc3RhbnRFeHByZXNzaW9uKVxuXG4gIC8vLyBXT1JNSE9MRVxuICBQdXNoUmVtb3RlRWxlbWVudCwgLy8gKClcbiAgUG9wUmVtb3RlRWxlbWVudCwgLy8gKClcblxuICAvLy8gRFlOQU1JQyBTQ09QRVxuXG4gIC8qKlxuICAgKiBPcGVyYXRpb246IEJpbmQgc3RhY2sgdmFsdWVzIGFzIGR5bmFtaWMgdmFyaWFibGVzLlxuICAgKiBGb3JtYXQ6XG4gICAqICAgKEJpbmREeW5hbWljU2NvcGUgbmFtZXM6I0FycmF5PCNzdHJpbmc+KVxuICAgKiBPcGVyYW5kIFN0YWNrOlxuICAgKiAgIC4uLiwgVmVyc2lvbmVkUGF0aFJlZmVyZW5jZSwgW1ZlcnNpb25lZFBhdGhSZWZlcmVuY2UgLi4uXSDihpJcbiAgICogICAuLi5cbiAgICogRGVzY3JpcHRpb246XG4gICAqICAgVGhpcyBpcyB1c2VkIHRvIGV4cG9zZSBgLXdpdGgtZHluYW1pYy12YXJzYCwgYW5kIGlzIGFcbiAgICogICBuaWNoZSBmZWF0dXJlLlxuICAgKi9cbiAgQmluZER5bmFtaWNTY29wZSxcblxuICBQdXNoRHluYW1pY1Njb3BlLCAvLyAoKVxuICBQb3BEeW5hbWljU2NvcGUsIC8vICgpXG5cbiAgLy8vIFZNXG5cbiAgLyoqXG4gICAqIE9wZXJhdGlvbjogQ29tcGlsZSB0aGUgSW5saW5lQmxvY2sgYXQgdGhlIHRvcCBvZiB0aGUgc3RhY2suXG4gICAqIEZvcm1hdDpcbiAgICogICAoQ29tcGlsZUJsb2NrKVxuICAgKiBPcGVyYW5kIFN0YWNrOlxuICAgKiAgIC4uLiwgQ29tcGlsYWJsZUJsb2NrIOKGklxuICAgKiAgIC4uLiwgSGFuZGxlXG4gICAqL1xuICBDb21waWxlQmxvY2ssXG5cbiAgLyoqXG4gICAqIE9wZXJhdGlvbjogUHVzaCBhIHNjb3BlIG9udG8gdGhlIHN0YWNrLlxuICAgKiBGb3JtYXQ6XG4gICAqICAgKFB1c2hCbG9ja1Njb3BlICNTY29wZSlcbiAgICogT3BlcmFuZCBTdGFjazpcbiAgICogICAuLi4sIOKGklxuICAgKiAgIC4uLiwgU2NvcGVcbiAgICovXG4gIFB1c2hCbG9ja1Njb3BlLFxuXG4gIC8qKlxuICAgKiBPcGVyYXRpb246IFB1c2ggYSBzeW1ib2wgdGFibGUgb250byB0aGUgc3RhY2suXG4gICAqIEZvcm1hdDpcbiAgICogICAoUHVzaFN5bWJvbFRhYmxlICNTeW1ib2xUYWJsZSlcbiAgICogT3BlcmFuZCBTdGFjazpcbiAgICogICAuLi4sIOKGklxuICAgKiAgIC4uLiwgU3ltYm9sVGFibGVcbiAgICovXG4gIFB1c2hTeW1ib2xUYWJsZSxcblxuICAvKipcbiAgICogT3BlcmF0aW9uOiBFdmFsdWF0ZSB0aGUgaGFuZGxlIGF0IHRoZSB0b3Agb2YgdGhlIHN0YWNrLlxuICAgKiBGb3JtYXQ6XG4gICAqICAgKEludm9rZVZpcnR1YWwpXG4gICAqIE9wZXJhbmQgU3RhY2s6XG4gICAqICAgLi4uLCBIYW5kbGUsIOKGklxuICAgKiAgIC4uLlxuICAgKi9cbiAgSW52b2tlVmlydHVhbCxcblxuICAvKipcbiAgICogT3BlcmF0aW9uOiBFdmFsdWF0ZSB0aGUgaGFuZGxlLlxuICAgKiBGb3JtYXQ6XG4gICAqICAgKEludm9rZVN0YXRpYyBoYW5kbGU6dTMyKVxuICAgKiBPcGVyYW5kIFN0YWNrOlxuICAgKiAgIC4uLiDihpJcbiAgICogICAuLi5cbiAgICovXG4gIEludm9rZVN0YXRpYyxcblxuICAvKipcbiAgICogT3BlcmF0aW9uOiBZaWVsZCB0byBhIGJsb2NrLlxuICAgKiBGb3JtYXQ6XG4gICAqICAgKEludm9rZVlpZWxkKVxuICAgKiBPcGVyYW5kIFN0YWNrOlxuICAgKiAgIC4uLiwgW1ZlcnNpb25lZFBhdGhSZWZlcmVuY2UgLi4uXSwgQXJndW1lbnRzLCBTeW1ib2xUYWJsZSwgSGFuZGxlIOKGklxuICAgKiAgIC4uLlxuICAgKi9cbiAgSW52b2tlWWllbGQsXG5cbiAgLyoqXG4gICAqIE9wZXJhdGlvbjogSnVtcCB0byB0aGUgc3BlY2lmaWVkIG9mZnNldC5cbiAgICpcbiAgICogRm9ybWF0OlxuICAgKiAgIChKdW1wIHRvOnUzMilcbiAgICogT3BlcmFuZCBTdGFjazpcbiAgICogICAuLi4g4oaSXG4gICAqICAgLi4uXG4gICAqL1xuICBKdW1wLFxuXG4gIC8qKlxuICAgKiBPcGVyYXRpb246XG4gICAqICAgSnVtcCB0byB0aGUgc3BlY2lmaWVkIG9mZnNldCBpZiB0aGUgdmFsdWUgYXRcbiAgICogICB0aGUgdG9wIG9mIHRoZSBzdGFjayBpcyB0cnVlLlxuICAgKlxuICAgKiBGb3JtYXQ6XG4gICAqICAgKEp1bXBJZiB0bzp1MzIpXG4gICAqIE9wZXJhbmQgU3RhY2s6XG4gICAqICAgLi4uLCBWZXJzaW9uZWRQYXRoUmVmZXJlbmNlIOKGklxuICAgKiAgIC4uLlxuICAgKi9cbiAgSnVtcElmLFxuXG4gIC8qKlxuICAgKiBPcGVyYXRpb246XG4gICAqICAgSnVtcCB0byB0aGUgc3BlY2lmaWVkIG9mZnNldCBpZiB0aGUgdmFsdWUgYXRcbiAgICogICB0aGUgdG9wIG9mIHRoZSBzdGFjayBpcyBmYWxzZS5cbiAgICpcbiAgICogRm9ybWF0OlxuICAgKiAgIChKdW1wVW5sZXNzIHRvOnUzMilcbiAgICogT3BlcmFuZCBTdGFjazpcbiAgICogICAuLi4sIFZlcnNpb25lZFBhdGhSZWZlcmVuY2Ug4oaSXG4gICAqICAgLi4uXG4gICAqL1xuICBKdW1wVW5sZXNzLFxuXG4gIC8qKlxuICAgKiBPcGVyYXRpb246XG4gICAqICAgSnVtcCB0byB0aGUgc3BlY2lmaWVkIG9mZnNldCBpZiB0aGUgdmFsdWUgYXRcbiAgICogICB0aGUgdG9wIG9mIHRoZSBzdGFjayBpcyB0aGUgc2FtZSBhcyB0aGVcbiAgICogICBjb21wYXJpc29uLlxuICAgKlxuICAgKiBGb3JtYXQ6XG4gICAqICAgKEp1bXBFcSB0bzppMzIgY29tcGFyaXNvbjppMzIpXG4gICAqIE9wZXJhbmQgU3RhY2s6XG4gICAqICAgLi4uLCB1MzIg4oaSXG4gICAqICAgLi4uLCB1MzJcbiAgICovXG4gIEp1bXBFcSxcblxuICAvKipcbiAgICogT3BlcmF0aW9uOlxuICAgKiAgIFZhbGlkYXRlIHRoYXQgdGhlIHZhbHVlIGF0IHRoZSB0b3Agb2YgdGhlIHN0YWNrXG4gICAqICAgaGFzbid0IGNoYW5nZWQuXG4gICAqXG4gICAqIEZvcm1hdDpcbiAgICogICAoQXNzZXJ0U2FtZSlcbiAgICogT3BlcmFuZCBTdGFjazpcbiAgICogICAuLi4sIFZlcnNpb25lZFBhdGhSZWZlcmVuY2U8dTMyPiDihpJcbiAgICogICAuLi4sIFZlcnNpb25lZFBhdGhSZWZlcmVuY2U8dTMyPlxuICAgKi9cbiAgQXNzZXJ0U2FtZSxcblxuICAvKipcbiAgICogT3BlcmF0aW9uOiBQdXNoIGEgc3RhY2sgZnJhbWVcbiAgICpcbiAgICogRm9ybWF0OlxuICAgKiAgIChQdXNoRnJhbWUpXG4gICAqIE9wZXJhbmQgU3RhY2s6XG4gICAqICAgLi4uIOKGklxuICAgKiAgICRyYSwgJGZwXG4gICAqL1xuICBQdXNoRnJhbWUsXG5cbiAgLyoqXG4gICAqIE9wZXJhdGlvbjogUG9wIGEgc3RhY2sgZnJhbWVcbiAgICpcbiAgICogRm9ybWF0OlxuICAgKiAgIChQdXNoRnJhbWUpXG4gICAqIE9wZXJhbmQgU3RhY2s6XG4gICAqICAgJHJhLCAkZnAg4oaSXG4gICAqICAgLi4uXG4gICAqL1xuICBQb3BGcmFtZSxcblxuICAvKipcbiAgICogT3BlcmF0aW9uOiBQdXNoIGEgc21hbGwgc3RhY2sgZnJhbWVcbiAgICpcbiAgICogRm9ybWF0OlxuICAgKiAgIChQdXNoU21hbGxGcmFtZSlcbiAgICogT3BlcmFuZCBTdGFjazpcbiAgICogICAuLi4g4oaSXG4gICAqICAgJGZwXG4gICAqL1xuICBQdXNoU21hbGxGcmFtZSxcblxuICAvKipcbiAgICogT3BlcmF0aW9uOiBQb3AgYSBzdGFjayBmcmFtZVxuICAgKlxuICAgKiBGb3JtYXQ6XG4gICAqICAgKFBvcFNtYWxsRnJhbWUpXG4gICAqIE9wZXJhbmQgU3RhY2s6XG4gICAqICAgJGZwIOKGklxuICAgKiAgIC4uLlxuICAgKi9cbiAgUG9wU21hbGxGcmFtZSxcblxuICAvKipcbiAgICogT3BlcmF0aW9uOlxuICAgKiAgIFN0YXJ0IHRyYWNraW5nIGEgbmV3IG91dHB1dCBibG9jayB0aGF0IGNvdWxkIGNoYW5nZVxuICAgKiAgIGlmIG9uZSBvZiBpdHMgaW5wdXRzIGNoYW5nZXMuXG4gICAqXG4gICAqIEZvcm1hdDpcbiAgICogICAoRW50ZXIgYXJnczp1MzIpXG4gICAqIE9wZXJhbmQgU3RhY2s6XG4gICAqICAgLi4uIOKGklxuICAgKiAgIC4uLlxuICAgKiBEZXNjcmlwdGlvbjpcbiAgICogICBTb29uIGFmdGVyIHRoaXMgb3Bjb2RlLCBvbmUgb2YgSnVtcCwgSnVtcElmLFxuICAgKiAgIEp1bXBVbmxlc3MsIG9yIEp1bXBFcSB3aWxsIHByb2R1Y2UgYW4gdXBkYXRpbmdcbiAgICogICBhc3NlcnRpb24uIElmIHRoYXQgYXNzZXJ0aW9uIGZhaWxzLCB0aGUgYXBwZW5kaW5nXG4gICAqICAgVk0gd2lsbCBiZSByZS1lbnRlcmVkLCBhbmQgdGhlIGluc3RydWN0aW9ucyBmcm9tIGBmcm9tYFxuICAgKiAgIHRvIGB0b2Agd2lsbCBiZSBleGVjdXRlZC5cbiAgICpcbiAgICogICBUT0RPOiBTYXZlIGFuZCByZXN0b3JlLlxuICAgKi9cbiAgRW50ZXIsXG5cbiAgLyoqXG4gICAqIE9wZXJhdGlvbjpcbiAgICogICBGaW5pc2ggdHJhY2tpbmcgdGhlIGN1cnJlbnQgYmxvY2suXG4gICAqXG4gICAqIEZvcm1hdDpcbiAgICogICAoRXhpdClcbiAgICogT3BlcmFuZCBTdGFjazpcbiAgICogICAuLi4g4oaSXG4gICAqICAgLi4uXG4gICAqIERlc2NyaXB0aW9uOlxuICAgKiAgIFRoaXMgZmluYWxpemVzIHRoZSB2YWxpZGF0b3JzIHRoYXQgdGhlIHVwZGF0aW5nXG4gICAqICAgYmxvY2sgbXVzdCBjaGVjayB0byBkZXRlcm1pbmUgd2hldGhlciBpdCdzIHNhZmUgdG9cbiAgICogICBza2lwIHJ1bm5pbmcgdGhlIGNvbnRlbnRzLlxuICAgKi9cbiAgRXhpdCxcblxuICAvKipcbiAgICogT3BlcmF0aW9uOiBDb252ZXJ0IHRoZSB0b3Agb2YgdGhlIHN0YWNrIGludG8gYSBib29sZWFuIHJlZmVyZW5jZS5cbiAgICpcbiAgICogRm9ybWF0OlxuICAgKiAgIChUb0Jvb2xlYW4pXG4gICAqIE9wZXJhbmQgU3RhY2s6XG4gICAqICAgLi4uLCBWZXJzaW9uZWRQYXRoUmVmZXJlbmNlPE9wYXF1ZT4g4oaSXG4gICAqICAgLi4uLCBWZXJzaW9uZWRQYXRoUmVmZXJlbmNlPGJvb2w+XG4gICAqL1xuICBUb0Jvb2xlYW4sXG5cbiAgLy8vIExJU1RTXG5cbiAgLyoqXG4gICAqIE9wZXJhdGlvbjogRW50ZXIgYSBsaXN0LlxuICAgKlxuICAgKiBGb3JtYXQ6XG4gICAqICAgKEVudGVyTGlzdCBhZGRyZXNzOnUzMilcbiAgICogT3BlcmFuZCBTdGFjazpcbiAgICogICAuLi4sIEl0ZXJhdG9yIOKGklxuICAgKiAgIC4uLlxuICAgKi9cbiAgRW50ZXJMaXN0LFxuXG4gIC8qKlxuICAgKiBPcGVyYXRpb246IEV4aXQgdGhlIGN1cnJlbnQgbGlzdC5cbiAgICpcbiAgICogRm9ybWF0OlxuICAgKiAgIChFeGl0TGlzdClcbiAgICogT3BlcmFuZCBTdGFjazpcbiAgICogICAuLi4g4oaSXG4gICAqICAgLi4uXG4gICAqL1xuICBFeGl0TGlzdCxcblxuICAvKipcbiAgICogT3BlcmF0aW9uOlxuICAgKiAgIENvbnZlcnQgYW4gb3BlcmFuZCBhbmQga2V5IGludG8gYW4gaXRlcmF0b3IgYW5kXG4gICAqICAgcHJlc2VuY2UgcmVmZXJlbmNlLlxuICAgKlxuICAgKiBGb3JtYXQ6XG4gICAqICAgKFB1dEl0ZXJhdG9yKVxuICAgKiBPcGVyYW5kIFN0YWNrOlxuICAgKiAgIC4uLiwga2V5OnN0cmluZywgbGlzdDpWZXJzaW9uZWRQYXRoUmVmZXJlbmNlIOKGklxuICAgKiAgIC4uLiwgaXRlcmF0b3I6UmVmZXJlbmNlSXRlcmF0b3IsIHByZXNlbnQ6UHJlc2VuY2VSZWZlcmVuY2VcbiAgICovXG4gIFB1dEl0ZXJhdG9yLFxuXG4gIC8qKlxuICAgKiBPcGVyYXRpb246XG4gICAqICAgU2V0IHVwIHRoZSBzdGFjayBmb3IgaXRlcmF0aW5nIGZvciBhIGdpdmVuIGtleSxcbiAgICogICBvciBqdW1wIHRvIGBlbmRgIGlmIHRoZXJlIGlzIG5vdGhpbmcgbGVmdCB0b1xuICAgKiAgIGl0ZXJhdGUuXG4gICAqXG4gICAqIEZvcm1hdDpcbiAgICogICAoSXRlcmF0ZSBlbmQ6dTMyKVxuICAgKiBPcGVyYW5kIFN0YWNrOlxuICAgKiAgIEZvcm0gMTogKHNvbWV0aGluZyB0byBpdGVyYXRlKVxuICAgKiAgIC4uLiDihpJcbiAgICogICAuLi4sIFZlcnNpb25lZFBhdGhSZWZlcmVuY2UsIFZlcnNpb25lZFBhdGhSZWZlcmVuY2UsIHN0cmluZ1xuICAgKiAgIEZvcm0gMjogKG5vdGhpbmcgbGVmdCB0byBpdGVyYXRlKVxuICAgKiAgIC4uLiDihpJcbiAgICogICAuLi5cbiAgICogRGVzY3JpcHRpb246XG4gICAqICAgSW4gRm9ybSAxLCB0aGUgc3RhY2sgd2lsbCBoYXZlIChpbiByZXZlcnNlIG9yZGVyKTpcbiAgICpcbiAgICogICAtIHRoZSBrZXksIGFzIGEgc3RyaW5nXG4gICAqICAgLSB0aGUgY3VycmVudCBpdGVyYXRlZCB2YWx1ZVxuICAgKiAgIC0gdGhlIG1lbW9pemVkIGl0ZXJhdGVkIHZhbHVlXG4gICAqL1xuICBJdGVyYXRlLFxuXG4gIC8vLyBDT01QT05FTlRTXG5cbiAgLyoqXG4gICAqIE9wZXJhdGlvbjogVGVzdCB3aGV0aGVyIGEgcmVmZXJlbmNlIGNvbnRhaW5zIGEgY29tcG9uZW50IGRlZmluaXRpb24uXG4gICAqXG4gICAqIEZvcm1hdDpcbiAgICogICAoTWFpbiBzdGF0ZTpyZWdpc3RlcilcbiAgICogT3BlcmFuZCBTdGFjazpcbiAgICogICAuLi4sIEludm9jYXRpb24sIENvbXBvbmVudERlZmluaXRpb24g4oaSXG4gICAqICAgLi4uXG4gICAqL1xuICBNYWluLFxuXG4gIC8qKlxuICAgKiBPcGVyYXRpb246IFRlc3Qgd2hldGhlciBhIHJlZmVyZW5jZSBjb250YWlucyBhIGNvbXBvbmVudCBkZWZpbml0aW9uLlxuICAgKlxuICAgKiBGb3JtYXQ6XG4gICAqICAgKElzQ29tcG9uZW50KVxuICAgKiBPcGVyYW5kIFN0YWNrOlxuICAgKiAgIC4uLiwgVmVyc2lvbmVkUGF0aFJlZmVyZW5jZTxPcGFxdWU+IOKGklxuICAgKiAgIC4uLiwgVmVyc2lvbmVkUGF0aFJlZmVyZW5jZTxib29sZWFuPlxuICAgKi9cbiAgSXNDb21wb25lbnQsXG5cbiAgLyoqXG4gICAqIE9wZXJhdGlvbjogUHVzaCB0aGUgY29udGVudCB0eXBlIG9udG8gdGhlIHN0YWNrLlxuICAgKlxuICAgKiBGb3JtYXQ6XG4gICAqICAgKENvbnRlbnRUeXBlKVxuICAgKiBPcGVyYW5kIFN0YWNrOlxuICAgKiAgIC4uLiwgVmVyc2lvbmVkUGF0aFJlZmVyZW5jZTxPcGFxdWU+IOKGklxuICAgKiAgIC4uLiwgVmVyc2lvbmVkUGF0aFJlZmVyZW5jZTxPcGFxdWU+LCBWZXJzaW9uZWRQYXRoUmVmZXJlbmNlPENvbnRlbnRUeXBlPlxuICAgKi9cbiAgQ29udGVudFR5cGUsXG5cbiAgLyoqXG4gICAqIE9wZXJhdGlvbjogQ3VycnkgYSBjb21wb25lbnQgZGVmaW5pdGlvbiBmb3IgYSBsYXRlciBpbnZvY2F0aW9uLlxuICAgKlxuICAgKiBGb3JtYXQ6XG4gICAqICAgKEN1cnJ5Q29tcG9uZW50IHRlbXBsYXRlTWV0YTojTG9jYXRvcilcbiAgICogT3BlcmFuZCBTdGFjazpcbiAgICogICAuLi4sIFZlcnNpb25lZFBhdGhSZWZlcmVuY2UsIFtWZXJzaW9uZWRQYXRoUmVmZXJlbmNlIC4uLl0sIEFyZ3VtZW50cyDihpJcbiAgICogICAuLi4sIHsgVmVyc2lvbmVkUGF0aFJlZmVyZW5jZSwgTG9jYXRvciwgQ2FwdHVyZWRBcmd1bWVudHMgfVxuICAgKi9cbiAgQ3VycnlDb21wb25lbnQsXG5cbiAgLyoqXG4gICAqIE9wZXJhdGlvbjogUHVzaCBhbiBhcHByb3ByaWF0ZSBjb21wb25lbnQgbWFuYWdlciBvbnRvIHRoZSBzdGFjay5cbiAgICpcbiAgICogRm9ybWF0OlxuICAgKiAgIChQdXNoQ29tcG9uZW50TWFuYWdlciAjQ29tcG9uZW50U3BlYylcbiAgICogT3BlcmFuZCBTdGFjazpcbiAgICogICAuLi4g4oaSXG4gICAqICAgLi4uLCB7IENvbXBvbmVudERlZmluaXRpb24sIENvbXBvbmVudE1hbmFnZXIgfVxuICAgKi9cbiAgUHVzaENvbXBvbmVudERlZmluaXRpb24sXG5cbiAgLyoqXG4gICAqIE9wZXJhdGlvbjpcbiAgICogICBQdXNoZXMgdGhlIENvbXBvbmVudEluc3RhbmNlIG9udG8gdGhlIHN0YWNrIHRoYXQgaXNcbiAgICogICB1c2VkIGR1cmluZyB0aGUgaW52b2tlLlxuICAgKlxuICAgKiBGb3JtYXQ6XG4gICAqICAgKFB1c2hEeW5hbWljQ29tcG9uZW50SW5zdGFuY2UpXG4gICAqIE9wZXJhbmQgU3RhY2s6XG4gICAqICAgLi4uLCBDb21wb25lbnREZWZpbml0aW9uIOKGklxuICAgKiAgIC4uLiwgeyBDb21wb25lbnREZWZpbml0aW9uLCBtYW5hZ2VyOiBudWxsLCBsYXlvdXQ6IG51bGwsIHN0YXRlOiBudWxsLCBoYW5kbGU6IG51bGwsIHRhYmxlOiBudWxsIH1cbiAgICovXG5cbiAgUHVzaER5bmFtaWNDb21wb25lbnRJbnN0YW5jZSxcblxuICAvKipcbiAgICogT3BlcmF0aW9uOlxuICAgKiAgIFB1c2hlcyBhIGN1cnJpZWQgY29tcG9uZW50IGRlZmluaXRpb24gb24gdG8gdGhlIHN0YWNrXG4gICAqXG4gICAqIEZvcm1hdDpcbiAgICogICAoUHVzaEN1cnJpZWRDb21wb25lbnQpXG4gICAqIE9wZXJhbmQgU3RhY2s6XG4gICAqICAgLi4uLCBWZXJzaW9uZWRQYXRoUmVmZXJlbmNlPE9wYXF1ZT4g4oaSXG4gICAqICAgLi4uLCBDb21wb25lbnREZWZpbml0aW9uXG4gICAqL1xuICBQdXNoQ3VycmllZENvbXBvbmVudCxcblxuICAvKipcbiAgICogT3BlcmF0aW9uOlxuICAgKiAgIFB1c2ggYSByZXNvbHZlZCBjb21wb25lbnQgZGVmaW5pdGlvbiBvbnRvIHRoZSBzdGFja1xuICAgKlxuICAgKiBGb3JtYXQ6XG4gICAqICAgKFJlc29sdmVEeW5hbWljQ29tcG9uZW50IHRlbXBsYXRlTWV0YTojTG9jYXRvcilcbiAgICogT3BlcmFuZCBTdGFjazpcbiAgICogICAuLi4sIFZlcnNpb25lZFBhdGhSZWZlcmVuY2U8T3BhcXVlPiDihpJcbiAgICogICAuLi4sIENvbXBvbmVudERlZmluaXRpb25cbiAgICovXG4gIFJlc29sdmVEeW5hbWljQ29tcG9uZW50LFxuXG4gIC8qKlxuICAgKiBPcGVyYXRpb246IFB1c2ggYSB1c2VyIHJlcHJlc2VudGF0aW9uIG9mIGFyZ3Mgb250byB0aGUgc3RhY2suXG4gICAqXG4gICAqIEZvcm1hdDpcbiAgICogICAoUHVzaEFyZ3MgbmFtZXM6I0FycmF5PCNzdHJpbmc+IHBvc2l0aW9uYWxDb3VudDp1MzIgc3ludGhldGljOiNib29sZWFuKVxuICAgKlxuICAgKiBPcGVyYW5kIFN0YWNrOlxuICAgKiAgIC4uLiwgW1ZlcnNpb25lZFBhdGhSZWZlcmVuY2UgLi4uXSAg4oaSXG4gICAqICAgLi4uLCBbVmVyc2lvbmVkUGF0aFJlZmVyZW5jZSAuLi5dLCBBcmd1bWVudHNcbiAgICpcbiAgICogRGVzY3JpcHRpb246XG4gICAqICAgVGhpcyBhcmd1bWVudHMgb2JqZWN0IGlzIG9ubHkgbmVjZXNzYXJ5IHdoZW4gY2FsbGluZyBpbnRvXG4gICAqICAgdXNlci1zcGVjaWZpZWQgaG9va3MuIEl0IGlzIG1lYW50IHRvIGJlIGltcGxlbWVudGVkIGFzIGFcbiAgICogICB0cmFuc2llbnQgcHJveHkgdGhhdCByZWFkcyBpbnRvIHRoZSBzdGFjayBhcyBuZWVkZWQuXG4gICAqICAgSG9sZGluZyBvbnRvIHRoZSBBcmd1bWVudHMgYWZ0ZXIgdGhlIGNhbGwgaGFzIGNvbXBsZXRlZCBpc1xuICAgKiAgIGlsbGVnYWwuXG4gICAqL1xuICBQdXNoQXJncyxcblxuICAvKipcbiAgICogT3BlcmF0aW9uOiBQdXNoIGVtcHR5IGFyZ3Mgb250byB0aGUgc3RhY2tcbiAgICpcbiAgICogRm9ybWF0OlxuICAgKiAgIChFbXB0eUFyZ3MpXG4gICAqXG4gICAqIE9wZXJhbmRTdGFjazpcbiAgICogICAuLi4g4oaSXG4gICAqICAgLi4uLCBBcmd1bWVudHNcbiAgICovXG4gIFB1c2hFbXB0eUFyZ3MsXG5cbiAgLyoqXG4gICAqIE9wZXJhdGlvbjogUG9wcyBBcmd1bWVudHMgZnJvbSB0aGUgc3RhY2sgYW5kIGNsZWFycyB0aGUgbmV4dCBOIGFyZ3MuXG4gICAqXG4gICAqIEZvcm1hdDpcbiAgICogICAoUG9wQXJncylcbiAgICpcbiAgICogT3BlcmFuZCBTdGFjazpcbiAgICogICAuLi4sIFtWZXJzaW9uZWRQYXRoUmVmZXJlbmNlIC4uLl0sIEFyZ3VtZW50cyAg4oaSXG4gICAqICAgLi4uXG4gICAqXG4gICAqIERlc2NyaXB0aW9uOlxuICAgKiBUaGUgYXJndW1lbnRzIG9iamVjdCBjb250YWlucyB0aGUgaW5mb3JtYXRpb24gb2YgaG93IG1hbnkgdXNlclxuICAgKiBzdXBwbGllZCBhcmdzIHRoZSBjb21wb25lbnQgd2FzIGludm9rZWQgd2l0aC4gVG8gY2xlYXIgdGhlbSBmcm9tXG4gICAqIHRoZSBzdGFjayB3ZSBtdXN0IHBvcCBpdCBmcm9tIHRoZSBzdGFjayBhbmQgY2FsbCBgY2xlYXJgIG9uIGl0XG4gICAqIHRvIHJlbW92ZSB0aGUgYXJndW1lbnQgdmFsdWVzIGZyb20gdGhlIHN0YWNrLlxuICAgKi9cbiAgUG9wQXJncyxcblxuICAvKipcbiAgICogT3BlcmF0aW9uOiAuLi5cbiAgICogRm9ybWF0OlxuICAgKiAgIChQcmVwYXJlQXJncyBzdGF0ZTpyZWdpc3RlcilcbiAgICogT3BlcmFuZCBTdGFjazpcbiAgICogICAuLi4g4oaSXG4gICAqICAgLi4uXG4gICAqL1xuICBQcmVwYXJlQXJncyxcblxuICAvKipcbiAgICogT3BlcmF0aW9uOiBSZXBsYWNlcyBBcmd1bWVudHMgb24gdGhlIHN0YWNrIHdpdGggQ2FwdHVyZWRBcmd1bWVudHNcbiAgICogRm9ybWF0OlxuICAgKiAgIChDYXB0dXJlQXJncylcbiAgICpcbiAgICogT3BlcmFuZCBTdGFjazpcbiAgICogICAuLi4sIEFyZ3VtZW50cyAg4oaSXG4gICAqICAgLi4uLCBDYXB0dXJlZEFyZ3VtZW50c1xuICAgKlxuICAgKiBEZXNjcmlwdGlvbjpcbiAgICogVGhlIEFyZ3VtZW50cyBvYmplY3QgaXMgbXV0YXRlZCBpbiBwbGFjZSBiZWNhdXNlIGl0IGlzIHVzdWFsbHkgY29uc3VtZWQgaW1tZWRpYXRlbHlcbiAgICogYWZ0ZXIgYmVpbmcgcHVzaGVkIG9uIHRvIHRoZSBzdGFjay4gSW4gc29tZSBzaXR1YXRpb25zLCBzdWNoIGFzIHdpdGggY3VycmllZCBjb21wb25lbnRzLFxuICAgKiBpbmZvcm1hdGlvbiBhYm91dCBtb3JlIHRoYW4gb25lIEFyZ3VtZW50IG1heSBuZWVkIHRvIGV4aXN0IG9uIHRoZSBzdGFjayBhdCBvbmNlLiBJbiB0aG9zZVxuICAgKiBjYXNlcywgdGhlIENhcHR1cmVBcmdzIGluc3RydWN0aW9uIHBvcHMgYW4gQXJndW1lbnRzIG9iamVjdCBvZmYgdGhlIHN0YWNrIGFuZCByZXBsYWNlcyBpdFxuICAgKiB3aXRoIHRoZSBpbW11dGFibGUgQ2FwdHVyZWRBcmdzIHNuYXBzaG90LlxuICAgKi9cbiAgQ2FwdHVyZUFyZ3MsXG5cbiAgLyoqXG4gICAqIE9wZXJhdGlvbjogQ3JlYXRlIHRoZSBjb21wb25lbnQgYW5kIHB1c2ggaXQgb250byB0aGUgc3RhY2suXG4gICAqIEZvcm1hdDpcbiAgICogICAoQ3JlYXRlQ29tcG9uZW50IGZsYWdzOnUzMiBzdGF0ZTpyZWdpc3RlcilcbiAgICogICAuLi4g4oaSXG4gICAqICAgLi4uXG4gICAqIERlc2NyaXB0aW9uOlxuICAgKiBPcGVyYW5kIFN0YWNrOlxuICAgKiAgIEZsYWdzOlxuICAgKlxuICAgKiAgICogMGIwMDE6IEhhcyBhIGRlZmF1bHQgYmxvY2tcbiAgICogICAqIDBiMDEwOiBIYXMgYW4gaW52ZXJzZSBibG9ja1xuICAgKi9cbiAgQ3JlYXRlQ29tcG9uZW50LFxuXG4gIC8qKlxuICAgKiBPcGVyYXRpb246IFJlZ2lzdGVyIGEgZGVzdHJ1Y3RvciBmb3IgdGhlIGN1cnJlbnQgY29tcG9uZW50XG4gICAqXG4gICAqIEZvcm1hdDpcbiAgICogICAoUmVnaXN0ZXJDb21wb25lbnREZXN0cnVjdG9yIHN0YXRlOnJlZ2lzdGVyKVxuICAgKiBPcGVyYW5kIFN0YWNrOlxuICAgKiAgIC4uLiDihpJcbiAgICogICAuLi5cbiAgICovXG4gIFJlZ2lzdGVyQ29tcG9uZW50RGVzdHJ1Y3RvcixcblxuICAvKipcbiAgICogT3BlcmF0aW9uOiBQdXNoIGEgbmV3IEVsZW1lbnRPcGVyYXRpb25zIGZvciB0aGUgY3VycmVudCBjb21wb25lbnQuXG4gICAqXG4gICAqIEZvcm1hdDpcbiAgICogICAoUHV0Q29tcG9uZW50T3BlcmF0aW9ucylcbiAgICogT3BlcmFuZCBTdGFjazpcbiAgICogICAuLi4g4oaSXG4gICAqICAgLi4uXG4gICAqL1xuICBQdXRDb21wb25lbnRPcGVyYXRpb25zLFxuXG4gIC8qKlxuICAgKiBPcGVyYXRpb246IFB1c2ggdGhlIGNvbXBvbmVudCdzIGBzZWxmYCBvbnRvIHRoZSBzdGFjay5cbiAgICpcbiAgICogRm9ybWF0OlxuICAgKiAgIChHZXRDb21wb25lbnRTZWxmIHN0YXRlOnJlZ2lzdGVyKVxuICAgKiBPcGVyYW5kIFN0YWNrOlxuICAgKiAgIC4uLiDihpJcbiAgICogICAuLi4sIFZlcnNpb25lZFBhdGhSZWZlcmVuY2VcbiAgICovXG4gIEdldENvbXBvbmVudFNlbGYsXG5cbiAgLyoqXG4gICAqIE9wZXJhdGlvbjogUHVzaCB0aGUgY29tcG9uZW50J3MgYHRhZ05hbWVgIG9udG8gdGhlIHN0YWNrLlxuICAgKlxuICAgKiBGb3JtYXQ6XG4gICAqICAgKEdldENvbXBvbmVudFRhZ05hbWUgc3RhdGU6cmVnaXN0ZXIpXG4gICAqIE9wZXJhbmQgU3RhY2s6XG4gICAqICAgLi4uIOKGklxuICAgKiAgIC4uLiwgT3B0aW9uPHN0cmluZz5cbiAgICovXG4gIEdldENvbXBvbmVudFRhZ05hbWUsXG5cbiAgLyoqXG4gICAqIE9wZXJhdGlvbjogR2V0IHRoZSBjb21wb25lbnQgbGF5b3V0IGZyb20gdGhlIG1hbmFnZXIuXG4gICAqXG4gICAqIEZvcm1hdDpcbiAgICogICAoR2V0Q29tcG9uZW50TGF5b3V0IHN0YXRlOnJlZ2lzdGVyKVxuICAgKiBPcGVyYW5kIFN0YWNrOlxuICAgKiAgIC4uLiDihpJcbiAgICogICAuLi4sIFByb2dyYW1TeW1ib2xUYWJsZSwgSGFuZGxlXG4gICAqL1xuICBHZXRDb21wb25lbnRMYXlvdXQsXG5cbiAgLyoqXG4gICAqIE9wZXJhdGlvbjogUG9wdWxhdGUgdGhlIGV2YWwgbG9va3VwIGlmIG5lY2Vzc2FyeS5cbiAgICpcbiAgICogRm9ybWF0OlxuICAgKiAgIChTZXR1cEZvckV2YWwgc3RhdGU6cmVnaXN0ZXIpXG4gICAqIE9wZXJhbmQgU3RhY2s6XG4gICAqICAgLi4uIOKGklxuICAgKiAgIC4uLlxuICAgKi9cbiAgU2V0dXBGb3JFdmFsLFxuXG4gIC8qKlxuICAgKiBPcGVyYXRpb246IFBvcHVsYXRlIHRoZSBldmFsIGxvb2t1cCBpZiBuZWNlc3NhcnkuXG4gICAqXG4gICAqIEZvcm1hdDpcbiAgICogICAoU2V0dXBGb3JFdmFsIHN0YXRlOnJlZ2lzdGVyKVxuICAgKiBPcGVyYW5kIFN0YWNrOlxuICAgKiAgIC4uLiDihpJcbiAgICogICAuLi5cbiAgICovXG4gIEJpbmRFdmFsU2NvcGUsXG5cbiAgLyoqXG4gICAqIE9wZXJhdGlvbjpcbiAgICogICBQb3B1bGF0ZSB0aGUgc3RhdGUgcmVnaXN0ZXIgd2l0aCB0aGUgbGF5b3V0IGN1cnJlbnRseVxuICAgKiAgIG9uIHRoZSBzdGFjay5cbiAgICpcbiAgICogRm9ybWF0OlxuICAgKiAgIChQb3B1bGF0ZUxheW91dCBzdGF0ZTpyZWdpc3RlcilcbiAgICogT3BlcmFuZCBTdGFjazpcbiAgICogICAuLi4sIFByb2dyYW1TeW1ib2xUYWJsZSwgSGFuZGxlIOKGklxuICAgKiAgIC4uLlxuICAgKi9cbiAgUG9wdWxhdGVMYXlvdXQsXG5cbiAgLyoqXG4gICAqIE9wZXJhdGlvbjogSW52b2tlIHRoZSBsYXlvdXQgcmV0dXJuZWQgYnkgdGhlIG1hbmFnZXIuXG4gICAqXG4gICAqIEZvcm1hdDpcbiAgICogICAoSW52b2tlQ29tcG9uZW50TGF5b3V0IHN0YXRlOnJlZ2lzdGVyKVxuICAgKiBPcGVyYW5kIFN0YWNrOlxuICAgKiAgIC4uLiDihpJcbiAgICogICAuLi5cbiAgICovXG4gIEludm9rZUNvbXBvbmVudExheW91dCxcblxuICAvKipcbiAgICogT3BlcmF0aW9uOiBCZWdpbiBhIG5ldyBjYWNoZSBncm91cFxuICAgKlxuICAgKiBGb3JtYXQ6XG4gICAqICAgKEJlZ2luQ29tcG9uZW50VHJhbnNhY3Rpb24pXG4gICAqIE9wZXJhbmQgU3RhY2s6XG4gICAqICAgLi4uLCBDb21wb25lbnRNYW5hZ2VyPFQ+LCBUIOKGklxuICAgKiAgIC4uLiwgQ29tcG9uZW50TWFuYWdlcjxUPiwgVFxuICAgKi9cbiAgQmVnaW5Db21wb25lbnRUcmFuc2FjdGlvbixcblxuICAvKipcbiAgICogT3BlcmF0aW9uOiBDb21taXQgdGhlIGN1cnJlbnQgY2FjaGUgZ3JvdXBcbiAgICpcbiAgICogRm9ybWF0OlxuICAgKiAgIChDb21taXRDb21wb25lbnRUcmFuc2FjdGlvbilcbiAgICogT3BlcmFuZCBTdGFjazpcbiAgICogICAuLi4g4oaSXG4gICAqICAgLi4uXG4gICAqL1xuICBDb21taXRDb21wb25lbnRUcmFuc2FjdGlvbixcblxuICAvKipcbiAgICogT3BlcmF0aW9uOiBJbnZva2UgZGlkQ3JlYXRlRWxlbWVudCBvbiB0aGUgY3VycmVudCBjb21wb25lbnQgbWFuYWdlclxuICAgKlxuICAgKiBGb3JtYXQ6XG4gICAqICAgKERpZENyZWF0ZUVsZW1lbnQgc3RhdGU6cmVnaXN0ZXIpXG4gICAqIE9wZXJhbmQgU3RhY2s6XG4gICAqICAgLi4uIOKGklxuICAgKiAgIC4uLlxuICAgKi9cbiAgRGlkQ3JlYXRlRWxlbWVudCxcblxuICAvKipcbiAgICogT3BlcmF0aW9uOiBJbnZva2UgZGlkUmVuZGVyTGF5b3V0IG9uIHRoZSBjdXJyZW50IGNvbXBvbmVudCBtYW5hZ2VyXG4gICAqXG4gICAqIEZvcm1hdDpcbiAgICogICAoRGlkUmVuZGVyTGF5b3V0IHN0YXRlOnJlZ2lzdGVyKVxuICAgKiBPcGVyYW5kIFN0YWNrOlxuICAgKiAgIC4uLiwg4oaSXG4gICAqICAgLi4uXG4gICAqL1xuICBEaWRSZW5kZXJMYXlvdXQsXG5cbiAgLy8vIFBBUlRJQUxTXG5cbiAgLyoqXG4gICAqIE9wZXJhdGlvbjogTG9va3VwIGFuZCBpbnZva2UgYSBwYXJ0aWFsIHRlbXBsYXRlLlxuICAgKlxuICAgKiBGb3JtYXQ6XG4gICAqICAgKEludm9rZVBhcnRpYWwgdGVtcGxhdGVNZXRhOiNMb2NhdG9yIHN5bWJvbHM6I0FycmF5PCNzdHJpbmc+IGV2YWxJbmZvOiNBcnJheTxudW1iZXI+KVxuICAgKiBPcGVyYW5kIFN0YWNrOlxuICAgKiAgIC4uLiwgVmVyc2lvbmVkUGF0aFJlZmVyZW5jZTxzdHJpbmc+IOKGklxuICAgKiAgIC4uLlxuICAgKi9cbiAgSW52b2tlUGFydGlhbCxcblxuICAvKipcbiAgICogT3BlcmF0aW9uOlxuICAgKiAgIFJlc29sdmUge3tmb299fSBpbnNpZGUgYSBwYXJ0aWFsLCB3aGljaCBjb3VsZCBiZSBlaXRoZXIgYSBzZWxmLWxvb2t1cFxuICAgKiAgIG9yIGEgbG9jYWwgdmFyaWFibGUgdGhhdCBpcyBpbi1zY29wZSBmb3IgdGhlIGNhbGxlci5cbiAgICpcbiAgICogRm9ybWF0OlxuICAgKiAgIChSZXNvbHZlTWF5YmVMb2NhbCBsb2NhbDojc3RyaW5nKVxuICAgKiBPcGVyYW5kIFN0YWNrOlxuICAgKiAgIC4uLiDihpJcbiAgICogICAuLi4sIFZlcnNpb25lZFBhdGhSZWZlcmVuY2VcbiAgICovXG4gIFJlc29sdmVNYXliZUxvY2FsLFxuXG4gIC8vLyBERUJVR0dFUlxuXG4gIC8qKlxuICAgKiBPcGVyYXRpb246IEFjdGl2YXRlIHRoZSBkZWJ1Z2dlclxuICAgKlxuICAgKiBGb3JtYXQ6XG4gICAqICAgKERlYnVnZ2VyIHN5bWJvbHM6I0FycmF5PHN0cmluZz4gZXZhbEluZm86I0FycmF5PG51bWJlcj4pXG4gICAqIE9wZXJhbmQgU3RhY2s6XG4gICAqICAgLi4uIOKGklxuICAgKiAgIC4uLlxuICAgKi9cbiAgRGVidWdnZXIsXG5cbiAgLyoqIFRoZSBzaXplIG9mIHRoZSBvcGNvZGUgbGlzdCAqL1xuICBTaXplLFxufVxuIl19
"use strict";
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3Bjb2Rlcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3BhY2thZ2VzL0BnbGltbWVyL3ZtL2xpYi9vcGNvZGVzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgY29uc3QgZW51bSBPcCB7XG4gIC8qXG4gICAgRG9jdW1lbnRhdGlvbiBUT0RPOlxuXG4gICAgRG9jdW1lbnQgdGhlIGxvY2FsIHZhcmlhYmxlIGxheW91dCBpbiB0aGUgc3RhY2tcbiAgICBkaWFncmFtIGJlZm9yZS1hbmQtYWZ0ZXIuXG5cbiAgICBEb2N1bWVudCB1cGRhdGluZyBvcGNvZGVzIGVtaXR0aW5nIGZyb20gdW5yZWFjaGFibGVcbiAgICBhcHBlbmQgb3Bjb2RlLlxuXG4gICAgRG9jdW1lbnQgdGhlIGVsZW1lbnQgc3RhY2ssIGJsb2NrIHN0YWNrIGFuZCBMaXN0XG4gICAgYmxvY2sgc3RhY2suXG4gICAqL1xuXG4gIC8qKlxuICAgKiBUaGlzIG9wY29kZSBzaG91bGQgbmV2ZXIgYmUgcmVhY2hlZC5cbiAgICovXG4gIEJ1ZyxcblxuICAvLy8gRVhQUkVTU0lPTlNcblxuICAvKipcbiAgICogT3BlcmF0aW9uOiBFdmFsdWF0ZSBhIEhlbHBlci5cbiAgICogRm9ybWF0OlxuICAgKiAgIChIZWxwZXIgaGVscGVyOiNGdW5jdGlvbilcbiAgICogT3BlcmFuZCBTdGFjazpcbiAgICogICAuLi4sIFtWZXJzaW9uZWRQYXRoUmVmZXJlbmNlIC4uLl0sIEFyZ3VtZW50cyDihpJcbiAgICogICAuLi4sIFZlcnNpb25lZFBhdGhSZWZlcmVuY2VcbiAgICovXG4gIEhlbHBlcixcblxuICAvKipcbiAgICogT3BlcmF0aW9uOlxuICAgKiAgIEJpbmQgdGhlIG5hbWVkIGFyZ3VtZW50cyBpbiB0aGUgQXJndW1lbnRzIHRvIHRoZSBzeW1ib2xzXG4gICAqICAgc3BlY2lmaWVkIGJ5IHRoZSBzeW1ib2wgdGFibGUgaW4gdGhlIGNvbXBvbmVudCBzdGF0ZSBhdCByZWdpc3Rlci5cbiAgICogRm9ybWF0OlxuICAgKiAgIChTZXROYW1lZFZhcmlhYmxlcyByZWdpc3Rlcjp1MzIpXG4gICAqIE9wZXJhbmQgU3RhY2s6XG4gICAqICAgLi4uLCBBcmd1bWVudHMg4oaSXG4gICAqICAgLi4uXG4gICAqL1xuICBTZXROYW1lZFZhcmlhYmxlcyxcblxuICAvKipcbiAgICogT3BlcmF0aW9uOlxuICAgKiAgIEJpbmQgdGhlIGJsb2NrcyBpbiB0aGUgQXJndW1lbnRzIHRvIHRoZSBzeW1ib2xzIHNwZWNpZmllZCBieSB0aGVcbiAgICogICBzeW1ib2wgdGFibGUgaW4gdGhlIGNvbXBvbmVudCBzdGF0ZSBhdCByZWdpc3Rlci5cbiAgICogRm9ybWF0OlxuICAgKiAgIChTZXRCbG9ja3MgcmVnaXN0ZXI6dTMyKVxuICAgKiBPcGVyYW5kIFN0YWNrOlxuICAgKiAgIC4uLiwgQXJndW1lbnRzIOKGklxuICAgKiAgIC4uLlxuICAgKi9cbiAgU2V0QmxvY2tzLFxuXG4gIC8qKlxuICAgKiBPcGVyYXRpb246XG4gICAqICAgQmluZCB0aGUgdmFyaWFibGUgcmVwcmVzZW50ZWQgYnkgYSBzeW1ib2wgZnJvbVxuICAgKiAgIHRoZSB2YWx1ZSBhdCB0aGUgdG9wIG9mIHRoZSBzdGFjay5cbiAgICogRm9ybWF0OlxuICAgKiAgIChTZXRWYXJpYWJsZSBzeW1ib2w6dTMyKVxuICAgKiBPcGVyYW5kIFN0YWNrOlxuICAgKiAgIC4uLiwgVmVyc2lvbmVkUGF0aFJlZmVyZW5jZSDihpJcbiAgICogICAuLi5cbiAgICovXG4gIFNldFZhcmlhYmxlLFxuXG4gIC8qKlxuICAgKiBPcGVyYXRpb246XG4gICAqICAgQmluZCB0aGUgYmxvY2sgYXQgdGhlIHRvcCBvZiB0aGUgc3RhY2suXG4gICAqIEZvcm1hdDpcbiAgICogICAoU2V0QmxvY2sgc3ltYm9sOnUzMilcbiAgICogT3BlcmFuZCBTdGFjazpcbiAgICogICAuLi4sIFN5bWJvbFRhYmxlLCBIYW5kbGUg4oaSXG4gICAqICAgLi4uXG4gICAqL1xuICBTZXRCbG9jayxcblxuICAvKipcbiAgICogT3BlcmF0aW9uOlxuICAgKiAgIFB1c2ggdGhlIGNvbnRlbnRzIG9mIHRoZSB2YXJpYWJsZSByZXByZXNlbnRlZCBieVxuICAgKiAgIGEgc3ltYm9sIChhIHBvc2l0aW9uYWwgb3IgbmFtZWQgYXJndW1lbnQpIG9udG9cbiAgICogICB0aGUgc3RhY2suXG4gICAqIEZvcm1hdDpcbiAgICogICAoUHVzaFN5bWJvbCBzeW1ib2w6dTMyKVxuICAgKiBPcGVyYW5kIFN0YWNrOlxuICAgKiAgIC4uLiDihpJcbiAgICogICAuLi4sIFZlcnNpb25lZFBhdGhSZWZlcmVuY2VcbiAgICovXG4gIEdldFZhcmlhYmxlLFxuXG4gIC8qKlxuICAgKiBPcGVyYXRpb246XG4gICAqICAgUG9wIGEgVmVyc2lvbmVkUGF0aFJlZmVyZW5jZSBmcm9tIHRoZSB0b3Agb2YgdGhlXG4gICAqICAgc3RhY2ssIGFuZCBwdXNoIGEgVmVyc2lvbmVkUGF0aFJlZmVyZW5jZSBjb25zdHJ1Y3RlZFxuICAgKiAgIGJ5IGAuZ2V0KHByb3BlcnR5KWAuXG4gICAqIEZvcm1hdDpcbiAgICogICAoR2V0UHJvcGVydHkgcHJvcGVydHk6I3N0cmluZylcbiAgICogT3BlcmFuZCBTdGFjazpcbiAgICogICAuLi4sIFZlcnNpb25lZFBhdGhSZWZlcmVuY2Ug4oaSXG4gICAqICAgLi4uLCBWZXJzaW9uZWRQYXRoUmVmZXJlbmNlXG4gICAqL1xuICBHZXRQcm9wZXJ0eSxcblxuICAvKipcbiAgICogT3BlcmF0aW9uOiBQdXNoIHRoZSBzcGVjaWZpZWQgYm91bmQgYmxvY2sgb250byB0aGUgc3RhY2suXG4gICAqIEZvcm1hdDpcbiAgICogICAoR2V0QmxvY2sgYmxvY2s6dTMyKVxuICAgKiBPcGVyYW5kIFN0YWNrOlxuICAgKiAgIC4uLiDihpJcbiAgICogICAuLi4sIElubGluZUJsb2NrXG4gICAqL1xuICBHZXRCbG9jayxcblxuICAvKipcbiAgICogT3BlcmF0aW9uOlxuICAgKiAgIFB1c2ggVFJVRSBvbnRvIHRoZSBzdGFjayBpZiB0aGUgc3BlY2lmaWVkIGJsb2NrXG4gICAqICAgaXMgYm91bmQgYW5kIEZBTFNFIGlmIGl0IGlzIG5vdC5cbiAgICogRm9ybWF0OlxuICAgKiAgIChIYXNCbG9jayBibG9jazp1MzIpXG4gICAqIE9wZXJhbmQgU3RhY2s6XG4gICAqICAgLi4uIOKGklxuICAgKiAgIC4uLiwgYm9vbGVhblxuICAgKi9cbiAgSGFzQmxvY2ssXG5cbiAgLyoqXG4gICAqIE9wZXJhdGlvbjpcbiAgICogICBQdXNoIFRSVUUgb250byB0aGUgc3RhY2sgaWYgdGhlIHNwZWNpZmllZCBibG9ja1xuICAgKiAgIGlzIGJvdW5kICphbmQqIGhhcyBhdCBsZWFzdCBvbmUgc3BlY2lmaWVkIGZvcm1hbFxuICAgKiAgIHBhcmFtZXRlciwgYW5kIEZBTFNFIG90aGVyd2lzZS5cbiAgICogRm9ybWF0OlxuICAgKiAgIChIYXNCbG9ja1BhcmFtcyBibG9jazp1MzIpXG4gICAqIE9wZXJhbmQgU3RhY2s6XG4gICAqICAgLi4uIOKGklxuICAgKiAgIC4uLiwgVmVyc2lvbmVkUGF0aFJlZmVyZW5jZSAoYm9vbGVhbilcbiAgICovXG4gIEhhc0Jsb2NrUGFyYW1zLFxuXG4gIC8qKlxuICAgKiBPcGVyYXRpb246XG4gICAqICAgUG9wIGNvdW50IGBWZXJzaW9uZWRQYXRoUmVmZXJlbmNlYHMgb2ZmIHRoZSBzdGFjayBhbmRcbiAgICogICBjb25zdHJ1Y3QgYSBuZXcgQ29uY2F0UmVmZXJlbmNlIGZyb20gdGhlbSAoaW4gcmV2ZXJzZVxuICAgKiAgIG9yZGVyKS5cbiAgICogRm9ybWF0OlxuICAgKiAgIChDb25jYXQgY291bnQ6dTMyKVxuICAgKiBPcGVyYW5kIFN0YWNrOlxuICAgKiAgIC4uLiwgVmVyc2lvbmVkUGF0aFJlZmVyZW5jZSwgW1ZlcnNpb25lZFBhdGhSZWZlcmVuY2UgLi4uXSDihpJcbiAgICogICAuLi4sIENvbmNhdFJlZmVyZW5jZVxuICAgKi9cbiAgQ29uY2F0LFxuXG4gIC8qKlxuICAgKiBPcGVyYXRpb246XG4gICAqICAgUHVzaCBhbiBPYmplY3QgY29uc3RhbnQgb250byB0aGUgc3RhY2sgdGhhdCBpcyBub3RcbiAgICogICBhIEphdmFTY3JpcHQgcHJpbWl0aXZlLlxuICAgKiBGb3JtYXQ6XG4gICAqICAgKFB1c2hDb25zdGFudCBjb25zdGFudDojT2JqZWN0KVxuICAgKiBPcGVyYW5kIFN0YWNrOlxuICAgKiAgIC4uLiDihpJcbiAgICogICAuLi4sIE9wYXF1ZVxuICAgKi9cbiAgQ29uc3RhbnQsXG5cbiAgLyoqXG4gICAqIE9wZXJhdGlvbjpcbiAgICogICBXcmFwIGEgSmF2YVNjcmlwdCBwcmltaXRpdmUgaW4gYSByZWZlcmVuY2UgYW5kIHB1c2ggaXRcbiAgICogICBvbnRvIHRoZSBzdGFjay5cbiAgICogRm9ybWF0OlxuICAgKiAgIChQdXNoUHJpbWl0aXZlIGNvbnN0YW50OiNQcmltaXRpdmUpXG4gICAqIE9wZXJhbmQgU3RhY2s6XG4gICAqICAgLi4uIOKGklxuICAgKiAgIC4uLiwgUHJpbWl0aXZlXG4gICAqIERlc2NyaXB0aW9uOlxuICAgKiAgIFRoZSB0d28gaGlnaCBiaXRzIG9mIHRoZSBjb25zdGFudCByZWZlcmVuY2UgZGVzY3JpYmVcbiAgICogICB0aGUga2luZCBvZiBwcmltaXRpdmU6XG4gICAqXG4gICAqICAgMDA6IG51bWJlclxuICAgKiAgIDAxOiBzdHJpbmdcbiAgICogICAxMDogdHJ1ZSB8IGZhbHNlIHwgbnVsbCB8IHVuZGVmaW5lZFxuICAgKi9cbiAgUHJpbWl0aXZlLFxuXG4gIC8qKlxuICAgKiBPcGVyYXRpb246IENvbnZlcnQgdGhlIHRvcCBvZiB0aGUgc3RhY2sgaW50byBhIHByaW1pdGl2ZSByZWZlcmVuY2UuXG4gICAqXG4gICAqIEZvcm1hdDpcbiAgICogICAoUHJpbWl0aXZlUmVmZXJlbmNlKVxuICAgKiBPcGVyYW5kIFN0YWNrOlxuICAgKiAgIC4uLiwgUHJpbWl0aXZlIOKGklxuICAgKiAgIC4uLiwgVmVyc2lvbmVkUGF0aFJlZmVyZW5jZTxQcmltaXRpdmU+XG4gICAqL1xuICBQcmltaXRpdmVSZWZlcmVuY2UsXG5cbiAgLyoqXG4gICAqIE9wZXJhdGlvbjogQ29udmVydCB0aGUgdG9wIG9mIHRoZSBzdGFjayBpbnRvIGEgbnVtYmVyLlxuICAgKlxuICAgKiBGb3JtYXQ6XG4gICAqICAgKFJlaWZ5VTMyKVxuICAgKiBPcGVyYW5kIFN0YWNrOlxuICAgKiAgIC4uLiwgVmVyc2lvbmVkUGF0aFJlZmVyZW5jZTx1MzI+IOKGklxuICAgKiAgIC4uLiwgVmVyc2lvbmVkUGF0aFJlZmVyZW5jZTx1MzI+LCB1MzJcbiAgICovXG4gIFJlaWZ5VTMyLFxuXG4gIC8qKlxuICAgKiBPcGVyYXRpb246IER1cGxpY2F0ZSBhbmQgcHVzaCBpdGVtIGZyb20gYW4gb2Zmc2V0IGluIHRoZSBzdGFjay5cbiAgICogRm9ybWF0OlxuICAgKiAgIChEdXAgcmVnaXN0ZXI6dTMyLCBvZmZzZXQ6dTMyKVxuICAgKiBPcGVyYW5kIFN0YWNrOlxuICAgKiAgIC4uLiwgT3BhcXVlIOKGklxuICAgKiAgIC4uLiwgT3BhcXVlLCBPcGFxdWVcbiAgICovXG4gIER1cCxcblxuICAvKipcbiAgICogT3BlcmF0aW9uOiBQb3AgTiBpdGVtcyBvZmYgdGhlIHN0YWNrIGFuZCB0aHJvdyBhd2F5IHRoZSB2YWx1ZS5cbiAgICogRm9ybWF0OlxuICAgKiAgIChQb3ApXG4gICAqIE9wZXJhbmQgU3RhY2s6XG4gICAqICAgLi4uLCBPcGFxdWUsIC4uLiwgT3BhcXVlIOKGklxuICAgKiAgIC4uLlxuICAgKi9cbiAgUG9wLFxuXG4gIC8qKlxuICAgKiBPcGVyYXRpb246IExvYWQgYSB2YWx1ZSBpbnRvIGEgcmVnaXN0ZXJcbiAgICogRm9ybWF0OlxuICAgKiAgIChMb2FkIHJlZ2lzdGVyOnUzMilcbiAgICogT3BlcmFuZCBTdGFjazpcbiAgICogICAuLi4sIE9wYXF1ZSDihpJcbiAgICogICAuLi5cbiAgICovXG4gIExvYWQsXG5cbiAgLyoqXG4gICAqIE9wZXJhdGlvbjogRmV0Y2ggYSB2YWx1ZSBmcm9tIGEgcmVnaXN0ZXJcbiAgICogRm9ybWF0OlxuICAgKiAgIChGZXRjaCByZWdpc3Rlcjp1MzIpXG4gICAqIE9wZXJhbmQgU3RhY2s6XG4gICAqICAgLi4uIOKGklxuICAgKiAgIC4uLiwgT3BhcXVlXG4gICAqL1xuICBGZXRjaCxcblxuICAvLy8gUFJFTFVERSAmIEVYSVRcblxuICAvKipcbiAgICogT3BlcmF0aW9uOiBQdXNoIGEgbmV3IHJvb3Qgc2NvcGUgb250byB0aGUgc2NvcGUgc3RhY2suXG4gICAqXG4gICAqIEZvcm1hdDpcbiAgICogICAoUm9vdFNjb3BlIHN5bWJvbHM6dTMyIGJpbmRDYWxsZXJTY29wZTpib29sKVxuICAgKiBPcGVyYW5kIFN0YWNrOlxuICAgKiAgIC4uLiDihpJcbiAgICogICAuLi5cbiAgICogRGVzY3JpcHRpb246XG4gICAqICAgQSByb290IHNjb3BlIGhhcyBubyBwYXJlbnQgc2NvcGUsIGFuZCB0aGVyZWZvcmUgaW5oZXJpdHMgbm8gbGV4aWNhbFxuICAgKiAgIHZhcmlhYmxlcy4gSWYgYGJpbmRDYWxsZXJTY29wZWAgaXMgYHRydWVgLCB0aGUgY3VycmVudCBzY29wZSByZW1lbWJlcnNcbiAgICogICB0aGUgY2FsbGVyIHNjb3BlIChmb3IgeWllbGRpbmcgYmxvY2tzKS5cbiAgICovXG4gIFJvb3RTY29wZSxcblxuICAvKipcbiAgICogT3BlcmF0aW9uOiBQdXNoIGEgbmV3IHJvb3Qgc2NvcGUgb250byB0aGUgc2NvcGUgc3RhY2suXG4gICAqXG4gICAqIEZvcm1hdDpcbiAgICogICAoVmlydHVhbFJvb3RTY29wZSByZWdpc3Rlcjp1MzIpXG4gICAqIE9wZXJhbmQgU3RhY2s6XG4gICAqICAgLi4uIOKGklxuICAgKiAgIC4uLlxuICAgKiBEZXNjcmlwdGlvbjpcbiAgICogICBUaGUgc3ltYm9sIGNvdW50IGlzIGRldGVybWluZWQgYnkgdGhlIGNvbXBvbmVudCBzdGF0ZSBpblxuICAgKiAgIHRoZSBzcGVjaWZpZWQgcmVnaXN0ZXIuXG4gICAqL1xuICBWaXJ0dWFsUm9vdFNjb3BlLFxuXG4gIC8qKlxuICAgKiBPcGVyYXRpb246IFB1c2ggYSBuZXcgY2hpbGQgc2NvcGUgb250byB0aGUgc2NvcGUgc3RhY2suXG4gICAqXG4gICAqIEZvcm1hdDpcbiAgICogICAoQ2hpbGRTY29wZSlcbiAgICogT3BlcmFuZCBTdGFjazpcbiAgICogICAuLi4g4oaSXG4gICAqICAgLi4uXG4gICAqIERlc2NyaXB0aW9uOlxuICAgKiAgIEEgY2hpbGQgc2NvcGUgaW5oZXJpdHMgZnJvbSB0aGUgY3VycmVudCBwYXJlbnQgc2NvcGUsIGFuZCB0aGVyZWZvcmVcbiAgICogICBzaGFyZXMgaXRzIGxleGljYWwgdmFyaWFibGVzLlxuICAgKi9cbiAgQ2hpbGRTY29wZSxcblxuICAvKipcbiAgICogT3BlcmF0aW9uOiBQb3AgdGhlIGN1cnJlbnQgc2NvcGUgZnJvbSB0aGUgc2NvcGUgc3RhY2suXG4gICAqIEZvcm1hdDpcbiAgICogICAoUG9wU2NvcGUpXG4gICAqIE9wZXJhbmQgU3RhY2s6XG4gICAqICAgLi4uIOKGklxuICAgKiAgIC4uLlxuICAgKi9cbiAgUG9wU2NvcGUsXG5cbiAgLyoqXG4gICAqIE9wZXJhdGlvbjogUmV0dXJuIHRvIHRoZSBwcmV2aW91cyBmcmFtZS5cbiAgICogRm9ybWF0OlxuICAgKiAgIChSZXR1cm4pXG4gICAqIE9wZXJhbmQgU3RhY2s6XG4gICAqICAgLi4uLCBhZGRyZXNzOm51bWJlciDihpJcbiAgICogICAuLi5cbiAgICovXG4gIFJldHVybixcblxuICAvKipcbiAgICogT3BlcmF0aW9uOiBSZXR1cm4gdG8gYSBwbGFjZSBpbiB0aGUgcHJvZ3JhbSBnaXZlbiBhbiBvZmZzZXRcbiAgICogRm9ybWF0OlxuICAgKiAgKFJldHVyblRvIG9mZnNldDppMzIpXG4gICAqIE9wZXJhbmQgU3RhY2s6XG4gICAqICAgIC4uLiDihpJcbiAgICovXG4gIFJldHVyblRvLFxuXG4gIC8vLyBIVE1MXG5cbiAgLyoqXG4gICAqIE9wZXJhdGlvbjogQXBwZW5kIGEgVGV4dCBub2RlIHdpdGggdmFsdWUgYGNvbnRlbnRzYFxuICAgKiBGb3JtYXQ6XG4gICAqICAgKFRleHQgY29udGVudHM6I3N0cmluZylcbiAgICogT3BlcmFuZCBTdGFjazpcbiAgICogICAuLi4g4oaSXG4gICAqICAgLi4uXG4gICAqL1xuICBUZXh0LFxuXG4gIC8qKlxuICAgKiBPcGVyYXRpb246IEFwcGVuZCBhIENvbW1lbnQgbm9kZSB3aXRoIHZhbHVlIGBjb250ZW50c2BcbiAgICogRm9ybWF0OlxuICAgKiAgIChDb21tZW50IGNvbnRlbnRzOiNzdHJpbmcpXG4gICAqIE9wZXJhbmQgU3RhY2s6XG4gICAqICAgLi4uIOKGklxuICAgKiAgIC4uLlxuICAgKi9cbiAgQ29tbWVudCxcblxuICAvKipcbiAgICogT3BlcmF0aW9uOiBBcHBlbmQgY29udGVudCBhcyBIVE1MLlxuICAgKiBGb3JtYXQ6XG4gICAqICAgKEFwcGVuZEhUTUwpXG4gICAqIE9wZXJhbmQgU3RhY2s6XG4gICAqICAgLi4uLCBWZXJzaW9uZWRQYXRoUmVmZXJlbmNlPHN0cmluZz4g4oaSXG4gICAqICAgLi4uXG4gICAqL1xuICBBcHBlbmRIVE1MLFxuXG4gIC8qKlxuICAgKiBPcGVyYXRpb246IEFwcGVuZCBTYWZlSFRNTCBhcyBIVE1MLlxuICAgKiBGb3JtYXQ6XG4gICAqICAgKEFwcGVuZFNhZmVIVE1MKVxuICAgKiBPcGVyYW5kIFN0YWNrOlxuICAgKiAgIC4uLiwgVmVyc2lvbmVkUGF0aFJlZmVyZW5jZTxTYWZlSFRNTD4g4oaSXG4gICAqICAgLi4uXG4gICAqL1xuICBBcHBlbmRTYWZlSFRNTCxcblxuICAvKipcbiAgICogT3BlcmF0aW9uOiBBcHBlbmQgRG9jdW1lbnRGcmFnbWVudC5cbiAgICogRm9ybWF0OlxuICAgKiAgIChBcHBlbmRGcmFnbWVudClcbiAgICogT3BlcmFuZCBTdGFjazpcbiAgICogICAuLi4sIFZlcnNpb25lZFBhdGhSZWZlcmVuY2U8RG9jdW1lbnRGcmFnbWVudD4g4oaSXG4gICAqICAgLi4uXG4gICAqL1xuICBBcHBlbmREb2N1bWVudEZyYWdtZW50LFxuXG4gIC8qKlxuICAgKiBPcGVyYXRpb246IEFwcGVuZCBOb2RlLlxuICAgKiBGb3JtYXQ6XG4gICAqICAgKEFwcGVuZEZyYWdtZW50KVxuICAgKiBPcGVyYW5kIFN0YWNrOlxuICAgKiAgIC4uLiwgVmVyc2lvbmVkUGF0aFJlZmVyZW5jZTxOb2RlPiDihpJcbiAgICogICAuLi5cbiAgICovXG4gIEFwcGVuZE5vZGUsXG5cbiAgLyoqXG4gICAqIE9wZXJhdGlvbjogQXBwZW5kIGNvbnRlbnQgYXMgdGV4dC5cbiAgICogRm9ybWF0OlxuICAgKiAgIChBcHBlbmRUZXh0KVxuICAgKiBPcGVyYW5kIFN0YWNrOlxuICAgKiAgIC4uLiwgVmVyc2lvbmVkUGF0aFJlZmVyZW5jZTxzdHJpbmc+IOKGklxuICAgKiAgIC4uLlxuICAgKi9cbiAgQXBwZW5kVGV4dCxcblxuICAvKipcbiAgICogT3BlcmF0aW9uOiBPcGVuIGEgbmV3IEVsZW1lbnQgbmFtZWQgYHRhZ2AuXG4gICAqIEZvcm1hdDpcbiAgICogICAoT3BlbkVsZW1lbnQgdGFnOiNzdHJpbmcpXG4gICAqIE9wZXJhbmQgU3RhY2s6XG4gICAqICAgLi4uIOKGklxuICAgKiAgIC4uLlxuICAgKi9cbiAgT3BlbkVsZW1lbnQsXG5cbiAgLyoqXG4gICAqIE9wZXJhdGlvbjpcbiAgICogICBPcGVuIGEgbmV3IEVsZW1lbnQgd2l0aCBhIG5hbWUgb24gdGhlIHN0YWNrIGFuZCB3aXRoIHNwZWNpYWxcbiAgICogICBvcGVyYXRpb25zIHByb3ZpZGVkIG9uIHRoZSBzdGFjay5cbiAgICogRm9ybWF0OlxuICAgKiAgIChPcGVuRHluYW1pY0VsZW1lbnQpXG4gICAqIE9wZXJhbmQgU3RhY2s6XG4gICAqICAgLi4uLCBzdHJpbmcsIEVsZW1lbnRPcGVyYXRpb25zIOKGklxuICAgKiAgIC4uLlxuICAgKi9cbiAgT3BlbkR5bmFtaWNFbGVtZW50LFxuXG4gIC8qKlxuICAgKiBPcGVyYXRpb246IEFkZCBhbiBhdHRyaWJ1dGUgdG8gdGhlIGN1cnJlbnQgRWxlbWVudC5cbiAgICogRm9ybWF0OlxuICAgKiAgIChTdGF0aWNBdHRyIG5hbWU6I3N0cmluZyB2YWx1ZTojc3RyaW5nIG5hbWVzcGFjZTpPcHRpb248I3N0cmluZz4pXG4gICAqIE9wZXJhbmQgU3RhY2s6XG4gICAqICAgLi4uIOKGklxuICAgKiAgIC4uLlxuICAgKi9cbiAgU3RhdGljQXR0cixcblxuICAvKipcbiAgICogT3BlcmF0aW9uOlxuICAgKiAgIEFkZCBhbiBhdHRyaWJ1dGUgdG8gdGhlIGN1cnJlbnQgZWxlbWVudCB1c2luZyB0aGUgdmFsdWVcbiAgICogICBhdCB0aGUgdG9wIG9mIHRoZSBzdGFjay5cbiAgICpcbiAgICogRm9ybWF0OlxuICAgKiAgIChEeW5hbWljQXR0ciBuYW1lOiNzdHJpbmcgdHJ1c3Rpbmc6Ym9vbGVhbiBuYW1lc3BhY2U6T3B0aW9uPCNzdHJpbmc+KVxuICAgKiBPcGVyYW5kIFN0YWNrOlxuICAgKiAgIC4uLiwgVmVyc2lvbmVkUGF0aFJlZmVyZW5jZSDihpJcbiAgICogICAuLi5cbiAgICogRGVzY3JpcHRpb246XG4gICAqICAgSWYgYHRydXN0aW5nYCBpcyBmYWxzZSwgdGhlIGhvc3QgbWF5IHNhbml0aXplIHRoZSBhdHRyaWJ1dGVcbiAgICogICBiYXNlZCB1cG9uIGtub3duIHJpc2tzLlxuICAgKi9cbiAgRHluYW1pY0F0dHIsXG5cbiAgLyoqXG4gICAqIE9wZXJhdGlvbjpcbiAgICogICBBZGQgYW4gYXR0cmlidXRlIHRvIHRoZSBjdXJyZW50IGVsZW1lbnQgdXNpbmcgdGhlIHZhbHVlXG4gICAqICAgYXQgdGhlIHRvcCBvZiB0aGUgc3RhY2suXG4gICAqXG4gICAqIEZvcm1hdDpcbiAgICogICAoQ29tcG9uZW50QXRyIG5hbWU6I3N0cmluZyB0cnVzdGluZzpib29sZWFuIG5hbWVzcGFjZTpPcHRpb248I3N0cmluZz4pXG4gICAqIE9wZXJhbmQgU3RhY2s6XG4gICAqICAgLi4uLCBWZXJzaW9uZWRQYXRoUmVmZXJlbmNlIOKGklxuICAgKiAgIC4uLlxuICAgKi9cbiAgQ29tcG9uZW50QXR0cixcblxuICAvKipcbiAgICogT3BlcmF0aW9uOiBGaW5pc2ggc2V0dGluZyBhdHRyaWJ1dGVzIG9uIHRoZSBjdXJyZW50IGVsZW1lbnQuXG4gICAqXG4gICAqIEZvcm1hdDpcbiAgICogICAoRmx1c2hFbGVtZW50KVxuICAgKiBPcGVyYW5kIFN0YWNrOlxuICAgKiAgIC4uLiDihpJcbiAgICogICAuLi5cbiAgICovXG4gIEZsdXNoRWxlbWVudCxcblxuICAvKipcbiAgICogT3BlcmF0aW9uOiBDbG9zZSB0aGUgY3VycmVudCBlbGVtZW50LlxuICAgKlxuICAgKiBGb3JtYXQ6XG4gICAqICAgKENsb3NlRWxlbWVudClcbiAgICogT3BlcmFuZCBTdGFjazpcbiAgICogICAuLi4g4oaSXG4gICAqICAgLi4uXG4gICAqL1xuICBDbG9zZUVsZW1lbnQsXG5cbiAgLy8vIE1PRElGSUVSXG4gIE1vZGlmaWVyLCAvLyAoQ29uc3RhbnRTdHJpbmcsIENvbnN0YW50T3RoZXI8TW9kaWZpZXJNYW5hZ2VyPiwgQ29uc3RhbnRFeHByZXNzaW9uKVxuXG4gIC8vLyBXT1JNSE9MRVxuICBQdXNoUmVtb3RlRWxlbWVudCwgLy8gKClcbiAgUG9wUmVtb3RlRWxlbWVudCwgLy8gKClcblxuICAvLy8gRFlOQU1JQyBTQ09QRVxuXG4gIC8qKlxuICAgKiBPcGVyYXRpb246IEJpbmQgc3RhY2sgdmFsdWVzIGFzIGR5bmFtaWMgdmFyaWFibGVzLlxuICAgKiBGb3JtYXQ6XG4gICAqICAgKEJpbmREeW5hbWljU2NvcGUgbmFtZXM6I0FycmF5PCNzdHJpbmc+KVxuICAgKiBPcGVyYW5kIFN0YWNrOlxuICAgKiAgIC4uLiwgVmVyc2lvbmVkUGF0aFJlZmVyZW5jZSwgW1ZlcnNpb25lZFBhdGhSZWZlcmVuY2UgLi4uXSDihpJcbiAgICogICAuLi5cbiAgICogRGVzY3JpcHRpb246XG4gICAqICAgVGhpcyBpcyB1c2VkIHRvIGV4cG9zZSBgLXdpdGgtZHluYW1pYy12YXJzYCwgYW5kIGlzIGFcbiAgICogICBuaWNoZSBmZWF0dXJlLlxuICAgKi9cbiAgQmluZER5bmFtaWNTY29wZSxcblxuICBQdXNoRHluYW1pY1Njb3BlLCAvLyAoKVxuICBQb3BEeW5hbWljU2NvcGUsIC8vICgpXG5cbiAgLy8vIFZNXG5cbiAgLyoqXG4gICAqIE9wZXJhdGlvbjogQ29tcGlsZSB0aGUgSW5saW5lQmxvY2sgYXQgdGhlIHRvcCBvZiB0aGUgc3RhY2suXG4gICAqIEZvcm1hdDpcbiAgICogICAoQ29tcGlsZUJsb2NrKVxuICAgKiBPcGVyYW5kIFN0YWNrOlxuICAgKiAgIC4uLiwgQ29tcGlsYWJsZUJsb2NrIOKGklxuICAgKiAgIC4uLiwgSGFuZGxlXG4gICAqL1xuICBDb21waWxlQmxvY2ssXG5cbiAgLyoqXG4gICAqIE9wZXJhdGlvbjogUHVzaCBhIHNjb3BlIG9udG8gdGhlIHN0YWNrLlxuICAgKiBGb3JtYXQ6XG4gICAqICAgKFB1c2hCbG9ja1Njb3BlICNTY29wZSlcbiAgICogT3BlcmFuZCBTdGFjazpcbiAgICogICAuLi4sIOKGklxuICAgKiAgIC4uLiwgU2NvcGVcbiAgICovXG4gIFB1c2hCbG9ja1Njb3BlLFxuXG4gIC8qKlxuICAgKiBPcGVyYXRpb246IFB1c2ggYSBzeW1ib2wgdGFibGUgb250byB0aGUgc3RhY2suXG4gICAqIEZvcm1hdDpcbiAgICogICAoUHVzaFN5bWJvbFRhYmxlICNTeW1ib2xUYWJsZSlcbiAgICogT3BlcmFuZCBTdGFjazpcbiAgICogICAuLi4sIOKGklxuICAgKiAgIC4uLiwgU3ltYm9sVGFibGVcbiAgICovXG4gIFB1c2hTeW1ib2xUYWJsZSxcblxuICAvKipcbiAgICogT3BlcmF0aW9uOiBFdmFsdWF0ZSB0aGUgaGFuZGxlIGF0IHRoZSB0b3Agb2YgdGhlIHN0YWNrLlxuICAgKiBGb3JtYXQ6XG4gICAqICAgKEludm9rZVZpcnR1YWwpXG4gICAqIE9wZXJhbmQgU3RhY2s6XG4gICAqICAgLi4uLCBIYW5kbGUsIOKGklxuICAgKiAgIC4uLlxuICAgKi9cbiAgSW52b2tlVmlydHVhbCxcblxuICAvKipcbiAgICogT3BlcmF0aW9uOiBFdmFsdWF0ZSB0aGUgaGFuZGxlLlxuICAgKiBGb3JtYXQ6XG4gICAqICAgKEludm9rZVN0YXRpYyBoYW5kbGU6dTMyKVxuICAgKiBPcGVyYW5kIFN0YWNrOlxuICAgKiAgIC4uLiDihpJcbiAgICogICAuLi5cbiAgICovXG4gIEludm9rZVN0YXRpYyxcblxuICAvKipcbiAgICogT3BlcmF0aW9uOiBZaWVsZCB0byBhIGJsb2NrLlxuICAgKiBGb3JtYXQ6XG4gICAqICAgKEludm9rZVlpZWxkKVxuICAgKiBPcGVyYW5kIFN0YWNrOlxuICAgKiAgIC4uLiwgW1ZlcnNpb25lZFBhdGhSZWZlcmVuY2UgLi4uXSwgQXJndW1lbnRzLCBTeW1ib2xUYWJsZSwgSGFuZGxlIOKGklxuICAgKiAgIC4uLlxuICAgKi9cbiAgSW52b2tlWWllbGQsXG5cbiAgLyoqXG4gICAqIE9wZXJhdGlvbjogSnVtcCB0byB0aGUgc3BlY2lmaWVkIG9mZnNldC5cbiAgICpcbiAgICogRm9ybWF0OlxuICAgKiAgIChKdW1wIHRvOnUzMilcbiAgICogT3BlcmFuZCBTdGFjazpcbiAgICogICAuLi4g4oaSXG4gICAqICAgLi4uXG4gICAqL1xuICBKdW1wLFxuXG4gIC8qKlxuICAgKiBPcGVyYXRpb246XG4gICAqICAgSnVtcCB0byB0aGUgc3BlY2lmaWVkIG9mZnNldCBpZiB0aGUgdmFsdWUgYXRcbiAgICogICB0aGUgdG9wIG9mIHRoZSBzdGFjayBpcyB0cnVlLlxuICAgKlxuICAgKiBGb3JtYXQ6XG4gICAqICAgKEp1bXBJZiB0bzp1MzIpXG4gICAqIE9wZXJhbmQgU3RhY2s6XG4gICAqICAgLi4uLCBWZXJzaW9uZWRQYXRoUmVmZXJlbmNlIOKGklxuICAgKiAgIC4uLlxuICAgKi9cbiAgSnVtcElmLFxuXG4gIC8qKlxuICAgKiBPcGVyYXRpb246XG4gICAqICAgSnVtcCB0byB0aGUgc3BlY2lmaWVkIG9mZnNldCBpZiB0aGUgdmFsdWUgYXRcbiAgICogICB0aGUgdG9wIG9mIHRoZSBzdGFjayBpcyBmYWxzZS5cbiAgICpcbiAgICogRm9ybWF0OlxuICAgKiAgIChKdW1wVW5sZXNzIHRvOnUzMilcbiAgICogT3BlcmFuZCBTdGFjazpcbiAgICogICAuLi4sIFZlcnNpb25lZFBhdGhSZWZlcmVuY2Ug4oaSXG4gICAqICAgLi4uXG4gICAqL1xuICBKdW1wVW5sZXNzLFxuXG4gIC8qKlxuICAgKiBPcGVyYXRpb246XG4gICAqICAgSnVtcCB0byB0aGUgc3BlY2lmaWVkIG9mZnNldCBpZiB0aGUgdmFsdWUgYXRcbiAgICogICB0aGUgdG9wIG9mIHRoZSBzdGFjayBpcyB0aGUgc2FtZSBhcyB0aGVcbiAgICogICBjb21wYXJpc29uLlxuICAgKlxuICAgKiBGb3JtYXQ6XG4gICAqICAgKEp1bXBFcSB0bzppMzIgY29tcGFyaXNvbjppMzIpXG4gICAqIE9wZXJhbmQgU3RhY2s6XG4gICAqICAgLi4uLCB1MzIg4oaSXG4gICAqICAgLi4uLCB1MzJcbiAgICovXG4gIEp1bXBFcSxcblxuICAvKipcbiAgICogT3BlcmF0aW9uOlxuICAgKiAgIFZhbGlkYXRlIHRoYXQgdGhlIHZhbHVlIGF0IHRoZSB0b3Agb2YgdGhlIHN0YWNrXG4gICAqICAgaGFzbid0IGNoYW5nZWQuXG4gICAqXG4gICAqIEZvcm1hdDpcbiAgICogICAoQXNzZXJ0U2FtZSlcbiAgICogT3BlcmFuZCBTdGFjazpcbiAgICogICAuLi4sIFZlcnNpb25lZFBhdGhSZWZlcmVuY2U8dTMyPiDihpJcbiAgICogICAuLi4sIFZlcnNpb25lZFBhdGhSZWZlcmVuY2U8dTMyPlxuICAgKi9cbiAgQXNzZXJ0U2FtZSxcblxuICAvKipcbiAgICogT3BlcmF0aW9uOiBQdXNoIGEgc3RhY2sgZnJhbWVcbiAgICpcbiAgICogRm9ybWF0OlxuICAgKiAgIChQdXNoRnJhbWUpXG4gICAqIE9wZXJhbmQgU3RhY2s6XG4gICAqICAgLi4uIOKGklxuICAgKiAgICRyYSwgJGZwXG4gICAqL1xuICBQdXNoRnJhbWUsXG5cbiAgLyoqXG4gICAqIE9wZXJhdGlvbjogUG9wIGEgc3RhY2sgZnJhbWVcbiAgICpcbiAgICogRm9ybWF0OlxuICAgKiAgIChQdXNoRnJhbWUpXG4gICAqIE9wZXJhbmQgU3RhY2s6XG4gICAqICAgJHJhLCAkZnAg4oaSXG4gICAqICAgLi4uXG4gICAqL1xuICBQb3BGcmFtZSxcblxuICAvKipcbiAgICogT3BlcmF0aW9uOiBQdXNoIGEgc21hbGwgc3RhY2sgZnJhbWVcbiAgICpcbiAgICogRm9ybWF0OlxuICAgKiAgIChQdXNoU21hbGxGcmFtZSlcbiAgICogT3BlcmFuZCBTdGFjazpcbiAgICogICAuLi4g4oaSXG4gICAqICAgJGZwXG4gICAqL1xuICBQdXNoU21hbGxGcmFtZSxcblxuICAvKipcbiAgICogT3BlcmF0aW9uOiBQb3AgYSBzdGFjayBmcmFtZVxuICAgKlxuICAgKiBGb3JtYXQ6XG4gICAqICAgKFBvcFNtYWxsRnJhbWUpXG4gICAqIE9wZXJhbmQgU3RhY2s6XG4gICAqICAgJGZwIOKGklxuICAgKiAgIC4uLlxuICAgKi9cbiAgUG9wU21hbGxGcmFtZSxcblxuICAvKipcbiAgICogT3BlcmF0aW9uOlxuICAgKiAgIFN0YXJ0IHRyYWNraW5nIGEgbmV3IG91dHB1dCBibG9jayB0aGF0IGNvdWxkIGNoYW5nZVxuICAgKiAgIGlmIG9uZSBvZiBpdHMgaW5wdXRzIGNoYW5nZXMuXG4gICAqXG4gICAqIEZvcm1hdDpcbiAgICogICAoRW50ZXIgYXJnczp1MzIpXG4gICAqIE9wZXJhbmQgU3RhY2s6XG4gICAqICAgLi4uIOKGklxuICAgKiAgIC4uLlxuICAgKiBEZXNjcmlwdGlvbjpcbiAgICogICBTb29uIGFmdGVyIHRoaXMgb3Bjb2RlLCBvbmUgb2YgSnVtcCwgSnVtcElmLFxuICAgKiAgIEp1bXBVbmxlc3MsIG9yIEp1bXBFcSB3aWxsIHByb2R1Y2UgYW4gdXBkYXRpbmdcbiAgICogICBhc3NlcnRpb24uIElmIHRoYXQgYXNzZXJ0aW9uIGZhaWxzLCB0aGUgYXBwZW5kaW5nXG4gICAqICAgVk0gd2lsbCBiZSByZS1lbnRlcmVkLCBhbmQgdGhlIGluc3RydWN0aW9ucyBmcm9tIGBmcm9tYFxuICAgKiAgIHRvIGB0b2Agd2lsbCBiZSBleGVjdXRlZC5cbiAgICpcbiAgICogICBUT0RPOiBTYXZlIGFuZCByZXN0b3JlLlxuICAgKi9cbiAgRW50ZXIsXG5cbiAgLyoqXG4gICAqIE9wZXJhdGlvbjpcbiAgICogICBGaW5pc2ggdHJhY2tpbmcgdGhlIGN1cnJlbnQgYmxvY2suXG4gICAqXG4gICAqIEZvcm1hdDpcbiAgICogICAoRXhpdClcbiAgICogT3BlcmFuZCBTdGFjazpcbiAgICogICAuLi4g4oaSXG4gICAqICAgLi4uXG4gICAqIERlc2NyaXB0aW9uOlxuICAgKiAgIFRoaXMgZmluYWxpemVzIHRoZSB2YWxpZGF0b3JzIHRoYXQgdGhlIHVwZGF0aW5nXG4gICAqICAgYmxvY2sgbXVzdCBjaGVjayB0byBkZXRlcm1pbmUgd2hldGhlciBpdCdzIHNhZmUgdG9cbiAgICogICBza2lwIHJ1bm5pbmcgdGhlIGNvbnRlbnRzLlxuICAgKi9cbiAgRXhpdCxcblxuICAvKipcbiAgICogT3BlcmF0aW9uOiBDb252ZXJ0IHRoZSB0b3Agb2YgdGhlIHN0YWNrIGludG8gYSBib29sZWFuIHJlZmVyZW5jZS5cbiAgICpcbiAgICogRm9ybWF0OlxuICAgKiAgIChUb0Jvb2xlYW4pXG4gICAqIE9wZXJhbmQgU3RhY2s6XG4gICAqICAgLi4uLCBWZXJzaW9uZWRQYXRoUmVmZXJlbmNlPE9wYXF1ZT4g4oaSXG4gICAqICAgLi4uLCBWZXJzaW9uZWRQYXRoUmVmZXJlbmNlPGJvb2w+XG4gICAqL1xuICBUb0Jvb2xlYW4sXG5cbiAgLy8vIExJU1RTXG5cbiAgLyoqXG4gICAqIE9wZXJhdGlvbjogRW50ZXIgYSBsaXN0LlxuICAgKlxuICAgKiBGb3JtYXQ6XG4gICAqICAgKEVudGVyTGlzdCBhZGRyZXNzOnUzMilcbiAgICogT3BlcmFuZCBTdGFjazpcbiAgICogICAuLi4sIEl0ZXJhdG9yIOKGklxuICAgKiAgIC4uLlxuICAgKi9cbiAgRW50ZXJMaXN0LFxuXG4gIC8qKlxuICAgKiBPcGVyYXRpb246IEV4aXQgdGhlIGN1cnJlbnQgbGlzdC5cbiAgICpcbiAgICogRm9ybWF0OlxuICAgKiAgIChFeGl0TGlzdClcbiAgICogT3BlcmFuZCBTdGFjazpcbiAgICogICAuLi4g4oaSXG4gICAqICAgLi4uXG4gICAqL1xuICBFeGl0TGlzdCxcblxuICAvKipcbiAgICogT3BlcmF0aW9uOlxuICAgKiAgIENvbnZlcnQgYW4gb3BlcmFuZCBhbmQga2V5IGludG8gYW4gaXRlcmF0b3IgYW5kXG4gICAqICAgcHJlc2VuY2UgcmVmZXJlbmNlLlxuICAgKlxuICAgKiBGb3JtYXQ6XG4gICAqICAgKFB1dEl0ZXJhdG9yKVxuICAgKiBPcGVyYW5kIFN0YWNrOlxuICAgKiAgIC4uLiwga2V5OnN0cmluZywgbGlzdDpWZXJzaW9uZWRQYXRoUmVmZXJlbmNlIOKGklxuICAgKiAgIC4uLiwgaXRlcmF0b3I6UmVmZXJlbmNlSXRlcmF0b3IsIHByZXNlbnQ6UHJlc2VuY2VSZWZlcmVuY2VcbiAgICovXG4gIFB1dEl0ZXJhdG9yLFxuXG4gIC8qKlxuICAgKiBPcGVyYXRpb246XG4gICAqICAgU2V0IHVwIHRoZSBzdGFjayBmb3IgaXRlcmF0aW5nIGZvciBhIGdpdmVuIGtleSxcbiAgICogICBvciBqdW1wIHRvIGBlbmRgIGlmIHRoZXJlIGlzIG5vdGhpbmcgbGVmdCB0b1xuICAgKiAgIGl0ZXJhdGUuXG4gICAqXG4gICAqIEZvcm1hdDpcbiAgICogICAoSXRlcmF0ZSBlbmQ6dTMyKVxuICAgKiBPcGVyYW5kIFN0YWNrOlxuICAgKiAgIEZvcm0gMTogKHNvbWV0aGluZyB0byBpdGVyYXRlKVxuICAgKiAgIC4uLiDihpJcbiAgICogICAuLi4sIFZlcnNpb25lZFBhdGhSZWZlcmVuY2UsIFZlcnNpb25lZFBhdGhSZWZlcmVuY2UsIHN0cmluZ1xuICAgKiAgIEZvcm0gMjogKG5vdGhpbmcgbGVmdCB0byBpdGVyYXRlKVxuICAgKiAgIC4uLiDihpJcbiAgICogICAuLi5cbiAgICogRGVzY3JpcHRpb246XG4gICAqICAgSW4gRm9ybSAxLCB0aGUgc3RhY2sgd2lsbCBoYXZlIChpbiByZXZlcnNlIG9yZGVyKTpcbiAgICpcbiAgICogICAtIHRoZSBrZXksIGFzIGEgc3RyaW5nXG4gICAqICAgLSB0aGUgY3VycmVudCBpdGVyYXRlZCB2YWx1ZVxuICAgKiAgIC0gdGhlIG1lbW9pemVkIGl0ZXJhdGVkIHZhbHVlXG4gICAqL1xuICBJdGVyYXRlLFxuXG4gIC8vLyBDT01QT05FTlRTXG5cbiAgLyoqXG4gICAqIE9wZXJhdGlvbjogVGVzdCB3aGV0aGVyIGEgcmVmZXJlbmNlIGNvbnRhaW5zIGEgY29tcG9uZW50IGRlZmluaXRpb24uXG4gICAqXG4gICAqIEZvcm1hdDpcbiAgICogICAoTWFpbiBzdGF0ZTpyZWdpc3RlcilcbiAgICogT3BlcmFuZCBTdGFjazpcbiAgICogICAuLi4sIEludm9jYXRpb24sIENvbXBvbmVudERlZmluaXRpb24g4oaSXG4gICAqICAgLi4uXG4gICAqL1xuICBNYWluLFxuXG4gIC8qKlxuICAgKiBPcGVyYXRpb246IFRlc3Qgd2hldGhlciBhIHJlZmVyZW5jZSBjb250YWlucyBhIGNvbXBvbmVudCBkZWZpbml0aW9uLlxuICAgKlxuICAgKiBGb3JtYXQ6XG4gICAqICAgKElzQ29tcG9uZW50KVxuICAgKiBPcGVyYW5kIFN0YWNrOlxuICAgKiAgIC4uLiwgVmVyc2lvbmVkUGF0aFJlZmVyZW5jZTxPcGFxdWU+IOKGklxuICAgKiAgIC4uLiwgVmVyc2lvbmVkUGF0aFJlZmVyZW5jZTxib29sZWFuPlxuICAgKi9cbiAgSXNDb21wb25lbnQsXG5cbiAgLyoqXG4gICAqIE9wZXJhdGlvbjogUHVzaCB0aGUgY29udGVudCB0eXBlIG9udG8gdGhlIHN0YWNrLlxuICAgKlxuICAgKiBGb3JtYXQ6XG4gICAqICAgKENvbnRlbnRUeXBlKVxuICAgKiBPcGVyYW5kIFN0YWNrOlxuICAgKiAgIC4uLiwgVmVyc2lvbmVkUGF0aFJlZmVyZW5jZTxPcGFxdWU+IOKGklxuICAgKiAgIC4uLiwgVmVyc2lvbmVkUGF0aFJlZmVyZW5jZTxPcGFxdWU+LCBWZXJzaW9uZWRQYXRoUmVmZXJlbmNlPENvbnRlbnRUeXBlPlxuICAgKi9cbiAgQ29udGVudFR5cGUsXG5cbiAgLyoqXG4gICAqIE9wZXJhdGlvbjogQ3VycnkgYSBjb21wb25lbnQgZGVmaW5pdGlvbiBmb3IgYSBsYXRlciBpbnZvY2F0aW9uLlxuICAgKlxuICAgKiBGb3JtYXQ6XG4gICAqICAgKEN1cnJ5Q29tcG9uZW50IHRlbXBsYXRlTWV0YTojTG9jYXRvcilcbiAgICogT3BlcmFuZCBTdGFjazpcbiAgICogICAuLi4sIFZlcnNpb25lZFBhdGhSZWZlcmVuY2UsIFtWZXJzaW9uZWRQYXRoUmVmZXJlbmNlIC4uLl0sIEFyZ3VtZW50cyDihpJcbiAgICogICAuLi4sIHsgVmVyc2lvbmVkUGF0aFJlZmVyZW5jZSwgTG9jYXRvciwgQ2FwdHVyZWRBcmd1bWVudHMgfVxuICAgKi9cbiAgQ3VycnlDb21wb25lbnQsXG5cbiAgLyoqXG4gICAqIE9wZXJhdGlvbjogUHVzaCBhbiBhcHByb3ByaWF0ZSBjb21wb25lbnQgbWFuYWdlciBvbnRvIHRoZSBzdGFjay5cbiAgICpcbiAgICogRm9ybWF0OlxuICAgKiAgIChQdXNoQ29tcG9uZW50TWFuYWdlciAjQ29tcG9uZW50U3BlYylcbiAgICogT3BlcmFuZCBTdGFjazpcbiAgICogICAuLi4g4oaSXG4gICAqICAgLi4uLCB7IENvbXBvbmVudERlZmluaXRpb24sIENvbXBvbmVudE1hbmFnZXIgfVxuICAgKi9cbiAgUHVzaENvbXBvbmVudERlZmluaXRpb24sXG5cbiAgLyoqXG4gICAqIE9wZXJhdGlvbjpcbiAgICogICBQdXNoZXMgdGhlIENvbXBvbmVudEluc3RhbmNlIG9udG8gdGhlIHN0YWNrIHRoYXQgaXNcbiAgICogICB1c2VkIGR1cmluZyB0aGUgaW52b2tlLlxuICAgKlxuICAgKiBGb3JtYXQ6XG4gICAqICAgKFB1c2hEeW5hbWljQ29tcG9uZW50SW5zdGFuY2UpXG4gICAqIE9wZXJhbmQgU3RhY2s6XG4gICAqICAgLi4uLCBDb21wb25lbnREZWZpbml0aW9uIOKGklxuICAgKiAgIC4uLiwgeyBDb21wb25lbnREZWZpbml0aW9uLCBtYW5hZ2VyOiBudWxsLCBsYXlvdXQ6IG51bGwsIHN0YXRlOiBudWxsLCBoYW5kbGU6IG51bGwsIHRhYmxlOiBudWxsIH1cbiAgICovXG5cbiAgUHVzaER5bmFtaWNDb21wb25lbnRJbnN0YW5jZSxcblxuICAvKipcbiAgICogT3BlcmF0aW9uOlxuICAgKiAgIFB1c2hlcyBhIGN1cnJpZWQgY29tcG9uZW50IGRlZmluaXRpb24gb24gdG8gdGhlIHN0YWNrXG4gICAqXG4gICAqIEZvcm1hdDpcbiAgICogICAoUHVzaEN1cnJpZWRDb21wb25lbnQpXG4gICAqIE9wZXJhbmQgU3RhY2s6XG4gICAqICAgLi4uLCBWZXJzaW9uZWRQYXRoUmVmZXJlbmNlPE9wYXF1ZT4g4oaSXG4gICAqICAgLi4uLCBDb21wb25lbnREZWZpbml0aW9uXG4gICAqL1xuICBQdXNoQ3VycmllZENvbXBvbmVudCxcblxuICAvKipcbiAgICogT3BlcmF0aW9uOlxuICAgKiAgIFB1c2ggYSByZXNvbHZlZCBjb21wb25lbnQgZGVmaW5pdGlvbiBvbnRvIHRoZSBzdGFja1xuICAgKlxuICAgKiBGb3JtYXQ6XG4gICAqICAgKFJlc29sdmVEeW5hbWljQ29tcG9uZW50IHRlbXBsYXRlTWV0YTojTG9jYXRvcilcbiAgICogT3BlcmFuZCBTdGFjazpcbiAgICogICAuLi4sIFZlcnNpb25lZFBhdGhSZWZlcmVuY2U8T3BhcXVlPiDihpJcbiAgICogICAuLi4sIENvbXBvbmVudERlZmluaXRpb25cbiAgICovXG4gIFJlc29sdmVEeW5hbWljQ29tcG9uZW50LFxuXG4gIC8qKlxuICAgKiBPcGVyYXRpb246IFB1c2ggYSB1c2VyIHJlcHJlc2VudGF0aW9uIG9mIGFyZ3Mgb250byB0aGUgc3RhY2suXG4gICAqXG4gICAqIEZvcm1hdDpcbiAgICogICAoUHVzaEFyZ3MgbmFtZXM6I0FycmF5PCNzdHJpbmc+IHBvc2l0aW9uYWxDb3VudDp1MzIgc3ludGhldGljOiNib29sZWFuKVxuICAgKlxuICAgKiBPcGVyYW5kIFN0YWNrOlxuICAgKiAgIC4uLiwgW1ZlcnNpb25lZFBhdGhSZWZlcmVuY2UgLi4uXSAg4oaSXG4gICAqICAgLi4uLCBbVmVyc2lvbmVkUGF0aFJlZmVyZW5jZSAuLi5dLCBBcmd1bWVudHNcbiAgICpcbiAgICogRGVzY3JpcHRpb246XG4gICAqICAgVGhpcyBhcmd1bWVudHMgb2JqZWN0IGlzIG9ubHkgbmVjZXNzYXJ5IHdoZW4gY2FsbGluZyBpbnRvXG4gICAqICAgdXNlci1zcGVjaWZpZWQgaG9va3MuIEl0IGlzIG1lYW50IHRvIGJlIGltcGxlbWVudGVkIGFzIGFcbiAgICogICB0cmFuc2llbnQgcHJveHkgdGhhdCByZWFkcyBpbnRvIHRoZSBzdGFjayBhcyBuZWVkZWQuXG4gICAqICAgSG9sZGluZyBvbnRvIHRoZSBBcmd1bWVudHMgYWZ0ZXIgdGhlIGNhbGwgaGFzIGNvbXBsZXRlZCBpc1xuICAgKiAgIGlsbGVnYWwuXG4gICAqL1xuICBQdXNoQXJncyxcblxuICAvKipcbiAgICogT3BlcmF0aW9uOiBQdXNoIGVtcHR5IGFyZ3Mgb250byB0aGUgc3RhY2tcbiAgICpcbiAgICogRm9ybWF0OlxuICAgKiAgIChFbXB0eUFyZ3MpXG4gICAqXG4gICAqIE9wZXJhbmRTdGFjazpcbiAgICogICAuLi4g4oaSXG4gICAqICAgLi4uLCBBcmd1bWVudHNcbiAgICovXG4gIFB1c2hFbXB0eUFyZ3MsXG5cbiAgLyoqXG4gICAqIE9wZXJhdGlvbjogUG9wcyBBcmd1bWVudHMgZnJvbSB0aGUgc3RhY2sgYW5kIGNsZWFycyB0aGUgbmV4dCBOIGFyZ3MuXG4gICAqXG4gICAqIEZvcm1hdDpcbiAgICogICAoUG9wQXJncylcbiAgICpcbiAgICogT3BlcmFuZCBTdGFjazpcbiAgICogICAuLi4sIFtWZXJzaW9uZWRQYXRoUmVmZXJlbmNlIC4uLl0sIEFyZ3VtZW50cyAg4oaSXG4gICAqICAgLi4uXG4gICAqXG4gICAqIERlc2NyaXB0aW9uOlxuICAgKiBUaGUgYXJndW1lbnRzIG9iamVjdCBjb250YWlucyB0aGUgaW5mb3JtYXRpb24gb2YgaG93IG1hbnkgdXNlclxuICAgKiBzdXBwbGllZCBhcmdzIHRoZSBjb21wb25lbnQgd2FzIGludm9rZWQgd2l0aC4gVG8gY2xlYXIgdGhlbSBmcm9tXG4gICAqIHRoZSBzdGFjayB3ZSBtdXN0IHBvcCBpdCBmcm9tIHRoZSBzdGFjayBhbmQgY2FsbCBgY2xlYXJgIG9uIGl0XG4gICAqIHRvIHJlbW92ZSB0aGUgYXJndW1lbnQgdmFsdWVzIGZyb20gdGhlIHN0YWNrLlxuICAgKi9cbiAgUG9wQXJncyxcblxuICAvKipcbiAgICogT3BlcmF0aW9uOiAuLi5cbiAgICogRm9ybWF0OlxuICAgKiAgIChQcmVwYXJlQXJncyBzdGF0ZTpyZWdpc3RlcilcbiAgICogT3BlcmFuZCBTdGFjazpcbiAgICogICAuLi4g4oaSXG4gICAqICAgLi4uXG4gICAqL1xuICBQcmVwYXJlQXJncyxcblxuICAvKipcbiAgICogT3BlcmF0aW9uOiBSZXBsYWNlcyBBcmd1bWVudHMgb24gdGhlIHN0YWNrIHdpdGggQ2FwdHVyZWRBcmd1bWVudHNcbiAgICogRm9ybWF0OlxuICAgKiAgIChDYXB0dXJlQXJncylcbiAgICpcbiAgICogT3BlcmFuZCBTdGFjazpcbiAgICogICAuLi4sIEFyZ3VtZW50cyAg4oaSXG4gICAqICAgLi4uLCBDYXB0dXJlZEFyZ3VtZW50c1xuICAgKlxuICAgKiBEZXNjcmlwdGlvbjpcbiAgICogVGhlIEFyZ3VtZW50cyBvYmplY3QgaXMgbXV0YXRlZCBpbiBwbGFjZSBiZWNhdXNlIGl0IGlzIHVzdWFsbHkgY29uc3VtZWQgaW1tZWRpYXRlbHlcbiAgICogYWZ0ZXIgYmVpbmcgcHVzaGVkIG9uIHRvIHRoZSBzdGFjay4gSW4gc29tZSBzaXR1YXRpb25zLCBzdWNoIGFzIHdpdGggY3VycmllZCBjb21wb25lbnRzLFxuICAgKiBpbmZvcm1hdGlvbiBhYm91dCBtb3JlIHRoYW4gb25lIEFyZ3VtZW50IG1heSBuZWVkIHRvIGV4aXN0IG9uIHRoZSBzdGFjayBhdCBvbmNlLiBJbiB0aG9zZVxuICAgKiBjYXNlcywgdGhlIENhcHR1cmVBcmdzIGluc3RydWN0aW9uIHBvcHMgYW4gQXJndW1lbnRzIG9iamVjdCBvZmYgdGhlIHN0YWNrIGFuZCByZXBsYWNlcyBpdFxuICAgKiB3aXRoIHRoZSBpbW11dGFibGUgQ2FwdHVyZWRBcmdzIHNuYXBzaG90LlxuICAgKi9cbiAgQ2FwdHVyZUFyZ3MsXG5cbiAgLyoqXG4gICAqIE9wZXJhdGlvbjogQ3JlYXRlIHRoZSBjb21wb25lbnQgYW5kIHB1c2ggaXQgb250byB0aGUgc3RhY2suXG4gICAqIEZvcm1hdDpcbiAgICogICAoQ3JlYXRlQ29tcG9uZW50IGZsYWdzOnUzMiBzdGF0ZTpyZWdpc3RlcilcbiAgICogICAuLi4g4oaSXG4gICAqICAgLi4uXG4gICAqIERlc2NyaXB0aW9uOlxuICAgKiBPcGVyYW5kIFN0YWNrOlxuICAgKiAgIEZsYWdzOlxuICAgKlxuICAgKiAgICogMGIwMDE6IEhhcyBhIGRlZmF1bHQgYmxvY2tcbiAgICogICAqIDBiMDEwOiBIYXMgYW4gaW52ZXJzZSBibG9ja1xuICAgKi9cbiAgQ3JlYXRlQ29tcG9uZW50LFxuXG4gIC8qKlxuICAgKiBPcGVyYXRpb246IFJlZ2lzdGVyIGEgZGVzdHJ1Y3RvciBmb3IgdGhlIGN1cnJlbnQgY29tcG9uZW50XG4gICAqXG4gICAqIEZvcm1hdDpcbiAgICogICAoUmVnaXN0ZXJDb21wb25lbnREZXN0cnVjdG9yIHN0YXRlOnJlZ2lzdGVyKVxuICAgKiBPcGVyYW5kIFN0YWNrOlxuICAgKiAgIC4uLiDihpJcbiAgICogICAuLi5cbiAgICovXG4gIFJlZ2lzdGVyQ29tcG9uZW50RGVzdHJ1Y3RvcixcblxuICAvKipcbiAgICogT3BlcmF0aW9uOiBQdXNoIGEgbmV3IEVsZW1lbnRPcGVyYXRpb25zIGZvciB0aGUgY3VycmVudCBjb21wb25lbnQuXG4gICAqXG4gICAqIEZvcm1hdDpcbiAgICogICAoUHV0Q29tcG9uZW50T3BlcmF0aW9ucylcbiAgICogT3BlcmFuZCBTdGFjazpcbiAgICogICAuLi4g4oaSXG4gICAqICAgLi4uXG4gICAqL1xuICBQdXRDb21wb25lbnRPcGVyYXRpb25zLFxuXG4gIC8qKlxuICAgKiBPcGVyYXRpb246IFB1c2ggdGhlIGNvbXBvbmVudCdzIGBzZWxmYCBvbnRvIHRoZSBzdGFjay5cbiAgICpcbiAgICogRm9ybWF0OlxuICAgKiAgIChHZXRDb21wb25lbnRTZWxmIHN0YXRlOnJlZ2lzdGVyKVxuICAgKiBPcGVyYW5kIFN0YWNrOlxuICAgKiAgIC4uLiDihpJcbiAgICogICAuLi4sIFZlcnNpb25lZFBhdGhSZWZlcmVuY2VcbiAgICovXG4gIEdldENvbXBvbmVudFNlbGYsXG5cbiAgLyoqXG4gICAqIE9wZXJhdGlvbjogUHVzaCB0aGUgY29tcG9uZW50J3MgYHNlbGZgIG9udG8gdGhlIHN0YWNrLlxuICAgKlxuICAgKiBGb3JtYXQ6XG4gICAqICAgKEdldENvbXBvbmVudFRhZ05hbWUgc3RhdGU6cmVnaXN0ZXIpXG4gICAqIE9wZXJhbmQgU3RhY2s6XG4gICAqICAgLi4uIOKGklxuICAgKiAgIC4uLiwgT3B0aW9uPHN0cmluZz5cbiAgICovXG4gIEdldENvbXBvbmVudFRhZ05hbWUsXG5cbiAgLyoqXG4gICAqIE9wZXJhdGlvbjogR2V0IHRoZSBjb21wb25lbnQgbGF5b3V0IGZyb20gdGhlIG1hbmFnZXIuXG4gICAqXG4gICAqIEZvcm1hdDpcbiAgICogICAoR2V0Q29tcG9uZW50TGF5b3V0IHN0YXRlOnJlZ2lzdGVyKVxuICAgKiBPcGVyYW5kIFN0YWNrOlxuICAgKiAgIC4uLiDihpJcbiAgICogICAuLi4sIFByb2dyYW1TeW1ib2xUYWJsZSwgSGFuZGxlXG4gICAqL1xuICBHZXRDb21wb25lbnRMYXlvdXQsXG5cbiAgLyoqXG4gICAqIE9wZXJhdGlvbjogUG9wdWxhdGUgdGhlIGV2YWwgbG9va3VwIGlmIG5lY2Vzc2FyeS5cbiAgICpcbiAgICogRm9ybWF0OlxuICAgKiAgIChTZXR1cEZvckV2YWwgc3RhdGU6cmVnaXN0ZXIpXG4gICAqIE9wZXJhbmQgU3RhY2s6XG4gICAqICAgLi4uIOKGklxuICAgKiAgIC4uLlxuICAgKi9cbiAgU2V0dXBGb3JFdmFsLFxuXG4gIC8qKlxuICAgKiBPcGVyYXRpb246IFBvcHVsYXRlIHRoZSBldmFsIGxvb2t1cCBpZiBuZWNlc3NhcnkuXG4gICAqXG4gICAqIEZvcm1hdDpcbiAgICogICAoU2V0dXBGb3JFdmFsIHN0YXRlOnJlZ2lzdGVyKVxuICAgKiBPcGVyYW5kIFN0YWNrOlxuICAgKiAgIC4uLiDihpJcbiAgICogICAuLi5cbiAgICovXG4gIEJpbmRFdmFsU2NvcGUsXG5cbiAgLyoqXG4gICAqIE9wZXJhdGlvbjpcbiAgICogICBQb3B1bGF0ZSB0aGUgc3RhdGUgcmVnaXN0ZXIgd2l0aCB0aGUgbGF5b3V0IGN1cnJlbnRseVxuICAgKiAgIG9uIHRoZSBzdGFjay5cbiAgICpcbiAgICogRm9ybWF0OlxuICAgKiAgIChQb3B1bGF0ZUxheW91dCBzdGF0ZTpyZWdpc3RlcilcbiAgICogT3BlcmFuZCBTdGFjazpcbiAgICogICAuLi4sIFByb2dyYW1TeW1ib2xUYWJsZSwgSGFuZGxlIOKGklxuICAgKiAgIC4uLlxuICAgKi9cbiAgUG9wdWxhdGVMYXlvdXQsXG5cbiAgLyoqXG4gICAqIE9wZXJhdGlvbjogSW52b2tlIHRoZSBsYXlvdXQgcmV0dXJuZWQgYnkgdGhlIG1hbmFnZXIuXG4gICAqXG4gICAqIEZvcm1hdDpcbiAgICogICAoSW52b2tlQ29tcG9uZW50TGF5b3V0IHN0YXRlOnJlZ2lzdGVyKVxuICAgKiBPcGVyYW5kIFN0YWNrOlxuICAgKiAgIC4uLiDihpJcbiAgICogICAuLi5cbiAgICovXG4gIEludm9rZUNvbXBvbmVudExheW91dCxcblxuICAvKipcbiAgICogT3BlcmF0aW9uOiBCZWdpbiBhIG5ldyBjYWNoZSBncm91cFxuICAgKlxuICAgKiBGb3JtYXQ6XG4gICAqICAgKEJlZ2luQ29tcG9uZW50VHJhbnNhY3Rpb24pXG4gICAqIE9wZXJhbmQgU3RhY2s6XG4gICAqICAgLi4uLCBDb21wb25lbnRNYW5hZ2VyPFQ+LCBUIOKGklxuICAgKiAgIC4uLiwgQ29tcG9uZW50TWFuYWdlcjxUPiwgVFxuICAgKi9cbiAgQmVnaW5Db21wb25lbnRUcmFuc2FjdGlvbixcblxuICAvKipcbiAgICogT3BlcmF0aW9uOiBDb21taXQgdGhlIGN1cnJlbnQgY2FjaGUgZ3JvdXBcbiAgICpcbiAgICogRm9ybWF0OlxuICAgKiAgIChDb21taXRDb21wb25lbnRUcmFuc2FjdGlvbilcbiAgICogT3BlcmFuZCBTdGFjazpcbiAgICogICAuLi4g4oaSXG4gICAqICAgLi4uXG4gICAqL1xuICBDb21taXRDb21wb25lbnRUcmFuc2FjdGlvbixcblxuICAvKipcbiAgICogT3BlcmF0aW9uOiBJbnZva2UgZGlkQ3JlYXRlRWxlbWVudCBvbiB0aGUgY3VycmVudCBjb21wb25lbnQgbWFuYWdlclxuICAgKlxuICAgKiBGb3JtYXQ6XG4gICAqICAgKERpZENyZWF0ZUVsZW1lbnQgc3RhdGU6cmVnaXN0ZXIpXG4gICAqIE9wZXJhbmQgU3RhY2s6XG4gICAqICAgLi4uIOKGklxuICAgKiAgIC4uLlxuICAgKi9cbiAgRGlkQ3JlYXRlRWxlbWVudCxcblxuICAvKipcbiAgICogT3BlcmF0aW9uOiBJbnZva2UgZGlkUmVuZGVyTGF5b3V0IG9uIHRoZSBjdXJyZW50IGNvbXBvbmVudCBtYW5hZ2VyXG4gICAqXG4gICAqIEZvcm1hdDpcbiAgICogICAoRGlkUmVuZGVyTGF5b3V0IHN0YXRlOnJlZ2lzdGVyKVxuICAgKiBPcGVyYW5kIFN0YWNrOlxuICAgKiAgIC4uLiwg4oaSXG4gICAqICAgLi4uXG4gICAqL1xuICBEaWRSZW5kZXJMYXlvdXQsXG5cbiAgLy8vIFBBUlRJQUxTXG5cbiAgLyoqXG4gICAqIE9wZXJhdGlvbjogTG9va3VwIGFuZCBpbnZva2UgYSBwYXJ0aWFsIHRlbXBsYXRlLlxuICAgKlxuICAgKiBGb3JtYXQ6XG4gICAqICAgKEludm9rZVBhcnRpYWwgdGVtcGxhdGVNZXRhOiNMb2NhdG9yIHN5bWJvbHM6I0FycmF5PCNzdHJpbmc+IGV2YWxJbmZvOiNBcnJheTxudW1iZXI+KVxuICAgKiBPcGVyYW5kIFN0YWNrOlxuICAgKiAgIC4uLiwgVmVyc2lvbmVkUGF0aFJlZmVyZW5jZTxzdHJpbmc+IOKGklxuICAgKiAgIC4uLlxuICAgKi9cbiAgSW52b2tlUGFydGlhbCxcblxuICAvKipcbiAgICogT3BlcmF0aW9uOlxuICAgKiAgIFJlc29sdmUge3tmb299fSBpbnNpZGUgYSBwYXJ0aWFsLCB3aGljaCBjb3VsZCBiZSBlaXRoZXIgYSBzZWxmLWxvb2t1cFxuICAgKiAgIG9yIGEgbG9jYWwgdmFyaWFibGUgdGhhdCBpcyBpbi1zY29wZSBmb3IgdGhlIGNhbGxlci5cbiAgICpcbiAgICogRm9ybWF0OlxuICAgKiAgIChSZXNvbHZlTWF5YmVMb2NhbCBsb2NhbDojc3RyaW5nKVxuICAgKiBPcGVyYW5kIFN0YWNrOlxuICAgKiAgIC4uLiDihpJcbiAgICogICAuLi4sIFZlcnNpb25lZFBhdGhSZWZlcmVuY2VcbiAgICovXG4gIFJlc29sdmVNYXliZUxvY2FsLFxuXG4gIC8vLyBERUJVR0dFUlxuXG4gIC8qKlxuICAgKiBPcGVyYXRpb246IEFjdGl2YXRlIHRoZSBkZWJ1Z2dlclxuICAgKlxuICAgKiBGb3JtYXQ6XG4gICAqICAgKERlYnVnZ2VyIHN5bWJvbHM6I0FycmF5PHN0cmluZz4gZXZhbEluZm86I0FycmF5PG51bWJlcj4pXG4gICAqIE9wZXJhbmQgU3RhY2s6XG4gICAqICAgLi4uIOKGklxuICAgKiAgIC4uLlxuICAgKi9cbiAgRGVidWdnZXIsXG5cbiAgLyoqIFRoZSBzaXplIG9mIHRoZSBvcGNvZGUgbGlzdCAqL1xuICBTaXplLFxufVxuIl19
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3Bjb2Rlcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3BhY2thZ2VzL0BnbGltbWVyL3ZtL2xpYi9vcGNvZGVzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgY29uc3QgZW51bSBPcCB7XG4gIC8qXG4gICAgRG9jdW1lbnRhdGlvbiBUT0RPOlxuXG4gICAgRG9jdW1lbnQgdGhlIGxvY2FsIHZhcmlhYmxlIGxheW91dCBpbiB0aGUgc3RhY2tcbiAgICBkaWFncmFtIGJlZm9yZS1hbmQtYWZ0ZXIuXG5cbiAgICBEb2N1bWVudCB1cGRhdGluZyBvcGNvZGVzIGVtaXR0aW5nIGZyb20gdW5yZWFjaGFibGVcbiAgICBhcHBlbmQgb3Bjb2RlLlxuXG4gICAgRG9jdW1lbnQgdGhlIGVsZW1lbnQgc3RhY2ssIGJsb2NrIHN0YWNrIGFuZCBMaXN0XG4gICAgYmxvY2sgc3RhY2suXG4gICAqL1xuXG4gIC8qKlxuICAgKiBUaGlzIG9wY29kZSBzaG91bGQgbmV2ZXIgYmUgcmVhY2hlZC5cbiAgICovXG4gIEJ1ZyxcblxuICAvLy8gRVhQUkVTU0lPTlNcblxuICAvKipcbiAgICogT3BlcmF0aW9uOiBFdmFsdWF0ZSBhIEhlbHBlci5cbiAgICogRm9ybWF0OlxuICAgKiAgIChIZWxwZXIgaGVscGVyOiNGdW5jdGlvbilcbiAgICogT3BlcmFuZCBTdGFjazpcbiAgICogICAuLi4sIFtWZXJzaW9uZWRQYXRoUmVmZXJlbmNlIC4uLl0sIEFyZ3VtZW50cyDihpJcbiAgICogICAuLi4sIFZlcnNpb25lZFBhdGhSZWZlcmVuY2VcbiAgICovXG4gIEhlbHBlcixcblxuICAvKipcbiAgICogT3BlcmF0aW9uOlxuICAgKiAgIEJpbmQgdGhlIG5hbWVkIGFyZ3VtZW50cyBpbiB0aGUgQXJndW1lbnRzIHRvIHRoZSBzeW1ib2xzXG4gICAqICAgc3BlY2lmaWVkIGJ5IHRoZSBzeW1ib2wgdGFibGUgaW4gdGhlIGNvbXBvbmVudCBzdGF0ZSBhdCByZWdpc3Rlci5cbiAgICogRm9ybWF0OlxuICAgKiAgIChTZXROYW1lZFZhcmlhYmxlcyByZWdpc3Rlcjp1MzIpXG4gICAqIE9wZXJhbmQgU3RhY2s6XG4gICAqICAgLi4uLCBBcmd1bWVudHMg4oaSXG4gICAqICAgLi4uXG4gICAqL1xuICBTZXROYW1lZFZhcmlhYmxlcyxcblxuICAvKipcbiAgICogT3BlcmF0aW9uOlxuICAgKiAgIEJpbmQgdGhlIGJsb2NrcyBpbiB0aGUgQXJndW1lbnRzIHRvIHRoZSBzeW1ib2xzIHNwZWNpZmllZCBieSB0aGVcbiAgICogICBzeW1ib2wgdGFibGUgaW4gdGhlIGNvbXBvbmVudCBzdGF0ZSBhdCByZWdpc3Rlci5cbiAgICogRm9ybWF0OlxuICAgKiAgIChTZXRCbG9ja3MgcmVnaXN0ZXI6dTMyKVxuICAgKiBPcGVyYW5kIFN0YWNrOlxuICAgKiAgIC4uLiwgQXJndW1lbnRzIOKGklxuICAgKiAgIC4uLlxuICAgKi9cbiAgU2V0QmxvY2tzLFxuXG4gIC8qKlxuICAgKiBPcGVyYXRpb246XG4gICAqICAgQmluZCB0aGUgdmFyaWFibGUgcmVwcmVzZW50ZWQgYnkgYSBzeW1ib2wgZnJvbVxuICAgKiAgIHRoZSB2YWx1ZSBhdCB0aGUgdG9wIG9mIHRoZSBzdGFjay5cbiAgICogRm9ybWF0OlxuICAgKiAgIChTZXRWYXJpYWJsZSBzeW1ib2w6dTMyKVxuICAgKiBPcGVyYW5kIFN0YWNrOlxuICAgKiAgIC4uLiwgVmVyc2lvbmVkUGF0aFJlZmVyZW5jZSDihpJcbiAgICogICAuLi5cbiAgICovXG4gIFNldFZhcmlhYmxlLFxuXG4gIC8qKlxuICAgKiBPcGVyYXRpb246XG4gICAqICAgQmluZCB0aGUgYmxvY2sgYXQgdGhlIHRvcCBvZiB0aGUgc3RhY2suXG4gICAqIEZvcm1hdDpcbiAgICogICAoU2V0QmxvY2sgc3ltYm9sOnUzMilcbiAgICogT3BlcmFuZCBTdGFjazpcbiAgICogICAuLi4sIFN5bWJvbFRhYmxlLCBIYW5kbGUg4oaSXG4gICAqICAgLi4uXG4gICAqL1xuICBTZXRCbG9jayxcblxuICAvKipcbiAgICogT3BlcmF0aW9uOlxuICAgKiAgIFB1c2ggdGhlIGNvbnRlbnRzIG9mIHRoZSB2YXJpYWJsZSByZXByZXNlbnRlZCBieVxuICAgKiAgIGEgc3ltYm9sIChhIHBvc2l0aW9uYWwgb3IgbmFtZWQgYXJndW1lbnQpIG9udG9cbiAgICogICB0aGUgc3RhY2suXG4gICAqIEZvcm1hdDpcbiAgICogICAoUHVzaFN5bWJvbCBzeW1ib2w6dTMyKVxuICAgKiBPcGVyYW5kIFN0YWNrOlxuICAgKiAgIC4uLiDihpJcbiAgICogICAuLi4sIFZlcnNpb25lZFBhdGhSZWZlcmVuY2VcbiAgICovXG4gIEdldFZhcmlhYmxlLFxuXG4gIC8qKlxuICAgKiBPcGVyYXRpb246XG4gICAqICAgUG9wIGEgVmVyc2lvbmVkUGF0aFJlZmVyZW5jZSBmcm9tIHRoZSB0b3Agb2YgdGhlXG4gICAqICAgc3RhY2ssIGFuZCBwdXNoIGEgVmVyc2lvbmVkUGF0aFJlZmVyZW5jZSBjb25zdHJ1Y3RlZFxuICAgKiAgIGJ5IGAuZ2V0KHByb3BlcnR5KWAuXG4gICAqIEZvcm1hdDpcbiAgICogICAoR2V0UHJvcGVydHkgcHJvcGVydHk6I3N0cmluZylcbiAgICogT3BlcmFuZCBTdGFjazpcbiAgICogICAuLi4sIFZlcnNpb25lZFBhdGhSZWZlcmVuY2Ug4oaSXG4gICAqICAgLi4uLCBWZXJzaW9uZWRQYXRoUmVmZXJlbmNlXG4gICAqL1xuICBHZXRQcm9wZXJ0eSxcblxuICAvKipcbiAgICogT3BlcmF0aW9uOiBQdXNoIHRoZSBzcGVjaWZpZWQgYm91bmQgYmxvY2sgb250byB0aGUgc3RhY2suXG4gICAqIEZvcm1hdDpcbiAgICogICAoR2V0QmxvY2sgYmxvY2s6dTMyKVxuICAgKiBPcGVyYW5kIFN0YWNrOlxuICAgKiAgIC4uLiDihpJcbiAgICogICAuLi4sIElubGluZUJsb2NrXG4gICAqL1xuICBHZXRCbG9jayxcblxuICAvKipcbiAgICogT3BlcmF0aW9uOlxuICAgKiAgIFB1c2ggVFJVRSBvbnRvIHRoZSBzdGFjayBpZiB0aGUgc3BlY2lmaWVkIGJsb2NrXG4gICAqICAgaXMgYm91bmQgYW5kIEZBTFNFIGlmIGl0IGlzIG5vdC5cbiAgICogRm9ybWF0OlxuICAgKiAgIChIYXNCbG9jayBibG9jazp1MzIpXG4gICAqIE9wZXJhbmQgU3RhY2s6XG4gICAqICAgLi4uIOKGklxuICAgKiAgIC4uLiwgYm9vbGVhblxuICAgKi9cbiAgSGFzQmxvY2ssXG5cbiAgLyoqXG4gICAqIE9wZXJhdGlvbjpcbiAgICogICBQdXNoIFRSVUUgb250byB0aGUgc3RhY2sgaWYgdGhlIHNwZWNpZmllZCBibG9ja1xuICAgKiAgIGlzIGJvdW5kICphbmQqIGhhcyBhdCBsZWFzdCBvbmUgc3BlY2lmaWVkIGZvcm1hbFxuICAgKiAgIHBhcmFtZXRlciwgYW5kIEZBTFNFIG90aGVyd2lzZS5cbiAgICogRm9ybWF0OlxuICAgKiAgIChIYXNCbG9ja1BhcmFtcyBibG9jazp1MzIpXG4gICAqIE9wZXJhbmQgU3RhY2s6XG4gICAqICAgLi4uIOKGklxuICAgKiAgIC4uLiwgVmVyc2lvbmVkUGF0aFJlZmVyZW5jZSAoYm9vbGVhbilcbiAgICovXG4gIEhhc0Jsb2NrUGFyYW1zLFxuXG4gIC8qKlxuICAgKiBPcGVyYXRpb246XG4gICAqICAgUG9wIGNvdW50IGBWZXJzaW9uZWRQYXRoUmVmZXJlbmNlYHMgb2ZmIHRoZSBzdGFjayBhbmRcbiAgICogICBjb25zdHJ1Y3QgYSBuZXcgQ29uY2F0UmVmZXJlbmNlIGZyb20gdGhlbSAoaW4gcmV2ZXJzZVxuICAgKiAgIG9yZGVyKS5cbiAgICogRm9ybWF0OlxuICAgKiAgIChDb25jYXQgY291bnQ6dTMyKVxuICAgKiBPcGVyYW5kIFN0YWNrOlxuICAgKiAgIC4uLiwgVmVyc2lvbmVkUGF0aFJlZmVyZW5jZSwgW1ZlcnNpb25lZFBhdGhSZWZlcmVuY2UgLi4uXSDihpJcbiAgICogICAuLi4sIENvbmNhdFJlZmVyZW5jZVxuICAgKi9cbiAgQ29uY2F0LFxuXG4gIC8qKlxuICAgKiBPcGVyYXRpb246XG4gICAqICAgUHVzaCBhbiBPYmplY3QgY29uc3RhbnQgb250byB0aGUgc3RhY2sgdGhhdCBpcyBub3RcbiAgICogICBhIEphdmFTY3JpcHQgcHJpbWl0aXZlLlxuICAgKiBGb3JtYXQ6XG4gICAqICAgKFB1c2hDb25zdGFudCBjb25zdGFudDojT2JqZWN0KVxuICAgKiBPcGVyYW5kIFN0YWNrOlxuICAgKiAgIC4uLiDihpJcbiAgICogICAuLi4sIE9wYXF1ZVxuICAgKi9cbiAgQ29uc3RhbnQsXG5cbiAgLyoqXG4gICAqIE9wZXJhdGlvbjpcbiAgICogICBXcmFwIGEgSmF2YVNjcmlwdCBwcmltaXRpdmUgaW4gYSByZWZlcmVuY2UgYW5kIHB1c2ggaXRcbiAgICogICBvbnRvIHRoZSBzdGFjay5cbiAgICogRm9ybWF0OlxuICAgKiAgIChQdXNoUHJpbWl0aXZlIGNvbnN0YW50OiNQcmltaXRpdmUpXG4gICAqIE9wZXJhbmQgU3RhY2s6XG4gICAqICAgLi4uIOKGklxuICAgKiAgIC4uLiwgUHJpbWl0aXZlXG4gICAqIERlc2NyaXB0aW9uOlxuICAgKiAgIFRoZSB0d28gaGlnaCBiaXRzIG9mIHRoZSBjb25zdGFudCByZWZlcmVuY2UgZGVzY3JpYmVcbiAgICogICB0aGUga2luZCBvZiBwcmltaXRpdmU6XG4gICAqXG4gICAqICAgMDA6IG51bWJlclxuICAgKiAgIDAxOiBzdHJpbmdcbiAgICogICAxMDogdHJ1ZSB8IGZhbHNlIHwgbnVsbCB8IHVuZGVmaW5lZFxuICAgKi9cbiAgUHJpbWl0aXZlLFxuXG4gIC8qKlxuICAgKiBPcGVyYXRpb246IENvbnZlcnQgdGhlIHRvcCBvZiB0aGUgc3RhY2sgaW50byBhIHByaW1pdGl2ZSByZWZlcmVuY2UuXG4gICAqXG4gICAqIEZvcm1hdDpcbiAgICogICAoUHJpbWl0aXZlUmVmZXJlbmNlKVxuICAgKiBPcGVyYW5kIFN0YWNrOlxuICAgKiAgIC4uLiwgUHJpbWl0aXZlIOKGklxuICAgKiAgIC4uLiwgVmVyc2lvbmVkUGF0aFJlZmVyZW5jZTxQcmltaXRpdmU+XG4gICAqL1xuICBQcmltaXRpdmVSZWZlcmVuY2UsXG5cbiAgLyoqXG4gICAqIE9wZXJhdGlvbjogQ29udmVydCB0aGUgdG9wIG9mIHRoZSBzdGFjayBpbnRvIGEgbnVtYmVyLlxuICAgKlxuICAgKiBGb3JtYXQ6XG4gICAqICAgKFJlaWZ5VTMyKVxuICAgKiBPcGVyYW5kIFN0YWNrOlxuICAgKiAgIC4uLiwgVmVyc2lvbmVkUGF0aFJlZmVyZW5jZTx1MzI+IOKGklxuICAgKiAgIC4uLiwgVmVyc2lvbmVkUGF0aFJlZmVyZW5jZTx1MzI+LCB1MzJcbiAgICovXG4gIFJlaWZ5VTMyLFxuXG4gIC8qKlxuICAgKiBPcGVyYXRpb246IER1cGxpY2F0ZSBhbmQgcHVzaCBpdGVtIGZyb20gYW4gb2Zmc2V0IGluIHRoZSBzdGFjay5cbiAgICogRm9ybWF0OlxuICAgKiAgIChEdXAgcmVnaXN0ZXI6dTMyLCBvZmZzZXQ6dTMyKVxuICAgKiBPcGVyYW5kIFN0YWNrOlxuICAgKiAgIC4uLiwgT3BhcXVlIOKGklxuICAgKiAgIC4uLiwgT3BhcXVlLCBPcGFxdWVcbiAgICovXG4gIER1cCxcblxuICAvKipcbiAgICogT3BlcmF0aW9uOiBQb3AgTiBpdGVtcyBvZmYgdGhlIHN0YWNrIGFuZCB0aHJvdyBhd2F5IHRoZSB2YWx1ZS5cbiAgICogRm9ybWF0OlxuICAgKiAgIChQb3ApXG4gICAqIE9wZXJhbmQgU3RhY2s6XG4gICAqICAgLi4uLCBPcGFxdWUsIC4uLiwgT3BhcXVlIOKGklxuICAgKiAgIC4uLlxuICAgKi9cbiAgUG9wLFxuXG4gIC8qKlxuICAgKiBPcGVyYXRpb246IExvYWQgYSB2YWx1ZSBpbnRvIGEgcmVnaXN0ZXJcbiAgICogRm9ybWF0OlxuICAgKiAgIChMb2FkIHJlZ2lzdGVyOnUzMilcbiAgICogT3BlcmFuZCBTdGFjazpcbiAgICogICAuLi4sIE9wYXF1ZSDihpJcbiAgICogICAuLi5cbiAgICovXG4gIExvYWQsXG5cbiAgLyoqXG4gICAqIE9wZXJhdGlvbjogRmV0Y2ggYSB2YWx1ZSBmcm9tIGEgcmVnaXN0ZXJcbiAgICogRm9ybWF0OlxuICAgKiAgIChGZXRjaCByZWdpc3Rlcjp1MzIpXG4gICAqIE9wZXJhbmQgU3RhY2s6XG4gICAqICAgLi4uIOKGklxuICAgKiAgIC4uLiwgT3BhcXVlXG4gICAqL1xuICBGZXRjaCxcblxuICAvLy8gUFJFTFVERSAmIEVYSVRcblxuICAvKipcbiAgICogT3BlcmF0aW9uOiBQdXNoIGEgbmV3IHJvb3Qgc2NvcGUgb250byB0aGUgc2NvcGUgc3RhY2suXG4gICAqXG4gICAqIEZvcm1hdDpcbiAgICogICAoUm9vdFNjb3BlIHN5bWJvbHM6dTMyIGJpbmRDYWxsZXJTY29wZTpib29sKVxuICAgKiBPcGVyYW5kIFN0YWNrOlxuICAgKiAgIC4uLiDihpJcbiAgICogICAuLi5cbiAgICogRGVzY3JpcHRpb246XG4gICAqICAgQSByb290IHNjb3BlIGhhcyBubyBwYXJlbnQgc2NvcGUsIGFuZCB0aGVyZWZvcmUgaW5oZXJpdHMgbm8gbGV4aWNhbFxuICAgKiAgIHZhcmlhYmxlcy4gSWYgYGJpbmRDYWxsZXJTY29wZWAgaXMgYHRydWVgLCB0aGUgY3VycmVudCBzY29wZSByZW1lbWJlcnNcbiAgICogICB0aGUgY2FsbGVyIHNjb3BlIChmb3IgeWllbGRpbmcgYmxvY2tzKS5cbiAgICovXG4gIFJvb3RTY29wZSxcblxuICAvKipcbiAgICogT3BlcmF0aW9uOiBQdXNoIGEgbmV3IHJvb3Qgc2NvcGUgb250byB0aGUgc2NvcGUgc3RhY2suXG4gICAqXG4gICAqIEZvcm1hdDpcbiAgICogICAoVmlydHVhbFJvb3RTY29wZSByZWdpc3Rlcjp1MzIpXG4gICAqIE9wZXJhbmQgU3RhY2s6XG4gICAqICAgLi4uIOKGklxuICAgKiAgIC4uLlxuICAgKiBEZXNjcmlwdGlvbjpcbiAgICogICBUaGUgc3ltYm9sIGNvdW50IGlzIGRldGVybWluZWQgYnkgdGhlIGNvbXBvbmVudCBzdGF0ZSBpblxuICAgKiAgIHRoZSBzcGVjaWZpZWQgcmVnaXN0ZXIuXG4gICAqL1xuICBWaXJ0dWFsUm9vdFNjb3BlLFxuXG4gIC8qKlxuICAgKiBPcGVyYXRpb246IFB1c2ggYSBuZXcgY2hpbGQgc2NvcGUgb250byB0aGUgc2NvcGUgc3RhY2suXG4gICAqXG4gICAqIEZvcm1hdDpcbiAgICogICAoQ2hpbGRTY29wZSlcbiAgICogT3BlcmFuZCBTdGFjazpcbiAgICogICAuLi4g4oaSXG4gICAqICAgLi4uXG4gICAqIERlc2NyaXB0aW9uOlxuICAgKiAgIEEgY2hpbGQgc2NvcGUgaW5oZXJpdHMgZnJvbSB0aGUgY3VycmVudCBwYXJlbnQgc2NvcGUsIGFuZCB0aGVyZWZvcmVcbiAgICogICBzaGFyZXMgaXRzIGxleGljYWwgdmFyaWFibGVzLlxuICAgKi9cbiAgQ2hpbGRTY29wZSxcblxuICAvKipcbiAgICogT3BlcmF0aW9uOiBQb3AgdGhlIGN1cnJlbnQgc2NvcGUgZnJvbSB0aGUgc2NvcGUgc3RhY2suXG4gICAqIEZvcm1hdDpcbiAgICogICAoUG9wU2NvcGUpXG4gICAqIE9wZXJhbmQgU3RhY2s6XG4gICAqICAgLi4uIOKGklxuICAgKiAgIC4uLlxuICAgKi9cbiAgUG9wU2NvcGUsXG5cbiAgLyoqXG4gICAqIE9wZXJhdGlvbjogUmV0dXJuIHRvIHRoZSBwcmV2aW91cyBmcmFtZS5cbiAgICogRm9ybWF0OlxuICAgKiAgIChSZXR1cm4pXG4gICAqIE9wZXJhbmQgU3RhY2s6XG4gICAqICAgLi4uLCBhZGRyZXNzOm51bWJlciDihpJcbiAgICogICAuLi5cbiAgICovXG4gIFJldHVybixcblxuICAvKipcbiAgICogT3BlcmF0aW9uOiBSZXR1cm4gdG8gYSBwbGFjZSBpbiB0aGUgcHJvZ3JhbSBnaXZlbiBhbiBvZmZzZXRcbiAgICogRm9ybWF0OlxuICAgKiAgKFJldHVyblRvIG9mZnNldDppMzIpXG4gICAqIE9wZXJhbmQgU3RhY2s6XG4gICAqICAgIC4uLiDihpJcbiAgICovXG4gIFJldHVyblRvLFxuXG4gIC8vLyBIVE1MXG5cbiAgLyoqXG4gICAqIE9wZXJhdGlvbjogQXBwZW5kIGEgVGV4dCBub2RlIHdpdGggdmFsdWUgYGNvbnRlbnRzYFxuICAgKiBGb3JtYXQ6XG4gICAqICAgKFRleHQgY29udGVudHM6I3N0cmluZylcbiAgICogT3BlcmFuZCBTdGFjazpcbiAgICogICAuLi4g4oaSXG4gICAqICAgLi4uXG4gICAqL1xuICBUZXh0LFxuXG4gIC8qKlxuICAgKiBPcGVyYXRpb246IEFwcGVuZCBhIENvbW1lbnQgbm9kZSB3aXRoIHZhbHVlIGBjb250ZW50c2BcbiAgICogRm9ybWF0OlxuICAgKiAgIChDb21tZW50IGNvbnRlbnRzOiNzdHJpbmcpXG4gICAqIE9wZXJhbmQgU3RhY2s6XG4gICAqICAgLi4uIOKGklxuICAgKiAgIC4uLlxuICAgKi9cbiAgQ29tbWVudCxcblxuICAvKipcbiAgICogT3BlcmF0aW9uOiBBcHBlbmQgY29udGVudCBhcyBIVE1MLlxuICAgKiBGb3JtYXQ6XG4gICAqICAgKEFwcGVuZEhUTUwpXG4gICAqIE9wZXJhbmQgU3RhY2s6XG4gICAqICAgLi4uLCBWZXJzaW9uZWRQYXRoUmVmZXJlbmNlPHN0cmluZz4g4oaSXG4gICAqICAgLi4uXG4gICAqL1xuICBBcHBlbmRIVE1MLFxuXG4gIC8qKlxuICAgKiBPcGVyYXRpb246IEFwcGVuZCBTYWZlSFRNTCBhcyBIVE1MLlxuICAgKiBGb3JtYXQ6XG4gICAqICAgKEFwcGVuZFNhZmVIVE1MKVxuICAgKiBPcGVyYW5kIFN0YWNrOlxuICAgKiAgIC4uLiwgVmVyc2lvbmVkUGF0aFJlZmVyZW5jZTxTYWZlSFRNTD4g4oaSXG4gICAqICAgLi4uXG4gICAqL1xuICBBcHBlbmRTYWZlSFRNTCxcblxuICAvKipcbiAgICogT3BlcmF0aW9uOiBBcHBlbmQgRG9jdW1lbnRGcmFnbWVudC5cbiAgICogRm9ybWF0OlxuICAgKiAgIChBcHBlbmRGcmFnbWVudClcbiAgICogT3BlcmFuZCBTdGFjazpcbiAgICogICAuLi4sIFZlcnNpb25lZFBhdGhSZWZlcmVuY2U8RG9jdW1lbnRGcmFnbWVudD4g4oaSXG4gICAqICAgLi4uXG4gICAqL1xuICBBcHBlbmREb2N1bWVudEZyYWdtZW50LFxuXG4gIC8qKlxuICAgKiBPcGVyYXRpb246IEFwcGVuZCBOb2RlLlxuICAgKiBGb3JtYXQ6XG4gICAqICAgKEFwcGVuZEZyYWdtZW50KVxuICAgKiBPcGVyYW5kIFN0YWNrOlxuICAgKiAgIC4uLiwgVmVyc2lvbmVkUGF0aFJlZmVyZW5jZTxOb2RlPiDihpJcbiAgICogICAuLi5cbiAgICovXG4gIEFwcGVuZE5vZGUsXG5cbiAgLyoqXG4gICAqIE9wZXJhdGlvbjogQXBwZW5kIGNvbnRlbnQgYXMgdGV4dC5cbiAgICogRm9ybWF0OlxuICAgKiAgIChBcHBlbmRUZXh0KVxuICAgKiBPcGVyYW5kIFN0YWNrOlxuICAgKiAgIC4uLiwgVmVyc2lvbmVkUGF0aFJlZmVyZW5jZTxzdHJpbmc+IOKGklxuICAgKiAgIC4uLlxuICAgKi9cbiAgQXBwZW5kVGV4dCxcblxuICAvKipcbiAgICogT3BlcmF0aW9uOiBPcGVuIGEgbmV3IEVsZW1lbnQgbmFtZWQgYHRhZ2AuXG4gICAqIEZvcm1hdDpcbiAgICogICAoT3BlbkVsZW1lbnQgdGFnOiNzdHJpbmcpXG4gICAqIE9wZXJhbmQgU3RhY2s6XG4gICAqICAgLi4uIOKGklxuICAgKiAgIC4uLlxuICAgKi9cbiAgT3BlbkVsZW1lbnQsXG5cbiAgLyoqXG4gICAqIE9wZXJhdGlvbjpcbiAgICogICBPcGVuIGEgbmV3IEVsZW1lbnQgd2l0aCBhIG5hbWUgb24gdGhlIHN0YWNrIGFuZCB3aXRoIHNwZWNpYWxcbiAgICogICBvcGVyYXRpb25zIHByb3ZpZGVkIG9uIHRoZSBzdGFjay5cbiAgICogRm9ybWF0OlxuICAgKiAgIChPcGVuRHluYW1pY0VsZW1lbnQpXG4gICAqIE9wZXJhbmQgU3RhY2s6XG4gICAqICAgLi4uLCBzdHJpbmcsIEVsZW1lbnRPcGVyYXRpb25zIOKGklxuICAgKiAgIC4uLlxuICAgKi9cbiAgT3BlbkR5bmFtaWNFbGVtZW50LFxuXG4gIC8qKlxuICAgKiBPcGVyYXRpb246IEFkZCBhbiBhdHRyaWJ1dGUgdG8gdGhlIGN1cnJlbnQgRWxlbWVudC5cbiAgICogRm9ybWF0OlxuICAgKiAgIChTdGF0aWNBdHRyIG5hbWU6I3N0cmluZyB2YWx1ZTojc3RyaW5nIG5hbWVzcGFjZTpPcHRpb248I3N0cmluZz4pXG4gICAqIE9wZXJhbmQgU3RhY2s6XG4gICAqICAgLi4uIOKGklxuICAgKiAgIC4uLlxuICAgKi9cbiAgU3RhdGljQXR0cixcblxuICAvKipcbiAgICogT3BlcmF0aW9uOlxuICAgKiAgIEFkZCBhbiBhdHRyaWJ1dGUgdG8gdGhlIGN1cnJlbnQgZWxlbWVudCB1c2luZyB0aGUgdmFsdWVcbiAgICogICBhdCB0aGUgdG9wIG9mIHRoZSBzdGFjay5cbiAgICpcbiAgICogRm9ybWF0OlxuICAgKiAgIChEeW5hbWljQXR0ciBuYW1lOiNzdHJpbmcgdHJ1c3Rpbmc6Ym9vbGVhbiBuYW1lc3BhY2U6T3B0aW9uPCNzdHJpbmc+KVxuICAgKiBPcGVyYW5kIFN0YWNrOlxuICAgKiAgIC4uLiwgVmVyc2lvbmVkUGF0aFJlZmVyZW5jZSDihpJcbiAgICogICAuLi5cbiAgICogRGVzY3JpcHRpb246XG4gICAqICAgSWYgYHRydXN0aW5nYCBpcyBmYWxzZSwgdGhlIGhvc3QgbWF5IHNhbml0aXplIHRoZSBhdHRyaWJ1dGVcbiAgICogICBiYXNlZCB1cG9uIGtub3duIHJpc2tzLlxuICAgKi9cbiAgRHluYW1pY0F0dHIsXG5cbiAgLyoqXG4gICAqIE9wZXJhdGlvbjpcbiAgICogICBBZGQgYW4gYXR0cmlidXRlIHRvIHRoZSBjdXJyZW50IGVsZW1lbnQgdXNpbmcgdGhlIHZhbHVlXG4gICAqICAgYXQgdGhlIHRvcCBvZiB0aGUgc3RhY2suXG4gICAqXG4gICAqIEZvcm1hdDpcbiAgICogICAoQ29tcG9uZW50QXRyIG5hbWU6I3N0cmluZyB0cnVzdGluZzpib29sZWFuIG5hbWVzcGFjZTpPcHRpb248I3N0cmluZz4pXG4gICAqIE9wZXJhbmQgU3RhY2s6XG4gICAqICAgLi4uLCBWZXJzaW9uZWRQYXRoUmVmZXJlbmNlIOKGklxuICAgKiAgIC4uLlxuICAgKi9cbiAgQ29tcG9uZW50QXR0cixcblxuICAvKipcbiAgICogT3BlcmF0aW9uOiBGaW5pc2ggc2V0dGluZyBhdHRyaWJ1dGVzIG9uIHRoZSBjdXJyZW50IGVsZW1lbnQuXG4gICAqXG4gICAqIEZvcm1hdDpcbiAgICogICAoRmx1c2hFbGVtZW50KVxuICAgKiBPcGVyYW5kIFN0YWNrOlxuICAgKiAgIC4uLiDihpJcbiAgICogICAuLi5cbiAgICovXG4gIEZsdXNoRWxlbWVudCxcblxuICAvKipcbiAgICogT3BlcmF0aW9uOiBDbG9zZSB0aGUgY3VycmVudCBlbGVtZW50LlxuICAgKlxuICAgKiBGb3JtYXQ6XG4gICAqICAgKENsb3NlRWxlbWVudClcbiAgICogT3BlcmFuZCBTdGFjazpcbiAgICogICAuLi4g4oaSXG4gICAqICAgLi4uXG4gICAqL1xuICBDbG9zZUVsZW1lbnQsXG5cbiAgLy8vIE1PRElGSUVSXG4gIE1vZGlmaWVyLCAvLyAoQ29uc3RhbnRTdHJpbmcsIENvbnN0YW50T3RoZXI8TW9kaWZpZXJNYW5hZ2VyPiwgQ29uc3RhbnRFeHByZXNzaW9uKVxuXG4gIC8vLyBXT1JNSE9MRVxuICBQdXNoUmVtb3RlRWxlbWVudCwgLy8gKClcbiAgUG9wUmVtb3RlRWxlbWVudCwgLy8gKClcblxuICAvLy8gRFlOQU1JQyBTQ09QRVxuXG4gIC8qKlxuICAgKiBPcGVyYXRpb246IEJpbmQgc3RhY2sgdmFsdWVzIGFzIGR5bmFtaWMgdmFyaWFibGVzLlxuICAgKiBGb3JtYXQ6XG4gICAqICAgKEJpbmREeW5hbWljU2NvcGUgbmFtZXM6I0FycmF5PCNzdHJpbmc+KVxuICAgKiBPcGVyYW5kIFN0YWNrOlxuICAgKiAgIC4uLiwgVmVyc2lvbmVkUGF0aFJlZmVyZW5jZSwgW1ZlcnNpb25lZFBhdGhSZWZlcmVuY2UgLi4uXSDihpJcbiAgICogICAuLi5cbiAgICogRGVzY3JpcHRpb246XG4gICAqICAgVGhpcyBpcyB1c2VkIHRvIGV4cG9zZSBgLXdpdGgtZHluYW1pYy12YXJzYCwgYW5kIGlzIGFcbiAgICogICBuaWNoZSBmZWF0dXJlLlxuICAgKi9cbiAgQmluZER5bmFtaWNTY29wZSxcblxuICBQdXNoRHluYW1pY1Njb3BlLCAvLyAoKVxuICBQb3BEeW5hbWljU2NvcGUsIC8vICgpXG5cbiAgLy8vIFZNXG5cbiAgLyoqXG4gICAqIE9wZXJhdGlvbjogQ29tcGlsZSB0aGUgSW5saW5lQmxvY2sgYXQgdGhlIHRvcCBvZiB0aGUgc3RhY2suXG4gICAqIEZvcm1hdDpcbiAgICogICAoQ29tcGlsZUJsb2NrKVxuICAgKiBPcGVyYW5kIFN0YWNrOlxuICAgKiAgIC4uLiwgQ29tcGlsYWJsZUJsb2NrIOKGklxuICAgKiAgIC4uLiwgSGFuZGxlXG4gICAqL1xuICBDb21waWxlQmxvY2ssXG5cbiAgLyoqXG4gICAqIE9wZXJhdGlvbjogUHVzaCBhIHNjb3BlIG9udG8gdGhlIHN0YWNrLlxuICAgKiBGb3JtYXQ6XG4gICAqICAgKFB1c2hCbG9ja1Njb3BlICNTY29wZSlcbiAgICogT3BlcmFuZCBTdGFjazpcbiAgICogICAuLi4sIOKGklxuICAgKiAgIC4uLiwgU2NvcGVcbiAgICovXG4gIFB1c2hCbG9ja1Njb3BlLFxuXG4gIC8qKlxuICAgKiBPcGVyYXRpb246IFB1c2ggYSBzeW1ib2wgdGFibGUgb250byB0aGUgc3RhY2suXG4gICAqIEZvcm1hdDpcbiAgICogICAoUHVzaFN5bWJvbFRhYmxlICNTeW1ib2xUYWJsZSlcbiAgICogT3BlcmFuZCBTdGFjazpcbiAgICogICAuLi4sIOKGklxuICAgKiAgIC4uLiwgU3ltYm9sVGFibGVcbiAgICovXG4gIFB1c2hTeW1ib2xUYWJsZSxcblxuICAvKipcbiAgICogT3BlcmF0aW9uOiBFdmFsdWF0ZSB0aGUgaGFuZGxlIGF0IHRoZSB0b3Agb2YgdGhlIHN0YWNrLlxuICAgKiBGb3JtYXQ6XG4gICAqICAgKEludm9rZVZpcnR1YWwpXG4gICAqIE9wZXJhbmQgU3RhY2s6XG4gICAqICAgLi4uLCBIYW5kbGUsIOKGklxuICAgKiAgIC4uLlxuICAgKi9cbiAgSW52b2tlVmlydHVhbCxcblxuICAvKipcbiAgICogT3BlcmF0aW9uOiBFdmFsdWF0ZSB0aGUgaGFuZGxlLlxuICAgKiBGb3JtYXQ6XG4gICAqICAgKEludm9rZVN0YXRpYyBoYW5kbGU6dTMyKVxuICAgKiBPcGVyYW5kIFN0YWNrOlxuICAgKiAgIC4uLiDihpJcbiAgICogICAuLi5cbiAgICovXG4gIEludm9rZVN0YXRpYyxcblxuICAvKipcbiAgICogT3BlcmF0aW9uOiBZaWVsZCB0byBhIGJsb2NrLlxuICAgKiBGb3JtYXQ6XG4gICAqICAgKEludm9rZVlpZWxkKVxuICAgKiBPcGVyYW5kIFN0YWNrOlxuICAgKiAgIC4uLiwgW1ZlcnNpb25lZFBhdGhSZWZlcmVuY2UgLi4uXSwgQXJndW1lbnRzLCBTeW1ib2xUYWJsZSwgSGFuZGxlIOKGklxuICAgKiAgIC4uLlxuICAgKi9cbiAgSW52b2tlWWllbGQsXG5cbiAgLyoqXG4gICAqIE9wZXJhdGlvbjogSnVtcCB0byB0aGUgc3BlY2lmaWVkIG9mZnNldC5cbiAgICpcbiAgICogRm9ybWF0OlxuICAgKiAgIChKdW1wIHRvOnUzMilcbiAgICogT3BlcmFuZCBTdGFjazpcbiAgICogICAuLi4g4oaSXG4gICAqICAgLi4uXG4gICAqL1xuICBKdW1wLFxuXG4gIC8qKlxuICAgKiBPcGVyYXRpb246XG4gICAqICAgSnVtcCB0byB0aGUgc3BlY2lmaWVkIG9mZnNldCBpZiB0aGUgdmFsdWUgYXRcbiAgICogICB0aGUgdG9wIG9mIHRoZSBzdGFjayBpcyB0cnVlLlxuICAgKlxuICAgKiBGb3JtYXQ6XG4gICAqICAgKEp1bXBJZiB0bzp1MzIpXG4gICAqIE9wZXJhbmQgU3RhY2s6XG4gICAqICAgLi4uLCBWZXJzaW9uZWRQYXRoUmVmZXJlbmNlIOKGklxuICAgKiAgIC4uLlxuICAgKi9cbiAgSnVtcElmLFxuXG4gIC8qKlxuICAgKiBPcGVyYXRpb246XG4gICAqICAgSnVtcCB0byB0aGUgc3BlY2lmaWVkIG9mZnNldCBpZiB0aGUgdmFsdWUgYXRcbiAgICogICB0aGUgdG9wIG9mIHRoZSBzdGFjayBpcyBmYWxzZS5cbiAgICpcbiAgICogRm9ybWF0OlxuICAgKiAgIChKdW1wVW5sZXNzIHRvOnUzMilcbiAgICogT3BlcmFuZCBTdGFjazpcbiAgICogICAuLi4sIFZlcnNpb25lZFBhdGhSZWZlcmVuY2Ug4oaSXG4gICAqICAgLi4uXG4gICAqL1xuICBKdW1wVW5sZXNzLFxuXG4gIC8qKlxuICAgKiBPcGVyYXRpb246XG4gICAqICAgSnVtcCB0byB0aGUgc3BlY2lmaWVkIG9mZnNldCBpZiB0aGUgdmFsdWUgYXRcbiAgICogICB0aGUgdG9wIG9mIHRoZSBzdGFjayBpcyB0aGUgc2FtZSBhcyB0aGVcbiAgICogICBjb21wYXJpc29uLlxuICAgKlxuICAgKiBGb3JtYXQ6XG4gICAqICAgKEp1bXBFcSB0bzppMzIgY29tcGFyaXNvbjppMzIpXG4gICAqIE9wZXJhbmQgU3RhY2s6XG4gICAqICAgLi4uLCB1MzIg4oaSXG4gICAqICAgLi4uLCB1MzJcbiAgICovXG4gIEp1bXBFcSxcblxuICAvKipcbiAgICogT3BlcmF0aW9uOlxuICAgKiAgIFZhbGlkYXRlIHRoYXQgdGhlIHZhbHVlIGF0IHRoZSB0b3Agb2YgdGhlIHN0YWNrXG4gICAqICAgaGFzbid0IGNoYW5nZWQuXG4gICAqXG4gICAqIEZvcm1hdDpcbiAgICogICAoQXNzZXJ0U2FtZSlcbiAgICogT3BlcmFuZCBTdGFjazpcbiAgICogICAuLi4sIFZlcnNpb25lZFBhdGhSZWZlcmVuY2U8dTMyPiDihpJcbiAgICogICAuLi4sIFZlcnNpb25lZFBhdGhSZWZlcmVuY2U8dTMyPlxuICAgKi9cbiAgQXNzZXJ0U2FtZSxcblxuICAvKipcbiAgICogT3BlcmF0aW9uOiBQdXNoIGEgc3RhY2sgZnJhbWVcbiAgICpcbiAgICogRm9ybWF0OlxuICAgKiAgIChQdXNoRnJhbWUpXG4gICAqIE9wZXJhbmQgU3RhY2s6XG4gICAqICAgLi4uIOKGklxuICAgKiAgICRyYSwgJGZwXG4gICAqL1xuICBQdXNoRnJhbWUsXG5cbiAgLyoqXG4gICAqIE9wZXJhdGlvbjogUG9wIGEgc3RhY2sgZnJhbWVcbiAgICpcbiAgICogRm9ybWF0OlxuICAgKiAgIChQdXNoRnJhbWUpXG4gICAqIE9wZXJhbmQgU3RhY2s6XG4gICAqICAgJHJhLCAkZnAg4oaSXG4gICAqICAgLi4uXG4gICAqL1xuICBQb3BGcmFtZSxcblxuICAvKipcbiAgICogT3BlcmF0aW9uOiBQdXNoIGEgc21hbGwgc3RhY2sgZnJhbWVcbiAgICpcbiAgICogRm9ybWF0OlxuICAgKiAgIChQdXNoU21hbGxGcmFtZSlcbiAgICogT3BlcmFuZCBTdGFjazpcbiAgICogICAuLi4g4oaSXG4gICAqICAgJGZwXG4gICAqL1xuICBQdXNoU21hbGxGcmFtZSxcblxuICAvKipcbiAgICogT3BlcmF0aW9uOiBQb3AgYSBzdGFjayBmcmFtZVxuICAgKlxuICAgKiBGb3JtYXQ6XG4gICAqICAgKFBvcFNtYWxsRnJhbWUpXG4gICAqIE9wZXJhbmQgU3RhY2s6XG4gICAqICAgJGZwIOKGklxuICAgKiAgIC4uLlxuICAgKi9cbiAgUG9wU21hbGxGcmFtZSxcblxuICAvKipcbiAgICogT3BlcmF0aW9uOlxuICAgKiAgIFN0YXJ0IHRyYWNraW5nIGEgbmV3IG91dHB1dCBibG9jayB0aGF0IGNvdWxkIGNoYW5nZVxuICAgKiAgIGlmIG9uZSBvZiBpdHMgaW5wdXRzIGNoYW5nZXMuXG4gICAqXG4gICAqIEZvcm1hdDpcbiAgICogICAoRW50ZXIgYXJnczp1MzIpXG4gICAqIE9wZXJhbmQgU3RhY2s6XG4gICAqICAgLi4uIOKGklxuICAgKiAgIC4uLlxuICAgKiBEZXNjcmlwdGlvbjpcbiAgICogICBTb29uIGFmdGVyIHRoaXMgb3Bjb2RlLCBvbmUgb2YgSnVtcCwgSnVtcElmLFxuICAgKiAgIEp1bXBVbmxlc3MsIG9yIEp1bXBFcSB3aWxsIHByb2R1Y2UgYW4gdXBkYXRpbmdcbiAgICogICBhc3NlcnRpb24uIElmIHRoYXQgYXNzZXJ0aW9uIGZhaWxzLCB0aGUgYXBwZW5kaW5nXG4gICAqICAgVk0gd2lsbCBiZSByZS1lbnRlcmVkLCBhbmQgdGhlIGluc3RydWN0aW9ucyBmcm9tIGBmcm9tYFxuICAgKiAgIHRvIGB0b2Agd2lsbCBiZSBleGVjdXRlZC5cbiAgICpcbiAgICogICBUT0RPOiBTYXZlIGFuZCByZXN0b3JlLlxuICAgKi9cbiAgRW50ZXIsXG5cbiAgLyoqXG4gICAqIE9wZXJhdGlvbjpcbiAgICogICBGaW5pc2ggdHJhY2tpbmcgdGhlIGN1cnJlbnQgYmxvY2suXG4gICAqXG4gICAqIEZvcm1hdDpcbiAgICogICAoRXhpdClcbiAgICogT3BlcmFuZCBTdGFjazpcbiAgICogICAuLi4g4oaSXG4gICAqICAgLi4uXG4gICAqIERlc2NyaXB0aW9uOlxuICAgKiAgIFRoaXMgZmluYWxpemVzIHRoZSB2YWxpZGF0b3JzIHRoYXQgdGhlIHVwZGF0aW5nXG4gICAqICAgYmxvY2sgbXVzdCBjaGVjayB0byBkZXRlcm1pbmUgd2hldGhlciBpdCdzIHNhZmUgdG9cbiAgICogICBza2lwIHJ1bm5pbmcgdGhlIGNvbnRlbnRzLlxuICAgKi9cbiAgRXhpdCxcblxuICAvKipcbiAgICogT3BlcmF0aW9uOiBDb252ZXJ0IHRoZSB0b3Agb2YgdGhlIHN0YWNrIGludG8gYSBib29sZWFuIHJlZmVyZW5jZS5cbiAgICpcbiAgICogRm9ybWF0OlxuICAgKiAgIChUb0Jvb2xlYW4pXG4gICAqIE9wZXJhbmQgU3RhY2s6XG4gICAqICAgLi4uLCBWZXJzaW9uZWRQYXRoUmVmZXJlbmNlPE9wYXF1ZT4g4oaSXG4gICAqICAgLi4uLCBWZXJzaW9uZWRQYXRoUmVmZXJlbmNlPGJvb2w+XG4gICAqL1xuICBUb0Jvb2xlYW4sXG5cbiAgLy8vIExJU1RTXG5cbiAgLyoqXG4gICAqIE9wZXJhdGlvbjogRW50ZXIgYSBsaXN0LlxuICAgKlxuICAgKiBGb3JtYXQ6XG4gICAqICAgKEVudGVyTGlzdCBhZGRyZXNzOnUzMilcbiAgICogT3BlcmFuZCBTdGFjazpcbiAgICogICAuLi4sIEl0ZXJhdG9yIOKGklxuICAgKiAgIC4uLlxuICAgKi9cbiAgRW50ZXJMaXN0LFxuXG4gIC8qKlxuICAgKiBPcGVyYXRpb246IEV4aXQgdGhlIGN1cnJlbnQgbGlzdC5cbiAgICpcbiAgICogRm9ybWF0OlxuICAgKiAgIChFeGl0TGlzdClcbiAgICogT3BlcmFuZCBTdGFjazpcbiAgICogICAuLi4g4oaSXG4gICAqICAgLi4uXG4gICAqL1xuICBFeGl0TGlzdCxcblxuICAvKipcbiAgICogT3BlcmF0aW9uOlxuICAgKiAgIENvbnZlcnQgYW4gb3BlcmFuZCBhbmQga2V5IGludG8gYW4gaXRlcmF0b3IgYW5kXG4gICAqICAgcHJlc2VuY2UgcmVmZXJlbmNlLlxuICAgKlxuICAgKiBGb3JtYXQ6XG4gICAqICAgKFB1dEl0ZXJhdG9yKVxuICAgKiBPcGVyYW5kIFN0YWNrOlxuICAgKiAgIC4uLiwga2V5OnN0cmluZywgbGlzdDpWZXJzaW9uZWRQYXRoUmVmZXJlbmNlIOKGklxuICAgKiAgIC4uLiwgaXRlcmF0b3I6UmVmZXJlbmNlSXRlcmF0b3IsIHByZXNlbnQ6UHJlc2VuY2VSZWZlcmVuY2VcbiAgICovXG4gIFB1dEl0ZXJhdG9yLFxuXG4gIC8qKlxuICAgKiBPcGVyYXRpb246XG4gICAqICAgU2V0IHVwIHRoZSBzdGFjayBmb3IgaXRlcmF0aW5nIGZvciBhIGdpdmVuIGtleSxcbiAgICogICBvciBqdW1wIHRvIGBlbmRgIGlmIHRoZXJlIGlzIG5vdGhpbmcgbGVmdCB0b1xuICAgKiAgIGl0ZXJhdGUuXG4gICAqXG4gICAqIEZvcm1hdDpcbiAgICogICAoSXRlcmF0ZSBlbmQ6dTMyKVxuICAgKiBPcGVyYW5kIFN0YWNrOlxuICAgKiAgIEZvcm0gMTogKHNvbWV0aGluZyB0byBpdGVyYXRlKVxuICAgKiAgIC4uLiDihpJcbiAgICogICAuLi4sIFZlcnNpb25lZFBhdGhSZWZlcmVuY2UsIFZlcnNpb25lZFBhdGhSZWZlcmVuY2UsIHN0cmluZ1xuICAgKiAgIEZvcm0gMjogKG5vdGhpbmcgbGVmdCB0byBpdGVyYXRlKVxuICAgKiAgIC4uLiDihpJcbiAgICogICAuLi5cbiAgICogRGVzY3JpcHRpb246XG4gICAqICAgSW4gRm9ybSAxLCB0aGUgc3RhY2sgd2lsbCBoYXZlIChpbiByZXZlcnNlIG9yZGVyKTpcbiAgICpcbiAgICogICAtIHRoZSBrZXksIGFzIGEgc3RyaW5nXG4gICAqICAgLSB0aGUgY3VycmVudCBpdGVyYXRlZCB2YWx1ZVxuICAgKiAgIC0gdGhlIG1lbW9pemVkIGl0ZXJhdGVkIHZhbHVlXG4gICAqL1xuICBJdGVyYXRlLFxuXG4gIC8vLyBDT01QT05FTlRTXG5cbiAgLyoqXG4gICAqIE9wZXJhdGlvbjogVGVzdCB3aGV0aGVyIGEgcmVmZXJlbmNlIGNvbnRhaW5zIGEgY29tcG9uZW50IGRlZmluaXRpb24uXG4gICAqXG4gICAqIEZvcm1hdDpcbiAgICogICAoTWFpbiBzdGF0ZTpyZWdpc3RlcilcbiAgICogT3BlcmFuZCBTdGFjazpcbiAgICogICAuLi4sIEludm9jYXRpb24sIENvbXBvbmVudERlZmluaXRpb24g4oaSXG4gICAqICAgLi4uXG4gICAqL1xuICBNYWluLFxuXG4gIC8qKlxuICAgKiBPcGVyYXRpb246IFRlc3Qgd2hldGhlciBhIHJlZmVyZW5jZSBjb250YWlucyBhIGNvbXBvbmVudCBkZWZpbml0aW9uLlxuICAgKlxuICAgKiBGb3JtYXQ6XG4gICAqICAgKElzQ29tcG9uZW50KVxuICAgKiBPcGVyYW5kIFN0YWNrOlxuICAgKiAgIC4uLiwgVmVyc2lvbmVkUGF0aFJlZmVyZW5jZTxPcGFxdWU+IOKGklxuICAgKiAgIC4uLiwgVmVyc2lvbmVkUGF0aFJlZmVyZW5jZTxib29sZWFuPlxuICAgKi9cbiAgSXNDb21wb25lbnQsXG5cbiAgLyoqXG4gICAqIE9wZXJhdGlvbjogUHVzaCB0aGUgY29udGVudCB0eXBlIG9udG8gdGhlIHN0YWNrLlxuICAgKlxuICAgKiBGb3JtYXQ6XG4gICAqICAgKENvbnRlbnRUeXBlKVxuICAgKiBPcGVyYW5kIFN0YWNrOlxuICAgKiAgIC4uLiwgVmVyc2lvbmVkUGF0aFJlZmVyZW5jZTxPcGFxdWU+IOKGklxuICAgKiAgIC4uLiwgVmVyc2lvbmVkUGF0aFJlZmVyZW5jZTxPcGFxdWU+LCBWZXJzaW9uZWRQYXRoUmVmZXJlbmNlPENvbnRlbnRUeXBlPlxuICAgKi9cbiAgQ29udGVudFR5cGUsXG5cbiAgLyoqXG4gICAqIE9wZXJhdGlvbjogQ3VycnkgYSBjb21wb25lbnQgZGVmaW5pdGlvbiBmb3IgYSBsYXRlciBpbnZvY2F0aW9uLlxuICAgKlxuICAgKiBGb3JtYXQ6XG4gICAqICAgKEN1cnJ5Q29tcG9uZW50IHRlbXBsYXRlTWV0YTojTG9jYXRvcilcbiAgICogT3BlcmFuZCBTdGFjazpcbiAgICogICAuLi4sIFZlcnNpb25lZFBhdGhSZWZlcmVuY2UsIFtWZXJzaW9uZWRQYXRoUmVmZXJlbmNlIC4uLl0sIEFyZ3VtZW50cyDihpJcbiAgICogICAuLi4sIHsgVmVyc2lvbmVkUGF0aFJlZmVyZW5jZSwgTG9jYXRvciwgQ2FwdHVyZWRBcmd1bWVudHMgfVxuICAgKi9cbiAgQ3VycnlDb21wb25lbnQsXG5cbiAgLyoqXG4gICAqIE9wZXJhdGlvbjogUHVzaCBhbiBhcHByb3ByaWF0ZSBjb21wb25lbnQgbWFuYWdlciBvbnRvIHRoZSBzdGFjay5cbiAgICpcbiAgICogRm9ybWF0OlxuICAgKiAgIChQdXNoQ29tcG9uZW50TWFuYWdlciAjQ29tcG9uZW50U3BlYylcbiAgICogT3BlcmFuZCBTdGFjazpcbiAgICogICAuLi4g4oaSXG4gICAqICAgLi4uLCB7IENvbXBvbmVudERlZmluaXRpb24sIENvbXBvbmVudE1hbmFnZXIgfVxuICAgKi9cbiAgUHVzaENvbXBvbmVudERlZmluaXRpb24sXG5cbiAgLyoqXG4gICAqIE9wZXJhdGlvbjpcbiAgICogICBQdXNoZXMgdGhlIENvbXBvbmVudEluc3RhbmNlIG9udG8gdGhlIHN0YWNrIHRoYXQgaXNcbiAgICogICB1c2VkIGR1cmluZyB0aGUgaW52b2tlLlxuICAgKlxuICAgKiBGb3JtYXQ6XG4gICAqICAgKFB1c2hEeW5hbWljQ29tcG9uZW50SW5zdGFuY2UpXG4gICAqIE9wZXJhbmQgU3RhY2s6XG4gICAqICAgLi4uLCBDb21wb25lbnREZWZpbml0aW9uIOKGklxuICAgKiAgIC4uLiwgeyBDb21wb25lbnREZWZpbml0aW9uLCBtYW5hZ2VyOiBudWxsLCBsYXlvdXQ6IG51bGwsIHN0YXRlOiBudWxsLCBoYW5kbGU6IG51bGwsIHRhYmxlOiBudWxsIH1cbiAgICovXG5cbiAgUHVzaER5bmFtaWNDb21wb25lbnRJbnN0YW5jZSxcblxuICAvKipcbiAgICogT3BlcmF0aW9uOlxuICAgKiAgIFB1c2hlcyBhIGN1cnJpZWQgY29tcG9uZW50IGRlZmluaXRpb24gb24gdG8gdGhlIHN0YWNrXG4gICAqXG4gICAqIEZvcm1hdDpcbiAgICogICAoUHVzaEN1cnJpZWRDb21wb25lbnQpXG4gICAqIE9wZXJhbmQgU3RhY2s6XG4gICAqICAgLi4uLCBWZXJzaW9uZWRQYXRoUmVmZXJlbmNlPE9wYXF1ZT4g4oaSXG4gICAqICAgLi4uLCBDb21wb25lbnREZWZpbml0aW9uXG4gICAqL1xuICBQdXNoQ3VycmllZENvbXBvbmVudCxcblxuICAvKipcbiAgICogT3BlcmF0aW9uOlxuICAgKiAgIFB1c2ggYSByZXNvbHZlZCBjb21wb25lbnQgZGVmaW5pdGlvbiBvbnRvIHRoZSBzdGFja1xuICAgKlxuICAgKiBGb3JtYXQ6XG4gICAqICAgKFJlc29sdmVEeW5hbWljQ29tcG9uZW50IHRlbXBsYXRlTWV0YTojTG9jYXRvcilcbiAgICogT3BlcmFuZCBTdGFjazpcbiAgICogICAuLi4sIFZlcnNpb25lZFBhdGhSZWZlcmVuY2U8T3BhcXVlPiDihpJcbiAgICogICAuLi4sIENvbXBvbmVudERlZmluaXRpb25cbiAgICovXG4gIFJlc29sdmVEeW5hbWljQ29tcG9uZW50LFxuXG4gIC8qKlxuICAgKiBPcGVyYXRpb246IFB1c2ggYSB1c2VyIHJlcHJlc2VudGF0aW9uIG9mIGFyZ3Mgb250byB0aGUgc3RhY2suXG4gICAqXG4gICAqIEZvcm1hdDpcbiAgICogICAoUHVzaEFyZ3MgbmFtZXM6I0FycmF5PCNzdHJpbmc+IHBvc2l0aW9uYWxDb3VudDp1MzIgc3ludGhldGljOiNib29sZWFuKVxuICAgKlxuICAgKiBPcGVyYW5kIFN0YWNrOlxuICAgKiAgIC4uLiwgW1ZlcnNpb25lZFBhdGhSZWZlcmVuY2UgLi4uXSAg4oaSXG4gICAqICAgLi4uLCBbVmVyc2lvbmVkUGF0aFJlZmVyZW5jZSAuLi5dLCBBcmd1bWVudHNcbiAgICpcbiAgICogRGVzY3JpcHRpb246XG4gICAqICAgVGhpcyBhcmd1bWVudHMgb2JqZWN0IGlzIG9ubHkgbmVjZXNzYXJ5IHdoZW4gY2FsbGluZyBpbnRvXG4gICAqICAgdXNlci1zcGVjaWZpZWQgaG9va3MuIEl0IGlzIG1lYW50IHRvIGJlIGltcGxlbWVudGVkIGFzIGFcbiAgICogICB0cmFuc2llbnQgcHJveHkgdGhhdCByZWFkcyBpbnRvIHRoZSBzdGFjayBhcyBuZWVkZWQuXG4gICAqICAgSG9sZGluZyBvbnRvIHRoZSBBcmd1bWVudHMgYWZ0ZXIgdGhlIGNhbGwgaGFzIGNvbXBsZXRlZCBpc1xuICAgKiAgIGlsbGVnYWwuXG4gICAqL1xuICBQdXNoQXJncyxcblxuICAvKipcbiAgICogT3BlcmF0aW9uOiBQdXNoIGVtcHR5IGFyZ3Mgb250byB0aGUgc3RhY2tcbiAgICpcbiAgICogRm9ybWF0OlxuICAgKiAgIChFbXB0eUFyZ3MpXG4gICAqXG4gICAqIE9wZXJhbmRTdGFjazpcbiAgICogICAuLi4g4oaSXG4gICAqICAgLi4uLCBBcmd1bWVudHNcbiAgICovXG4gIFB1c2hFbXB0eUFyZ3MsXG5cbiAgLyoqXG4gICAqIE9wZXJhdGlvbjogUG9wcyBBcmd1bWVudHMgZnJvbSB0aGUgc3RhY2sgYW5kIGNsZWFycyB0aGUgbmV4dCBOIGFyZ3MuXG4gICAqXG4gICAqIEZvcm1hdDpcbiAgICogICAoUG9wQXJncylcbiAgICpcbiAgICogT3BlcmFuZCBTdGFjazpcbiAgICogICAuLi4sIFtWZXJzaW9uZWRQYXRoUmVmZXJlbmNlIC4uLl0sIEFyZ3VtZW50cyAg4oaSXG4gICAqICAgLi4uXG4gICAqXG4gICAqIERlc2NyaXB0aW9uOlxuICAgKiBUaGUgYXJndW1lbnRzIG9iamVjdCBjb250YWlucyB0aGUgaW5mb3JtYXRpb24gb2YgaG93IG1hbnkgdXNlclxuICAgKiBzdXBwbGllZCBhcmdzIHRoZSBjb21wb25lbnQgd2FzIGludm9rZWQgd2l0aC4gVG8gY2xlYXIgdGhlbSBmcm9tXG4gICAqIHRoZSBzdGFjayB3ZSBtdXN0IHBvcCBpdCBmcm9tIHRoZSBzdGFjayBhbmQgY2FsbCBgY2xlYXJgIG9uIGl0XG4gICAqIHRvIHJlbW92ZSB0aGUgYXJndW1lbnQgdmFsdWVzIGZyb20gdGhlIHN0YWNrLlxuICAgKi9cbiAgUG9wQXJncyxcblxuICAvKipcbiAgICogT3BlcmF0aW9uOiAuLi5cbiAgICogRm9ybWF0OlxuICAgKiAgIChQcmVwYXJlQXJncyBzdGF0ZTpyZWdpc3RlcilcbiAgICogT3BlcmFuZCBTdGFjazpcbiAgICogICAuLi4g4oaSXG4gICAqICAgLi4uXG4gICAqL1xuICBQcmVwYXJlQXJncyxcblxuICAvKipcbiAgICogT3BlcmF0aW9uOiBSZXBsYWNlcyBBcmd1bWVudHMgb24gdGhlIHN0YWNrIHdpdGggQ2FwdHVyZWRBcmd1bWVudHNcbiAgICogRm9ybWF0OlxuICAgKiAgIChDYXB0dXJlQXJncylcbiAgICpcbiAgICogT3BlcmFuZCBTdGFjazpcbiAgICogICAuLi4sIEFyZ3VtZW50cyAg4oaSXG4gICAqICAgLi4uLCBDYXB0dXJlZEFyZ3VtZW50c1xuICAgKlxuICAgKiBEZXNjcmlwdGlvbjpcbiAgICogVGhlIEFyZ3VtZW50cyBvYmplY3QgaXMgbXV0YXRlZCBpbiBwbGFjZSBiZWNhdXNlIGl0IGlzIHVzdWFsbHkgY29uc3VtZWQgaW1tZWRpYXRlbHlcbiAgICogYWZ0ZXIgYmVpbmcgcHVzaGVkIG9uIHRvIHRoZSBzdGFjay4gSW4gc29tZSBzaXR1YXRpb25zLCBzdWNoIGFzIHdpdGggY3VycmllZCBjb21wb25lbnRzLFxuICAgKiBpbmZvcm1hdGlvbiBhYm91dCBtb3JlIHRoYW4gb25lIEFyZ3VtZW50IG1heSBuZWVkIHRvIGV4aXN0IG9uIHRoZSBzdGFjayBhdCBvbmNlLiBJbiB0aG9zZVxuICAgKiBjYXNlcywgdGhlIENhcHR1cmVBcmdzIGluc3RydWN0aW9uIHBvcHMgYW4gQXJndW1lbnRzIG9iamVjdCBvZmYgdGhlIHN0YWNrIGFuZCByZXBsYWNlcyBpdFxuICAgKiB3aXRoIHRoZSBpbW11dGFibGUgQ2FwdHVyZWRBcmdzIHNuYXBzaG90LlxuICAgKi9cbiAgQ2FwdHVyZUFyZ3MsXG5cbiAgLyoqXG4gICAqIE9wZXJhdGlvbjogQ3JlYXRlIHRoZSBjb21wb25lbnQgYW5kIHB1c2ggaXQgb250byB0aGUgc3RhY2suXG4gICAqIEZvcm1hdDpcbiAgICogICAoQ3JlYXRlQ29tcG9uZW50IGZsYWdzOnUzMiBzdGF0ZTpyZWdpc3RlcilcbiAgICogICAuLi4g4oaSXG4gICAqICAgLi4uXG4gICAqIERlc2NyaXB0aW9uOlxuICAgKiBPcGVyYW5kIFN0YWNrOlxuICAgKiAgIEZsYWdzOlxuICAgKlxuICAgKiAgICogMGIwMDE6IEhhcyBhIGRlZmF1bHQgYmxvY2tcbiAgICogICAqIDBiMDEwOiBIYXMgYW4gaW52ZXJzZSBibG9ja1xuICAgKi9cbiAgQ3JlYXRlQ29tcG9uZW50LFxuXG4gIC8qKlxuICAgKiBPcGVyYXRpb246IFJlZ2lzdGVyIGEgZGVzdHJ1Y3RvciBmb3IgdGhlIGN1cnJlbnQgY29tcG9uZW50XG4gICAqXG4gICAqIEZvcm1hdDpcbiAgICogICAoUmVnaXN0ZXJDb21wb25lbnREZXN0cnVjdG9yIHN0YXRlOnJlZ2lzdGVyKVxuICAgKiBPcGVyYW5kIFN0YWNrOlxuICAgKiAgIC4uLiDihpJcbiAgICogICAuLi5cbiAgICovXG4gIFJlZ2lzdGVyQ29tcG9uZW50RGVzdHJ1Y3RvcixcblxuICAvKipcbiAgICogT3BlcmF0aW9uOiBQdXNoIGEgbmV3IEVsZW1lbnRPcGVyYXRpb25zIGZvciB0aGUgY3VycmVudCBjb21wb25lbnQuXG4gICAqXG4gICAqIEZvcm1hdDpcbiAgICogICAoUHV0Q29tcG9uZW50T3BlcmF0aW9ucylcbiAgICogT3BlcmFuZCBTdGFjazpcbiAgICogICAuLi4g4oaSXG4gICAqICAgLi4uXG4gICAqL1xuICBQdXRDb21wb25lbnRPcGVyYXRpb25zLFxuXG4gIC8qKlxuICAgKiBPcGVyYXRpb246IFB1c2ggdGhlIGNvbXBvbmVudCdzIGBzZWxmYCBvbnRvIHRoZSBzdGFjay5cbiAgICpcbiAgICogRm9ybWF0OlxuICAgKiAgIChHZXRDb21wb25lbnRTZWxmIHN0YXRlOnJlZ2lzdGVyKVxuICAgKiBPcGVyYW5kIFN0YWNrOlxuICAgKiAgIC4uLiDihpJcbiAgICogICAuLi4sIFZlcnNpb25lZFBhdGhSZWZlcmVuY2VcbiAgICovXG4gIEdldENvbXBvbmVudFNlbGYsXG5cbiAgLyoqXG4gICAqIE9wZXJhdGlvbjogUHVzaCB0aGUgY29tcG9uZW50J3MgYHRhZ05hbWVgIG9udG8gdGhlIHN0YWNrLlxuICAgKlxuICAgKiBGb3JtYXQ6XG4gICAqICAgKEdldENvbXBvbmVudFRhZ05hbWUgc3RhdGU6cmVnaXN0ZXIpXG4gICAqIE9wZXJhbmQgU3RhY2s6XG4gICAqICAgLi4uIOKGklxuICAgKiAgIC4uLiwgT3B0aW9uPHN0cmluZz5cbiAgICovXG4gIEdldENvbXBvbmVudFRhZ05hbWUsXG5cbiAgLyoqXG4gICAqIE9wZXJhdGlvbjogR2V0IHRoZSBjb21wb25lbnQgbGF5b3V0IGZyb20gdGhlIG1hbmFnZXIuXG4gICAqXG4gICAqIEZvcm1hdDpcbiAgICogICAoR2V0Q29tcG9uZW50TGF5b3V0IHN0YXRlOnJlZ2lzdGVyKVxuICAgKiBPcGVyYW5kIFN0YWNrOlxuICAgKiAgIC4uLiDihpJcbiAgICogICAuLi4sIFByb2dyYW1TeW1ib2xUYWJsZSwgSGFuZGxlXG4gICAqL1xuICBHZXRDb21wb25lbnRMYXlvdXQsXG5cbiAgLyoqXG4gICAqIE9wZXJhdGlvbjogUG9wdWxhdGUgdGhlIGV2YWwgbG9va3VwIGlmIG5lY2Vzc2FyeS5cbiAgICpcbiAgICogRm9ybWF0OlxuICAgKiAgIChTZXR1cEZvckV2YWwgc3RhdGU6cmVnaXN0ZXIpXG4gICAqIE9wZXJhbmQgU3RhY2s6XG4gICAqICAgLi4uIOKGklxuICAgKiAgIC4uLlxuICAgKi9cbiAgU2V0dXBGb3JFdmFsLFxuXG4gIC8qKlxuICAgKiBPcGVyYXRpb246IFBvcHVsYXRlIHRoZSBldmFsIGxvb2t1cCBpZiBuZWNlc3NhcnkuXG4gICAqXG4gICAqIEZvcm1hdDpcbiAgICogICAoU2V0dXBGb3JFdmFsIHN0YXRlOnJlZ2lzdGVyKVxuICAgKiBPcGVyYW5kIFN0YWNrOlxuICAgKiAgIC4uLiDihpJcbiAgICogICAuLi5cbiAgICovXG4gIEJpbmRFdmFsU2NvcGUsXG5cbiAgLyoqXG4gICAqIE9wZXJhdGlvbjpcbiAgICogICBQb3B1bGF0ZSB0aGUgc3RhdGUgcmVnaXN0ZXIgd2l0aCB0aGUgbGF5b3V0IGN1cnJlbnRseVxuICAgKiAgIG9uIHRoZSBzdGFjay5cbiAgICpcbiAgICogRm9ybWF0OlxuICAgKiAgIChQb3B1bGF0ZUxheW91dCBzdGF0ZTpyZWdpc3RlcilcbiAgICogT3BlcmFuZCBTdGFjazpcbiAgICogICAuLi4sIFByb2dyYW1TeW1ib2xUYWJsZSwgSGFuZGxlIOKGklxuICAgKiAgIC4uLlxuICAgKi9cbiAgUG9wdWxhdGVMYXlvdXQsXG5cbiAgLyoqXG4gICAqIE9wZXJhdGlvbjogSW52b2tlIHRoZSBsYXlvdXQgcmV0dXJuZWQgYnkgdGhlIG1hbmFnZXIuXG4gICAqXG4gICAqIEZvcm1hdDpcbiAgICogICAoSW52b2tlQ29tcG9uZW50TGF5b3V0IHN0YXRlOnJlZ2lzdGVyKVxuICAgKiBPcGVyYW5kIFN0YWNrOlxuICAgKiAgIC4uLiDihpJcbiAgICogICAuLi5cbiAgICovXG4gIEludm9rZUNvbXBvbmVudExheW91dCxcblxuICAvKipcbiAgICogT3BlcmF0aW9uOiBCZWdpbiBhIG5ldyBjYWNoZSBncm91cFxuICAgKlxuICAgKiBGb3JtYXQ6XG4gICAqICAgKEJlZ2luQ29tcG9uZW50VHJhbnNhY3Rpb24pXG4gICAqIE9wZXJhbmQgU3RhY2s6XG4gICAqICAgLi4uLCBDb21wb25lbnRNYW5hZ2VyPFQ+LCBUIOKGklxuICAgKiAgIC4uLiwgQ29tcG9uZW50TWFuYWdlcjxUPiwgVFxuICAgKi9cbiAgQmVnaW5Db21wb25lbnRUcmFuc2FjdGlvbixcblxuICAvKipcbiAgICogT3BlcmF0aW9uOiBDb21taXQgdGhlIGN1cnJlbnQgY2FjaGUgZ3JvdXBcbiAgICpcbiAgICogRm9ybWF0OlxuICAgKiAgIChDb21taXRDb21wb25lbnRUcmFuc2FjdGlvbilcbiAgICogT3BlcmFuZCBTdGFjazpcbiAgICogICAuLi4g4oaSXG4gICAqICAgLi4uXG4gICAqL1xuICBDb21taXRDb21wb25lbnRUcmFuc2FjdGlvbixcblxuICAvKipcbiAgICogT3BlcmF0aW9uOiBJbnZva2UgZGlkQ3JlYXRlRWxlbWVudCBvbiB0aGUgY3VycmVudCBjb21wb25lbnQgbWFuYWdlclxuICAgKlxuICAgKiBGb3JtYXQ6XG4gICAqICAgKERpZENyZWF0ZUVsZW1lbnQgc3RhdGU6cmVnaXN0ZXIpXG4gICAqIE9wZXJhbmQgU3RhY2s6XG4gICAqICAgLi4uIOKGklxuICAgKiAgIC4uLlxuICAgKi9cbiAgRGlkQ3JlYXRlRWxlbWVudCxcblxuICAvKipcbiAgICogT3BlcmF0aW9uOiBJbnZva2UgZGlkUmVuZGVyTGF5b3V0IG9uIHRoZSBjdXJyZW50IGNvbXBvbmVudCBtYW5hZ2VyXG4gICAqXG4gICAqIEZvcm1hdDpcbiAgICogICAoRGlkUmVuZGVyTGF5b3V0IHN0YXRlOnJlZ2lzdGVyKVxuICAgKiBPcGVyYW5kIFN0YWNrOlxuICAgKiAgIC4uLiwg4oaSXG4gICAqICAgLi4uXG4gICAqL1xuICBEaWRSZW5kZXJMYXlvdXQsXG5cbiAgLy8vIFBBUlRJQUxTXG5cbiAgLyoqXG4gICAqIE9wZXJhdGlvbjogTG9va3VwIGFuZCBpbnZva2UgYSBwYXJ0aWFsIHRlbXBsYXRlLlxuICAgKlxuICAgKiBGb3JtYXQ6XG4gICAqICAgKEludm9rZVBhcnRpYWwgdGVtcGxhdGVNZXRhOiNMb2NhdG9yIHN5bWJvbHM6I0FycmF5PCNzdHJpbmc+IGV2YWxJbmZvOiNBcnJheTxudW1iZXI+KVxuICAgKiBPcGVyYW5kIFN0YWNrOlxuICAgKiAgIC4uLiwgVmVyc2lvbmVkUGF0aFJlZmVyZW5jZTxzdHJpbmc+IOKGklxuICAgKiAgIC4uLlxuICAgKi9cbiAgSW52b2tlUGFydGlhbCxcblxuICAvKipcbiAgICogT3BlcmF0aW9uOlxuICAgKiAgIFJlc29sdmUge3tmb299fSBpbnNpZGUgYSBwYXJ0aWFsLCB3aGljaCBjb3VsZCBiZSBlaXRoZXIgYSBzZWxmLWxvb2t1cFxuICAgKiAgIG9yIGEgbG9jYWwgdmFyaWFibGUgdGhhdCBpcyBpbi1zY29wZSBmb3IgdGhlIGNhbGxlci5cbiAgICpcbiAgICogRm9ybWF0OlxuICAgKiAgIChSZXNvbHZlTWF5YmVMb2NhbCBsb2NhbDojc3RyaW5nKVxuICAgKiBPcGVyYW5kIFN0YWNrOlxuICAgKiAgIC4uLiDihpJcbiAgICogICAuLi4sIFZlcnNpb25lZFBhdGhSZWZlcmVuY2VcbiAgICovXG4gIFJlc29sdmVNYXliZUxvY2FsLFxuXG4gIC8vLyBERUJVR0dFUlxuXG4gIC8qKlxuICAgKiBPcGVyYXRpb246IEFjdGl2YXRlIHRoZSBkZWJ1Z2dlclxuICAgKlxuICAgKiBGb3JtYXQ6XG4gICAqICAgKERlYnVnZ2VyIHN5bWJvbHM6I0FycmF5PHN0cmluZz4gZXZhbEluZm86I0FycmF5PG51bWJlcj4pXG4gICAqIE9wZXJhbmQgU3RhY2s6XG4gICAqICAgLi4uIOKGklxuICAgKiAgIC4uLlxuICAgKi9cbiAgRGVidWdnZXIsXG5cbiAgLyoqIFRoZSBzaXplIG9mIHRoZSBvcGNvZGUgbGlzdCAqL1xuICBTaXplLFxufVxuIl19
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3Bjb2Rlcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3BhY2thZ2VzL0BnbGltbWVyL3ZtL2xpYi9vcGNvZGVzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgY29uc3QgZW51bSBPcCB7XG4gIC8qXG4gICAgRG9jdW1lbnRhdGlvbiBUT0RPOlxuXG4gICAgRG9jdW1lbnQgdGhlIGxvY2FsIHZhcmlhYmxlIGxheW91dCBpbiB0aGUgc3RhY2tcbiAgICBkaWFncmFtIGJlZm9yZS1hbmQtYWZ0ZXIuXG5cbiAgICBEb2N1bWVudCB1cGRhdGluZyBvcGNvZGVzIGVtaXR0aW5nIGZyb20gdW5yZWFjaGFibGVcbiAgICBhcHBlbmQgb3Bjb2RlLlxuXG4gICAgRG9jdW1lbnQgdGhlIGVsZW1lbnQgc3RhY2ssIGJsb2NrIHN0YWNrIGFuZCBMaXN0XG4gICAgYmxvY2sgc3RhY2suXG4gICAqL1xuXG4gIC8qKlxuICAgKiBUaGlzIG9wY29kZSBzaG91bGQgbmV2ZXIgYmUgcmVhY2hlZC5cbiAgICovXG4gIEJ1ZyxcblxuICAvLy8gRVhQUkVTU0lPTlNcblxuICAvKipcbiAgICogT3BlcmF0aW9uOiBFdmFsdWF0ZSBhIEhlbHBlci5cbiAgICogRm9ybWF0OlxuICAgKiAgIChIZWxwZXIgaGVscGVyOiNGdW5jdGlvbilcbiAgICogT3BlcmFuZCBTdGFjazpcbiAgICogICAuLi4sIFtWZXJzaW9uZWRQYXRoUmVmZXJlbmNlIC4uLl0sIEFyZ3VtZW50cyDihpJcbiAgICogICAuLi4sIFZlcnNpb25lZFBhdGhSZWZlcmVuY2VcbiAgICovXG4gIEhlbHBlcixcblxuICAvKipcbiAgICogT3BlcmF0aW9uOlxuICAgKiAgIEJpbmQgdGhlIG5hbWVkIGFyZ3VtZW50cyBpbiB0aGUgQXJndW1lbnRzIHRvIHRoZSBzeW1ib2xzXG4gICAqICAgc3BlY2lmaWVkIGJ5IHRoZSBzeW1ib2wgdGFibGUgaW4gdGhlIGNvbXBvbmVudCBzdGF0ZSBhdCByZWdpc3Rlci5cbiAgICogRm9ybWF0OlxuICAgKiAgIChTZXROYW1lZFZhcmlhYmxlcyByZWdpc3Rlcjp1MzIpXG4gICAqIE9wZXJhbmQgU3RhY2s6XG4gICAqICAgLi4uLCBBcmd1bWVudHMg4oaSXG4gICAqICAgLi4uXG4gICAqL1xuICBTZXROYW1lZFZhcmlhYmxlcyxcblxuICAvKipcbiAgICogT3BlcmF0aW9uOlxuICAgKiAgIEJpbmQgdGhlIGJsb2NrcyBpbiB0aGUgQXJndW1lbnRzIHRvIHRoZSBzeW1ib2xzIHNwZWNpZmllZCBieSB0aGVcbiAgICogICBzeW1ib2wgdGFibGUgaW4gdGhlIGNvbXBvbmVudCBzdGF0ZSBhdCByZWdpc3Rlci5cbiAgICogRm9ybWF0OlxuICAgKiAgIChTZXRCbG9ja3MgcmVnaXN0ZXI6dTMyKVxuICAgKiBPcGVyYW5kIFN0YWNrOlxuICAgKiAgIC4uLiwgQXJndW1lbnRzIOKGklxuICAgKiAgIC4uLlxuICAgKi9cbiAgU2V0QmxvY2tzLFxuXG4gIC8qKlxuICAgKiBPcGVyYXRpb246XG4gICAqICAgQmluZCB0aGUgdmFyaWFibGUgcmVwcmVzZW50ZWQgYnkgYSBzeW1ib2wgZnJvbVxuICAgKiAgIHRoZSB2YWx1ZSBhdCB0aGUgdG9wIG9mIHRoZSBzdGFjay5cbiAgICogRm9ybWF0OlxuICAgKiAgIChTZXRWYXJpYWJsZSBzeW1ib2w6dTMyKVxuICAgKiBPcGVyYW5kIFN0YWNrOlxuICAgKiAgIC4uLiwgVmVyc2lvbmVkUGF0aFJlZmVyZW5jZSDihpJcbiAgICogICAuLi5cbiAgICovXG4gIFNldFZhcmlhYmxlLFxuXG4gIC8qKlxuICAgKiBPcGVyYXRpb246XG4gICAqICAgQmluZCB0aGUgYmxvY2sgYXQgdGhlIHRvcCBvZiB0aGUgc3RhY2suXG4gICAqIEZvcm1hdDpcbiAgICogICAoU2V0QmxvY2sgc3ltYm9sOnUzMilcbiAgICogT3BlcmFuZCBTdGFjazpcbiAgICogICAuLi4sIFN5bWJvbFRhYmxlLCBIYW5kbGUg4oaSXG4gICAqICAgLi4uXG4gICAqL1xuICBTZXRCbG9jayxcblxuICAvKipcbiAgICogT3BlcmF0aW9uOlxuICAgKiAgIFB1c2ggdGhlIGNvbnRlbnRzIG9mIHRoZSB2YXJpYWJsZSByZXByZXNlbnRlZCBieVxuICAgKiAgIGEgc3ltYm9sIChhIHBvc2l0aW9uYWwgb3IgbmFtZWQgYXJndW1lbnQpIG9udG9cbiAgICogICB0aGUgc3RhY2suXG4gICAqIEZvcm1hdDpcbiAgICogICAoUHVzaFN5bWJvbCBzeW1ib2w6dTMyKVxuICAgKiBPcGVyYW5kIFN0YWNrOlxuICAgKiAgIC4uLiDihpJcbiAgICogICAuLi4sIFZlcnNpb25lZFBhdGhSZWZlcmVuY2VcbiAgICovXG4gIEdldFZhcmlhYmxlLFxuXG4gIC8qKlxuICAgKiBPcGVyYXRpb246XG4gICAqICAgUG9wIGEgVmVyc2lvbmVkUGF0aFJlZmVyZW5jZSBmcm9tIHRoZSB0b3Agb2YgdGhlXG4gICAqICAgc3RhY2ssIGFuZCBwdXNoIGEgVmVyc2lvbmVkUGF0aFJlZmVyZW5jZSBjb25zdHJ1Y3RlZFxuICAgKiAgIGJ5IGAuZ2V0KHByb3BlcnR5KWAuXG4gICAqIEZvcm1hdDpcbiAgICogICAoR2V0UHJvcGVydHkgcHJvcGVydHk6I3N0cmluZylcbiAgICogT3BlcmFuZCBTdGFjazpcbiAgICogICAuLi4sIFZlcnNpb25lZFBhdGhSZWZlcmVuY2Ug4oaSXG4gICAqICAgLi4uLCBWZXJzaW9uZWRQYXRoUmVmZXJlbmNlXG4gICAqL1xuICBHZXRQcm9wZXJ0eSxcblxuICAvKipcbiAgICogT3BlcmF0aW9uOiBQdXNoIHRoZSBzcGVjaWZpZWQgYm91bmQgYmxvY2sgb250byB0aGUgc3RhY2suXG4gICAqIEZvcm1hdDpcbiAgICogICAoR2V0QmxvY2sgYmxvY2s6dTMyKVxuICAgKiBPcGVyYW5kIFN0YWNrOlxuICAgKiAgIC4uLiDihpJcbiAgICogICAuLi4sIElubGluZUJsb2NrXG4gICAqL1xuICBHZXRCbG9jayxcblxuICAvKipcbiAgICogT3BlcmF0aW9uOlxuICAgKiAgIFB1c2ggVFJVRSBvbnRvIHRoZSBzdGFjayBpZiB0aGUgc3BlY2lmaWVkIGJsb2NrXG4gICAqICAgaXMgYm91bmQgYW5kIEZBTFNFIGlmIGl0IGlzIG5vdC5cbiAgICogRm9ybWF0OlxuICAgKiAgIChIYXNCbG9jayBibG9jazp1MzIpXG4gICAqIE9wZXJhbmQgU3RhY2s6XG4gICAqICAgLi4uIOKGklxuICAgKiAgIC4uLiwgYm9vbGVhblxuICAgKi9cbiAgSGFzQmxvY2ssXG5cbiAgLyoqXG4gICAqIE9wZXJhdGlvbjpcbiAgICogICBQdXNoIFRSVUUgb250byB0aGUgc3RhY2sgaWYgdGhlIHNwZWNpZmllZCBibG9ja1xuICAgKiAgIGlzIGJvdW5kICphbmQqIGhhcyBhdCBsZWFzdCBvbmUgc3BlY2lmaWVkIGZvcm1hbFxuICAgKiAgIHBhcmFtZXRlciwgYW5kIEZBTFNFIG90aGVyd2lzZS5cbiAgICogRm9ybWF0OlxuICAgKiAgIChIYXNCbG9ja1BhcmFtcyBibG9jazp1MzIpXG4gICAqIE9wZXJhbmQgU3RhY2s6XG4gICAqICAgLi4uIOKGklxuICAgKiAgIC4uLiwgVmVyc2lvbmVkUGF0aFJlZmVyZW5jZSAoYm9vbGVhbilcbiAgICovXG4gIEhhc0Jsb2NrUGFyYW1zLFxuXG4gIC8qKlxuICAgKiBPcGVyYXRpb246XG4gICAqICAgUG9wIGNvdW50IGBWZXJzaW9uZWRQYXRoUmVmZXJlbmNlYHMgb2ZmIHRoZSBzdGFjayBhbmRcbiAgICogICBjb25zdHJ1Y3QgYSBuZXcgQ29uY2F0UmVmZXJlbmNlIGZyb20gdGhlbSAoaW4gcmV2ZXJzZVxuICAgKiAgIG9yZGVyKS5cbiAgICogRm9ybWF0OlxuICAgKiAgIChDb25jYXQgY291bnQ6dTMyKVxuICAgKiBPcGVyYW5kIFN0YWNrOlxuICAgKiAgIC4uLiwgVmVyc2lvbmVkUGF0aFJlZmVyZW5jZSwgW1ZlcnNpb25lZFBhdGhSZWZlcmVuY2UgLi4uXSDihpJcbiAgICogICAuLi4sIENvbmNhdFJlZmVyZW5jZVxuICAgKi9cbiAgQ29uY2F0LFxuXG4gIC8qKlxuICAgKiBPcGVyYXRpb246XG4gICAqICAgUHVzaCBhbiBPYmplY3QgY29uc3RhbnQgb250byB0aGUgc3RhY2sgdGhhdCBpcyBub3RcbiAgICogICBhIEphdmFTY3JpcHQgcHJpbWl0aXZlLlxuICAgKiBGb3JtYXQ6XG4gICAqICAgKFB1c2hDb25zdGFudCBjb25zdGFudDojT2JqZWN0KVxuICAgKiBPcGVyYW5kIFN0YWNrOlxuICAgKiAgIC4uLiDihpJcbiAgICogICAuLi4sIE9wYXF1ZVxuICAgKi9cbiAgQ29uc3RhbnQsXG5cbiAgLyoqXG4gICAqIE9wZXJhdGlvbjpcbiAgICogICBXcmFwIGEgSmF2YVNjcmlwdCBwcmltaXRpdmUgaW4gYSByZWZlcmVuY2UgYW5kIHB1c2ggaXRcbiAgICogICBvbnRvIHRoZSBzdGFjay5cbiAgICogRm9ybWF0OlxuICAgKiAgIChQdXNoUHJpbWl0aXZlIGNvbnN0YW50OiNQcmltaXRpdmUpXG4gICAqIE9wZXJhbmQgU3RhY2s6XG4gICAqICAgLi4uIOKGklxuICAgKiAgIC4uLiwgUHJpbWl0aXZlXG4gICAqIERlc2NyaXB0aW9uOlxuICAgKiAgIFRoZSB0d28gaGlnaCBiaXRzIG9mIHRoZSBjb25zdGFudCByZWZlcmVuY2UgZGVzY3JpYmVcbiAgICogICB0aGUga2luZCBvZiBwcmltaXRpdmU6XG4gICAqXG4gICAqICAgMDA6IG51bWJlclxuICAgKiAgIDAxOiBzdHJpbmdcbiAgICogICAxMDogdHJ1ZSB8IGZhbHNlIHwgbnVsbCB8IHVuZGVmaW5lZFxuICAgKi9cbiAgUHJpbWl0aXZlLFxuXG4gIC8qKlxuICAgKiBPcGVyYXRpb246IENvbnZlcnQgdGhlIHRvcCBvZiB0aGUgc3RhY2sgaW50byBhIHByaW1pdGl2ZSByZWZlcmVuY2UuXG4gICAqXG4gICAqIEZvcm1hdDpcbiAgICogICAoUHJpbWl0aXZlUmVmZXJlbmNlKVxuICAgKiBPcGVyYW5kIFN0YWNrOlxuICAgKiAgIC4uLiwgUHJpbWl0aXZlIOKGklxuICAgKiAgIC4uLiwgVmVyc2lvbmVkUGF0aFJlZmVyZW5jZTxQcmltaXRpdmU+XG4gICAqL1xuICBQcmltaXRpdmVSZWZlcmVuY2UsXG5cbiAgLyoqXG4gICAqIE9wZXJhdGlvbjogQ29udmVydCB0aGUgdG9wIG9mIHRoZSBzdGFjayBpbnRvIGEgbnVtYmVyLlxuICAgKlxuICAgKiBGb3JtYXQ6XG4gICAqICAgKFJlaWZ5VTMyKVxuICAgKiBPcGVyYW5kIFN0YWNrOlxuICAgKiAgIC4uLiwgVmVyc2lvbmVkUGF0aFJlZmVyZW5jZTx1MzI+IOKGklxuICAgKiAgIC4uLiwgVmVyc2lvbmVkUGF0aFJlZmVyZW5jZTx1MzI+LCB1MzJcbiAgICovXG4gIFJlaWZ5VTMyLFxuXG4gIC8qKlxuICAgKiBPcGVyYXRpb246IER1cGxpY2F0ZSBhbmQgcHVzaCBpdGVtIGZyb20gYW4gb2Zmc2V0IGluIHRoZSBzdGFjay5cbiAgICogRm9ybWF0OlxuICAgKiAgIChEdXAgcmVnaXN0ZXI6dTMyLCBvZmZzZXQ6dTMyKVxuICAgKiBPcGVyYW5kIFN0YWNrOlxuICAgKiAgIC4uLiwgT3BhcXVlIOKGklxuICAgKiAgIC4uLiwgT3BhcXVlLCBPcGFxdWVcbiAgICovXG4gIER1cCxcblxuICAvKipcbiAgICogT3BlcmF0aW9uOiBQb3AgTiBpdGVtcyBvZmYgdGhlIHN0YWNrIGFuZCB0aHJvdyBhd2F5IHRoZSB2YWx1ZS5cbiAgICogRm9ybWF0OlxuICAgKiAgIChQb3ApXG4gICAqIE9wZXJhbmQgU3RhY2s6XG4gICAqICAgLi4uLCBPcGFxdWUsIC4uLiwgT3BhcXVlIOKGklxuICAgKiAgIC4uLlxuICAgKi9cbiAgUG9wLFxuXG4gIC8qKlxuICAgKiBPcGVyYXRpb246IExvYWQgYSB2YWx1ZSBpbnRvIGEgcmVnaXN0ZXJcbiAgICogRm9ybWF0OlxuICAgKiAgIChMb2FkIHJlZ2lzdGVyOnUzMilcbiAgICogT3BlcmFuZCBTdGFjazpcbiAgICogICAuLi4sIE9wYXF1ZSDihpJcbiAgICogICAuLi5cbiAgICovXG4gIExvYWQsXG5cbiAgLyoqXG4gICAqIE9wZXJhdGlvbjogRmV0Y2ggYSB2YWx1ZSBmcm9tIGEgcmVnaXN0ZXJcbiAgICogRm9ybWF0OlxuICAgKiAgIChGZXRjaCByZWdpc3Rlcjp1MzIpXG4gICAqIE9wZXJhbmQgU3RhY2s6XG4gICAqICAgLi4uIOKGklxuICAgKiAgIC4uLiwgT3BhcXVlXG4gICAqL1xuICBGZXRjaCxcblxuICAvLy8gUFJFTFVERSAmIEVYSVRcblxuICAvKipcbiAgICogT3BlcmF0aW9uOiBQdXNoIGEgbmV3IHJvb3Qgc2NvcGUgb250byB0aGUgc2NvcGUgc3RhY2suXG4gICAqXG4gICAqIEZvcm1hdDpcbiAgICogICAoUm9vdFNjb3BlIHN5bWJvbHM6dTMyIGJpbmRDYWxsZXJTY29wZTpib29sKVxuICAgKiBPcGVyYW5kIFN0YWNrOlxuICAgKiAgIC4uLiDihpJcbiAgICogICAuLi5cbiAgICogRGVzY3JpcHRpb246XG4gICAqICAgQSByb290IHNjb3BlIGhhcyBubyBwYXJlbnQgc2NvcGUsIGFuZCB0aGVyZWZvcmUgaW5oZXJpdHMgbm8gbGV4aWNhbFxuICAgKiAgIHZhcmlhYmxlcy4gSWYgYGJpbmRDYWxsZXJTY29wZWAgaXMgYHRydWVgLCB0aGUgY3VycmVudCBzY29wZSByZW1lbWJlcnNcbiAgICogICB0aGUgY2FsbGVyIHNjb3BlIChmb3IgeWllbGRpbmcgYmxvY2tzKS5cbiAgICovXG4gIFJvb3RTY29wZSxcblxuICAvKipcbiAgICogT3BlcmF0aW9uOiBQdXNoIGEgbmV3IHJvb3Qgc2NvcGUgb250byB0aGUgc2NvcGUgc3RhY2suXG4gICAqXG4gICAqIEZvcm1hdDpcbiAgICogICAoVmlydHVhbFJvb3RTY29wZSByZWdpc3Rlcjp1MzIpXG4gICAqIE9wZXJhbmQgU3RhY2s6XG4gICAqICAgLi4uIOKGklxuICAgKiAgIC4uLlxuICAgKiBEZXNjcmlwdGlvbjpcbiAgICogICBUaGUgc3ltYm9sIGNvdW50IGlzIGRldGVybWluZWQgYnkgdGhlIGNvbXBvbmVudCBzdGF0ZSBpblxuICAgKiAgIHRoZSBzcGVjaWZpZWQgcmVnaXN0ZXIuXG4gICAqL1xuICBWaXJ0dWFsUm9vdFNjb3BlLFxuXG4gIC8qKlxuICAgKiBPcGVyYXRpb246IFB1c2ggYSBuZXcgY2hpbGQgc2NvcGUgb250byB0aGUgc2NvcGUgc3RhY2suXG4gICAqXG4gICAqIEZvcm1hdDpcbiAgICogICAoQ2hpbGRTY29wZSlcbiAgICogT3BlcmFuZCBTdGFjazpcbiAgICogICAuLi4g4oaSXG4gICAqICAgLi4uXG4gICAqIERlc2NyaXB0aW9uOlxuICAgKiAgIEEgY2hpbGQgc2NvcGUgaW5oZXJpdHMgZnJvbSB0aGUgY3VycmVudCBwYXJlbnQgc2NvcGUsIGFuZCB0aGVyZWZvcmVcbiAgICogICBzaGFyZXMgaXRzIGxleGljYWwgdmFyaWFibGVzLlxuICAgKi9cbiAgQ2hpbGRTY29wZSxcblxuICAvKipcbiAgICogT3BlcmF0aW9uOiBQb3AgdGhlIGN1cnJlbnQgc2NvcGUgZnJvbSB0aGUgc2NvcGUgc3RhY2suXG4gICAqIEZvcm1hdDpcbiAgICogICAoUG9wU2NvcGUpXG4gICAqIE9wZXJhbmQgU3RhY2s6XG4gICAqICAgLi4uIOKGklxuICAgKiAgIC4uLlxuICAgKi9cbiAgUG9wU2NvcGUsXG5cbiAgLyoqXG4gICAqIE9wZXJhdGlvbjogUmV0dXJuIHRvIHRoZSBwcmV2aW91cyBmcmFtZS5cbiAgICogRm9ybWF0OlxuICAgKiAgIChSZXR1cm4pXG4gICAqIE9wZXJhbmQgU3RhY2s6XG4gICAqICAgLi4uLCBhZGRyZXNzOm51bWJlciDihpJcbiAgICogICAuLi5cbiAgICovXG4gIFJldHVybixcblxuICAvKipcbiAgICogT3BlcmF0aW9uOiBSZXR1cm4gdG8gYSBwbGFjZSBpbiB0aGUgcHJvZ3JhbSBnaXZlbiBhbiBvZmZzZXRcbiAgICogRm9ybWF0OlxuICAgKiAgKFJldHVyblRvIG9mZnNldDppMzIpXG4gICAqIE9wZXJhbmQgU3RhY2s6XG4gICAqICAgIC4uLiDihpJcbiAgICovXG4gIFJldHVyblRvLFxuXG4gIC8vLyBIVE1MXG5cbiAgLyoqXG4gICAqIE9wZXJhdGlvbjogQXBwZW5kIGEgVGV4dCBub2RlIHdpdGggdmFsdWUgYGNvbnRlbnRzYFxuICAgKiBGb3JtYXQ6XG4gICAqICAgKFRleHQgY29udGVudHM6I3N0cmluZylcbiAgICogT3BlcmFuZCBTdGFjazpcbiAgICogICAuLi4g4oaSXG4gICAqICAgLi4uXG4gICAqL1xuICBUZXh0LFxuXG4gIC8qKlxuICAgKiBPcGVyYXRpb246IEFwcGVuZCBhIENvbW1lbnQgbm9kZSB3aXRoIHZhbHVlIGBjb250ZW50c2BcbiAgICogRm9ybWF0OlxuICAgKiAgIChDb21tZW50IGNvbnRlbnRzOiNzdHJpbmcpXG4gICAqIE9wZXJhbmQgU3RhY2s6XG4gICAqICAgLi4uIOKGklxuICAgKiAgIC4uLlxuICAgKi9cbiAgQ29tbWVudCxcblxuICAvKipcbiAgICogT3BlcmF0aW9uOiBBcHBlbmQgY29udGVudCBhcyBIVE1MLlxuICAgKiBGb3JtYXQ6XG4gICAqICAgKEFwcGVuZEhUTUwpXG4gICAqIE9wZXJhbmQgU3RhY2s6XG4gICAqICAgLi4uLCBWZXJzaW9uZWRQYXRoUmVmZXJlbmNlPHN0cmluZz4g4oaSXG4gICAqICAgLi4uXG4gICAqL1xuICBBcHBlbmRIVE1MLFxuXG4gIC8qKlxuICAgKiBPcGVyYXRpb246IEFwcGVuZCBTYWZlSFRNTCBhcyBIVE1MLlxuICAgKiBGb3JtYXQ6XG4gICAqICAgKEFwcGVuZFNhZmVIVE1MKVxuICAgKiBPcGVyYW5kIFN0YWNrOlxuICAgKiAgIC4uLiwgVmVyc2lvbmVkUGF0aFJlZmVyZW5jZTxTYWZlSFRNTD4g4oaSXG4gICAqICAgLi4uXG4gICAqL1xuICBBcHBlbmRTYWZlSFRNTCxcblxuICAvKipcbiAgICogT3BlcmF0aW9uOiBBcHBlbmQgRG9jdW1lbnRGcmFnbWVudC5cbiAgICogRm9ybWF0OlxuICAgKiAgIChBcHBlbmRGcmFnbWVudClcbiAgICogT3BlcmFuZCBTdGFjazpcbiAgICogICAuLi4sIFZlcnNpb25lZFBhdGhSZWZlcmVuY2U8RG9jdW1lbnRGcmFnbWVudD4g4oaSXG4gICAqICAgLi4uXG4gICAqL1xuICBBcHBlbmREb2N1bWVudEZyYWdtZW50LFxuXG4gIC8qKlxuICAgKiBPcGVyYXRpb246IEFwcGVuZCBOb2RlLlxuICAgKiBGb3JtYXQ6XG4gICAqICAgKEFwcGVuZEZyYWdtZW50KVxuICAgKiBPcGVyYW5kIFN0YWNrOlxuICAgKiAgIC4uLiwgVmVyc2lvbmVkUGF0aFJlZmVyZW5jZTxOb2RlPiDihpJcbiAgICogICAuLi5cbiAgICovXG4gIEFwcGVuZE5vZGUsXG5cbiAgLyoqXG4gICAqIE9wZXJhdGlvbjogQXBwZW5kIGNvbnRlbnQgYXMgdGV4dC5cbiAgICogRm9ybWF0OlxuICAgKiAgIChBcHBlbmRUZXh0KVxuICAgKiBPcGVyYW5kIFN0YWNrOlxuICAgKiAgIC4uLiwgVmVyc2lvbmVkUGF0aFJlZmVyZW5jZTxzdHJpbmc+IOKGklxuICAgKiAgIC4uLlxuICAgKi9cbiAgQXBwZW5kVGV4dCxcblxuICAvKipcbiAgICogT3BlcmF0aW9uOiBPcGVuIGEgbmV3IEVsZW1lbnQgbmFtZWQgYHRhZ2AuXG4gICAqIEZvcm1hdDpcbiAgICogICAoT3BlbkVsZW1lbnQgdGFnOiNzdHJpbmcpXG4gICAqIE9wZXJhbmQgU3RhY2s6XG4gICAqICAgLi4uIOKGklxuICAgKiAgIC4uLlxuICAgKi9cbiAgT3BlbkVsZW1lbnQsXG5cbiAgLyoqXG4gICAqIE9wZXJhdGlvbjpcbiAgICogICBPcGVuIGEgbmV3IEVsZW1lbnQgd2l0aCBhIG5hbWUgb24gdGhlIHN0YWNrIGFuZCB3aXRoIHNwZWNpYWxcbiAgICogICBvcGVyYXRpb25zIHByb3ZpZGVkIG9uIHRoZSBzdGFjay5cbiAgICogRm9ybWF0OlxuICAgKiAgIChPcGVuRHluYW1pY0VsZW1lbnQpXG4gICAqIE9wZXJhbmQgU3RhY2s6XG4gICAqICAgLi4uLCBzdHJpbmcsIEVsZW1lbnRPcGVyYXRpb25zIOKGklxuICAgKiAgIC4uLlxuICAgKi9cbiAgT3BlbkR5bmFtaWNFbGVtZW50LFxuXG4gIC8qKlxuICAgKiBPcGVyYXRpb246IEFkZCBhbiBhdHRyaWJ1dGUgdG8gdGhlIGN1cnJlbnQgRWxlbWVudC5cbiAgICogRm9ybWF0OlxuICAgKiAgIChTdGF0aWNBdHRyIG5hbWU6I3N0cmluZyB2YWx1ZTojc3RyaW5nIG5hbWVzcGFjZTpPcHRpb248I3N0cmluZz4pXG4gICAqIE9wZXJhbmQgU3RhY2s6XG4gICAqICAgLi4uIOKGklxuICAgKiAgIC4uLlxuICAgKi9cbiAgU3RhdGljQXR0cixcblxuICAvKipcbiAgICogT3BlcmF0aW9uOlxuICAgKiAgIEFkZCBhbiBhdHRyaWJ1dGUgdG8gdGhlIGN1cnJlbnQgZWxlbWVudCB1c2luZyB0aGUgdmFsdWVcbiAgICogICBhdCB0aGUgdG9wIG9mIHRoZSBzdGFjay5cbiAgICpcbiAgICogRm9ybWF0OlxuICAgKiAgIChEeW5hbWljQXR0ciBuYW1lOiNzdHJpbmcgdHJ1c3Rpbmc6Ym9vbGVhbiBuYW1lc3BhY2U6T3B0aW9uPCNzdHJpbmc+KVxuICAgKiBPcGVyYW5kIFN0YWNrOlxuICAgKiAgIC4uLiwgVmVyc2lvbmVkUGF0aFJlZmVyZW5jZSDihpJcbiAgICogICAuLi5cbiAgICogRGVzY3JpcHRpb246XG4gICAqICAgSWYgYHRydXN0aW5nYCBpcyBmYWxzZSwgdGhlIGhvc3QgbWF5IHNhbml0aXplIHRoZSBhdHRyaWJ1dGVcbiAgICogICBiYXNlZCB1cG9uIGtub3duIHJpc2tzLlxuICAgKi9cbiAgRHluYW1pY0F0dHIsXG5cbiAgLyoqXG4gICAqIE9wZXJhdGlvbjpcbiAgICogICBBZGQgYW4gYXR0cmlidXRlIHRvIHRoZSBjdXJyZW50IGVsZW1lbnQgdXNpbmcgdGhlIHZhbHVlXG4gICAqICAgYXQgdGhlIHRvcCBvZiB0aGUgc3RhY2suXG4gICAqXG4gICAqIEZvcm1hdDpcbiAgICogICAoQ29tcG9uZW50QXRyIG5hbWU6I3N0cmluZyB0cnVzdGluZzpib29sZWFuIG5hbWVzcGFjZTpPcHRpb248I3N0cmluZz4pXG4gICAqIE9wZXJhbmQgU3RhY2s6XG4gICAqICAgLi4uLCBWZXJzaW9uZWRQYXRoUmVmZXJlbmNlIOKGklxuICAgKiAgIC4uLlxuICAgKi9cbiAgQ29tcG9uZW50QXR0cixcblxuICAvKipcbiAgICogT3BlcmF0aW9uOiBGaW5pc2ggc2V0dGluZyBhdHRyaWJ1dGVzIG9uIHRoZSBjdXJyZW50IGVsZW1lbnQuXG4gICAqXG4gICAqIEZvcm1hdDpcbiAgICogICAoRmx1c2hFbGVtZW50KVxuICAgKiBPcGVyYW5kIFN0YWNrOlxuICAgKiAgIC4uLiDihpJcbiAgICogICAuLi5cbiAgICovXG4gIEZsdXNoRWxlbWVudCxcblxuICAvKipcbiAgICogT3BlcmF0aW9uOiBDbG9zZSB0aGUgY3VycmVudCBlbGVtZW50LlxuICAgKlxuICAgKiBGb3JtYXQ6XG4gICAqICAgKENsb3NlRWxlbWVudClcbiAgICogT3BlcmFuZCBTdGFjazpcbiAgICogICAuLi4g4oaSXG4gICAqICAgLi4uXG4gICAqL1xuICBDbG9zZUVsZW1lbnQsXG5cbiAgLy8vIE1PRElGSUVSXG4gIE1vZGlmaWVyLCAvLyAoQ29uc3RhbnRTdHJpbmcsIENvbnN0YW50T3RoZXI8TW9kaWZpZXJNYW5hZ2VyPiwgQ29uc3RhbnRFeHByZXNzaW9uKVxuXG4gIC8vLyBXT1JNSE9MRVxuICBQdXNoUmVtb3RlRWxlbWVudCwgLy8gKClcbiAgUG9wUmVtb3RlRWxlbWVudCwgLy8gKClcblxuICAvLy8gRFlOQU1JQyBTQ09QRVxuXG4gIC8qKlxuICAgKiBPcGVyYXRpb246IEJpbmQgc3RhY2sgdmFsdWVzIGFzIGR5bmFtaWMgdmFyaWFibGVzLlxuICAgKiBGb3JtYXQ6XG4gICAqICAgKEJpbmREeW5hbWljU2NvcGUgbmFtZXM6I0FycmF5PCNzdHJpbmc+KVxuICAgKiBPcGVyYW5kIFN0YWNrOlxuICAgKiAgIC4uLiwgVmVyc2lvbmVkUGF0aFJlZmVyZW5jZSwgW1ZlcnNpb25lZFBhdGhSZWZlcmVuY2UgLi4uXSDihpJcbiAgICogICAuLi5cbiAgICogRGVzY3JpcHRpb246XG4gICAqICAgVGhpcyBpcyB1c2VkIHRvIGV4cG9zZSBgLXdpdGgtZHluYW1pYy12YXJzYCwgYW5kIGlzIGFcbiAgICogICBuaWNoZSBmZWF0dXJlLlxuICAgKi9cbiAgQmluZER5bmFtaWNTY29wZSxcblxuICBQdXNoRHluYW1pY1Njb3BlLCAvLyAoKVxuICBQb3BEeW5hbWljU2NvcGUsIC8vICgpXG5cbiAgLy8vIFZNXG5cbiAgLyoqXG4gICAqIE9wZXJhdGlvbjogQ29tcGlsZSB0aGUgSW5saW5lQmxvY2sgYXQgdGhlIHRvcCBvZiB0aGUgc3RhY2suXG4gICAqIEZvcm1hdDpcbiAgICogICAoQ29tcGlsZUJsb2NrKVxuICAgKiBPcGVyYW5kIFN0YWNrOlxuICAgKiAgIC4uLiwgQ29tcGlsYWJsZUJsb2NrIOKGklxuICAgKiAgIC4uLiwgSGFuZGxlXG4gICAqL1xuICBDb21waWxlQmxvY2ssXG5cbiAgLyoqXG4gICAqIE9wZXJhdGlvbjogUHVzaCBhIHNjb3BlIG9udG8gdGhlIHN0YWNrLlxuICAgKiBGb3JtYXQ6XG4gICAqICAgKFB1c2hCbG9ja1Njb3BlICNTY29wZSlcbiAgICogT3BlcmFuZCBTdGFjazpcbiAgICogICAuLi4sIOKGklxuICAgKiAgIC4uLiwgU2NvcGVcbiAgICovXG4gIFB1c2hCbG9ja1Njb3BlLFxuXG4gIC8qKlxuICAgKiBPcGVyYXRpb246IFB1c2ggYSBzeW1ib2wgdGFibGUgb250byB0aGUgc3RhY2suXG4gICAqIEZvcm1hdDpcbiAgICogICAoUHVzaFN5bWJvbFRhYmxlICNTeW1ib2xUYWJsZSlcbiAgICogT3BlcmFuZCBTdGFjazpcbiAgICogICAuLi4sIOKGklxuICAgKiAgIC4uLiwgU3ltYm9sVGFibGVcbiAgICovXG4gIFB1c2hTeW1ib2xUYWJsZSxcblxuICAvKipcbiAgICogT3BlcmF0aW9uOiBFdmFsdWF0ZSB0aGUgaGFuZGxlIGF0IHRoZSB0b3Agb2YgdGhlIHN0YWNrLlxuICAgKiBGb3JtYXQ6XG4gICAqICAgKEludm9rZVZpcnR1YWwpXG4gICAqIE9wZXJhbmQgU3RhY2s6XG4gICAqICAgLi4uLCBIYW5kbGUsIOKGklxuICAgKiAgIC4uLlxuICAgKi9cbiAgSW52b2tlVmlydHVhbCxcblxuICAvKipcbiAgICogT3BlcmF0aW9uOiBFdmFsdWF0ZSB0aGUgaGFuZGxlLlxuICAgKiBGb3JtYXQ6XG4gICAqICAgKEludm9rZVN0YXRpYyBoYW5kbGU6dTMyKVxuICAgKiBPcGVyYW5kIFN0YWNrOlxuICAgKiAgIC4uLiDihpJcbiAgICogICAuLi5cbiAgICovXG4gIEludm9rZVN0YXRpYyxcblxuICAvKipcbiAgICogT3BlcmF0aW9uOiBZaWVsZCB0byBhIGJsb2NrLlxuICAgKiBGb3JtYXQ6XG4gICAqICAgKEludm9rZVlpZWxkKVxuICAgKiBPcGVyYW5kIFN0YWNrOlxuICAgKiAgIC4uLiwgW1ZlcnNpb25lZFBhdGhSZWZlcmVuY2UgLi4uXSwgQXJndW1lbnRzLCBTeW1ib2xUYWJsZSwgSGFuZGxlIOKGklxuICAgKiAgIC4uLlxuICAgKi9cbiAgSW52b2tlWWllbGQsXG5cbiAgLyoqXG4gICAqIE9wZXJhdGlvbjogSnVtcCB0byB0aGUgc3BlY2lmaWVkIG9mZnNldC5cbiAgICpcbiAgICogRm9ybWF0OlxuICAgKiAgIChKdW1wIHRvOnUzMilcbiAgICogT3BlcmFuZCBTdGFjazpcbiAgICogICAuLi4g4oaSXG4gICAqICAgLi4uXG4gICAqL1xuICBKdW1wLFxuXG4gIC8qKlxuICAgKiBPcGVyYXRpb246XG4gICAqICAgSnVtcCB0byB0aGUgc3BlY2lmaWVkIG9mZnNldCBpZiB0aGUgdmFsdWUgYXRcbiAgICogICB0aGUgdG9wIG9mIHRoZSBzdGFjayBpcyB0cnVlLlxuICAgKlxuICAgKiBGb3JtYXQ6XG4gICAqICAgKEp1bXBJZiB0bzp1MzIpXG4gICAqIE9wZXJhbmQgU3RhY2s6XG4gICAqICAgLi4uLCBWZXJzaW9uZWRQYXRoUmVmZXJlbmNlIOKGklxuICAgKiAgIC4uLlxuICAgKi9cbiAgSnVtcElmLFxuXG4gIC8qKlxuICAgKiBPcGVyYXRpb246XG4gICAqICAgSnVtcCB0byB0aGUgc3BlY2lmaWVkIG9mZnNldCBpZiB0aGUgdmFsdWUgYXRcbiAgICogICB0aGUgdG9wIG9mIHRoZSBzdGFjayBpcyBmYWxzZS5cbiAgICpcbiAgICogRm9ybWF0OlxuICAgKiAgIChKdW1wVW5sZXNzIHRvOnUzMilcbiAgICogT3BlcmFuZCBTdGFjazpcbiAgICogICAuLi4sIFZlcnNpb25lZFBhdGhSZWZlcmVuY2Ug4oaSXG4gICAqICAgLi4uXG4gICAqL1xuICBKdW1wVW5sZXNzLFxuXG4gIC8qKlxuICAgKiBPcGVyYXRpb246XG4gICAqICAgSnVtcCB0byB0aGUgc3BlY2lmaWVkIG9mZnNldCBpZiB0aGUgdmFsdWUgYXRcbiAgICogICB0aGUgdG9wIG9mIHRoZSBzdGFjayBpcyB0aGUgc2FtZSBhcyB0aGVcbiAgICogICBjb21wYXJpc29uLlxuICAgKlxuICAgKiBGb3JtYXQ6XG4gICAqICAgKEp1bXBFcSB0bzppMzIgY29tcGFyaXNvbjppMzIpXG4gICAqIE9wZXJhbmQgU3RhY2s6XG4gICAqICAgLi4uLCB1MzIg4oaSXG4gICAqICAgLi4uLCB1MzJcbiAgICovXG4gIEp1bXBFcSxcblxuICAvKipcbiAgICogT3BlcmF0aW9uOlxuICAgKiAgIFZhbGlkYXRlIHRoYXQgdGhlIHZhbHVlIGF0IHRoZSB0b3Agb2YgdGhlIHN0YWNrXG4gICAqICAgaGFzbid0IGNoYW5nZWQuXG4gICAqXG4gICAqIEZvcm1hdDpcbiAgICogICAoQXNzZXJ0U2FtZSlcbiAgICogT3BlcmFuZCBTdGFjazpcbiAgICogICAuLi4sIFZlcnNpb25lZFBhdGhSZWZlcmVuY2U8dTMyPiDihpJcbiAgICogICAuLi4sIFZlcnNpb25lZFBhdGhSZWZlcmVuY2U8dTMyPlxuICAgKi9cbiAgQXNzZXJ0U2FtZSxcblxuICAvKipcbiAgICogT3BlcmF0aW9uOiBQdXNoIGEgc3RhY2sgZnJhbWVcbiAgICpcbiAgICogRm9ybWF0OlxuICAgKiAgIChQdXNoRnJhbWUpXG4gICAqIE9wZXJhbmQgU3RhY2s6XG4gICAqICAgLi4uIOKGklxuICAgKiAgICRyYSwgJGZwXG4gICAqL1xuICBQdXNoRnJhbWUsXG5cbiAgLyoqXG4gICAqIE9wZXJhdGlvbjogUG9wIGEgc3RhY2sgZnJhbWVcbiAgICpcbiAgICogRm9ybWF0OlxuICAgKiAgIChQdXNoRnJhbWUpXG4gICAqIE9wZXJhbmQgU3RhY2s6XG4gICAqICAgJHJhLCAkZnAg4oaSXG4gICAqICAgLi4uXG4gICAqL1xuICBQb3BGcmFtZSxcblxuICAvKipcbiAgICogT3BlcmF0aW9uOiBQdXNoIGEgc21hbGwgc3RhY2sgZnJhbWVcbiAgICpcbiAgICogRm9ybWF0OlxuICAgKiAgIChQdXNoU21hbGxGcmFtZSlcbiAgICogT3BlcmFuZCBTdGFjazpcbiAgICogICAuLi4g4oaSXG4gICAqICAgJGZwXG4gICAqL1xuICBQdXNoU21hbGxGcmFtZSxcblxuICAvKipcbiAgICogT3BlcmF0aW9uOiBQb3AgYSBzdGFjayBmcmFtZVxuICAgKlxuICAgKiBGb3JtYXQ6XG4gICAqICAgKFBvcFNtYWxsRnJhbWUpXG4gICAqIE9wZXJhbmQgU3RhY2s6XG4gICAqICAgJGZwIOKGklxuICAgKiAgIC4uLlxuICAgKi9cbiAgUG9wU21hbGxGcmFtZSxcblxuICAvKipcbiAgICogT3BlcmF0aW9uOlxuICAgKiAgIFN0YXJ0IHRyYWNraW5nIGEgbmV3IG91dHB1dCBibG9jayB0aGF0IGNvdWxkIGNoYW5nZVxuICAgKiAgIGlmIG9uZSBvZiBpdHMgaW5wdXRzIGNoYW5nZXMuXG4gICAqXG4gICAqIEZvcm1hdDpcbiAgICogICAoRW50ZXIgYXJnczp1MzIpXG4gICAqIE9wZXJhbmQgU3RhY2s6XG4gICAqICAgLi4uIOKGklxuICAgKiAgIC4uLlxuICAgKiBEZXNjcmlwdGlvbjpcbiAgICogICBTb29uIGFmdGVyIHRoaXMgb3Bjb2RlLCBvbmUgb2YgSnVtcCwgSnVtcElmLFxuICAgKiAgIEp1bXBVbmxlc3MsIG9yIEp1bXBFcSB3aWxsIHByb2R1Y2UgYW4gdXBkYXRpbmdcbiAgICogICBhc3NlcnRpb24uIElmIHRoYXQgYXNzZXJ0aW9uIGZhaWxzLCB0aGUgYXBwZW5kaW5nXG4gICAqICAgVk0gd2lsbCBiZSByZS1lbnRlcmVkLCBhbmQgdGhlIGluc3RydWN0aW9ucyBmcm9tIGBmcm9tYFxuICAgKiAgIHRvIGB0b2Agd2lsbCBiZSBleGVjdXRlZC5cbiAgICpcbiAgICogICBUT0RPOiBTYXZlIGFuZCByZXN0b3JlLlxuICAgKi9cbiAgRW50ZXIsXG5cbiAgLyoqXG4gICAqIE9wZXJhdGlvbjpcbiAgICogICBGaW5pc2ggdHJhY2tpbmcgdGhlIGN1cnJlbnQgYmxvY2suXG4gICAqXG4gICAqIEZvcm1hdDpcbiAgICogICAoRXhpdClcbiAgICogT3BlcmFuZCBTdGFjazpcbiAgICogICAuLi4g4oaSXG4gICAqICAgLi4uXG4gICAqIERlc2NyaXB0aW9uOlxuICAgKiAgIFRoaXMgZmluYWxpemVzIHRoZSB2YWxpZGF0b3JzIHRoYXQgdGhlIHVwZGF0aW5nXG4gICAqICAgYmxvY2sgbXVzdCBjaGVjayB0byBkZXRlcm1pbmUgd2hldGhlciBpdCdzIHNhZmUgdG9cbiAgICogICBza2lwIHJ1bm5pbmcgdGhlIGNvbnRlbnRzLlxuICAgKi9cbiAgRXhpdCxcblxuICAvKipcbiAgICogT3BlcmF0aW9uOiBDb252ZXJ0IHRoZSB0b3Agb2YgdGhlIHN0YWNrIGludG8gYSBib29sZWFuIHJlZmVyZW5jZS5cbiAgICpcbiAgICogRm9ybWF0OlxuICAgKiAgIChUb0Jvb2xlYW4pXG4gICAqIE9wZXJhbmQgU3RhY2s6XG4gICAqICAgLi4uLCBWZXJzaW9uZWRQYXRoUmVmZXJlbmNlPE9wYXF1ZT4g4oaSXG4gICAqICAgLi4uLCBWZXJzaW9uZWRQYXRoUmVmZXJlbmNlPGJvb2w+XG4gICAqL1xuICBUb0Jvb2xlYW4sXG5cbiAgLy8vIExJU1RTXG5cbiAgLyoqXG4gICAqIE9wZXJhdGlvbjogRW50ZXIgYSBsaXN0LlxuICAgKlxuICAgKiBGb3JtYXQ6XG4gICAqICAgKEVudGVyTGlzdCBhZGRyZXNzOnUzMilcbiAgICogT3BlcmFuZCBTdGFjazpcbiAgICogICAuLi4sIEl0ZXJhdG9yIOKGklxuICAgKiAgIC4uLlxuICAgKi9cbiAgRW50ZXJMaXN0LFxuXG4gIC8qKlxuICAgKiBPcGVyYXRpb246IEV4aXQgdGhlIGN1cnJlbnQgbGlzdC5cbiAgICpcbiAgICogRm9ybWF0OlxuICAgKiAgIChFeGl0TGlzdClcbiAgICogT3BlcmFuZCBTdGFjazpcbiAgICogICAuLi4g4oaSXG4gICAqICAgLi4uXG4gICAqL1xuICBFeGl0TGlzdCxcblxuICAvKipcbiAgICogT3BlcmF0aW9uOlxuICAgKiAgIENvbnZlcnQgYW4gb3BlcmFuZCBhbmQga2V5IGludG8gYW4gaXRlcmF0b3IgYW5kXG4gICAqICAgcHJlc2VuY2UgcmVmZXJlbmNlLlxuICAgKlxuICAgKiBGb3JtYXQ6XG4gICAqICAgKFB1dEl0ZXJhdG9yKVxuICAgKiBPcGVyYW5kIFN0YWNrOlxuICAgKiAgIC4uLiwga2V5OnN0cmluZywgbGlzdDpWZXJzaW9uZWRQYXRoUmVmZXJlbmNlIOKGklxuICAgKiAgIC4uLiwgaXRlcmF0b3I6UmVmZXJlbmNlSXRlcmF0b3IsIHByZXNlbnQ6UHJlc2VuY2VSZWZlcmVuY2VcbiAgICovXG4gIFB1dEl0ZXJhdG9yLFxuXG4gIC8qKlxuICAgKiBPcGVyYXRpb246XG4gICAqICAgU2V0IHVwIHRoZSBzdGFjayBmb3IgaXRlcmF0aW5nIGZvciBhIGdpdmVuIGtleSxcbiAgICogICBvciBqdW1wIHRvIGBlbmRgIGlmIHRoZXJlIGlzIG5vdGhpbmcgbGVmdCB0b1xuICAgKiAgIGl0ZXJhdGUuXG4gICAqXG4gICAqIEZvcm1hdDpcbiAgICogICAoSXRlcmF0ZSBlbmQ6dTMyKVxuICAgKiBPcGVyYW5kIFN0YWNrOlxuICAgKiAgIEZvcm0gMTogKHNvbWV0aGluZyB0byBpdGVyYXRlKVxuICAgKiAgIC4uLiDihpJcbiAgICogICAuLi4sIFZlcnNpb25lZFBhdGhSZWZlcmVuY2UsIFZlcnNpb25lZFBhdGhSZWZlcmVuY2UsIHN0cmluZ1xuICAgKiAgIEZvcm0gMjogKG5vdGhpbmcgbGVmdCB0byBpdGVyYXRlKVxuICAgKiAgIC4uLiDihpJcbiAgICogICAuLi5cbiAgICogRGVzY3JpcHRpb246XG4gICAqICAgSW4gRm9ybSAxLCB0aGUgc3RhY2sgd2lsbCBoYXZlIChpbiByZXZlcnNlIG9yZGVyKTpcbiAgICpcbiAgICogICAtIHRoZSBrZXksIGFzIGEgc3RyaW5nXG4gICAqICAgLSB0aGUgY3VycmVudCBpdGVyYXRlZCB2YWx1ZVxuICAgKiAgIC0gdGhlIG1lbW9pemVkIGl0ZXJhdGVkIHZhbHVlXG4gICAqL1xuICBJdGVyYXRlLFxuXG4gIC8vLyBDT01QT05FTlRTXG5cbiAgLyoqXG4gICAqIE9wZXJhdGlvbjogVGVzdCB3aGV0aGVyIGEgcmVmZXJlbmNlIGNvbnRhaW5zIGEgY29tcG9uZW50IGRlZmluaXRpb24uXG4gICAqXG4gICAqIEZvcm1hdDpcbiAgICogICAoTWFpbiBzdGF0ZTpyZWdpc3RlcilcbiAgICogT3BlcmFuZCBTdGFjazpcbiAgICogICAuLi4sIEludm9jYXRpb24sIENvbXBvbmVudERlZmluaXRpb24g4oaSXG4gICAqICAgLi4uXG4gICAqL1xuICBNYWluLFxuXG4gIC8qKlxuICAgKiBPcGVyYXRpb246IFRlc3Qgd2hldGhlciBhIHJlZmVyZW5jZSBjb250YWlucyBhIGNvbXBvbmVudCBkZWZpbml0aW9uLlxuICAgKlxuICAgKiBGb3JtYXQ6XG4gICAqICAgKElzQ29tcG9uZW50KVxuICAgKiBPcGVyYW5kIFN0YWNrOlxuICAgKiAgIC4uLiwgVmVyc2lvbmVkUGF0aFJlZmVyZW5jZTxPcGFxdWU+IOKGklxuICAgKiAgIC4uLiwgVmVyc2lvbmVkUGF0aFJlZmVyZW5jZTxib29sZWFuPlxuICAgKi9cbiAgSXNDb21wb25lbnQsXG5cbiAgLyoqXG4gICAqIE9wZXJhdGlvbjogUHVzaCB0aGUgY29udGVudCB0eXBlIG9udG8gdGhlIHN0YWNrLlxuICAgKlxuICAgKiBGb3JtYXQ6XG4gICAqICAgKENvbnRlbnRUeXBlKVxuICAgKiBPcGVyYW5kIFN0YWNrOlxuICAgKiAgIC4uLiwgVmVyc2lvbmVkUGF0aFJlZmVyZW5jZTxPcGFxdWU+IOKGklxuICAgKiAgIC4uLiwgVmVyc2lvbmVkUGF0aFJlZmVyZW5jZTxPcGFxdWU+LCBWZXJzaW9uZWRQYXRoUmVmZXJlbmNlPENvbnRlbnRUeXBlPlxuICAgKi9cbiAgQ29udGVudFR5cGUsXG5cbiAgLyoqXG4gICAqIE9wZXJhdGlvbjogQ3VycnkgYSBjb21wb25lbnQgZGVmaW5pdGlvbiBmb3IgYSBsYXRlciBpbnZvY2F0aW9uLlxuICAgKlxuICAgKiBGb3JtYXQ6XG4gICAqICAgKEN1cnJ5Q29tcG9uZW50IHRlbXBsYXRlTWV0YTojTG9jYXRvcilcbiAgICogT3BlcmFuZCBTdGFjazpcbiAgICogICAuLi4sIFZlcnNpb25lZFBhdGhSZWZlcmVuY2UsIFtWZXJzaW9uZWRQYXRoUmVmZXJlbmNlIC4uLl0sIEFyZ3VtZW50cyDihpJcbiAgICogICAuLi4sIHsgVmVyc2lvbmVkUGF0aFJlZmVyZW5jZSwgTG9jYXRvciwgQ2FwdHVyZWRBcmd1bWVudHMgfVxuICAgKi9cbiAgQ3VycnlDb21wb25lbnQsXG5cbiAgLyoqXG4gICAqIE9wZXJhdGlvbjogUHVzaCBhbiBhcHByb3ByaWF0ZSBjb21wb25lbnQgbWFuYWdlciBvbnRvIHRoZSBzdGFjay5cbiAgICpcbiAgICogRm9ybWF0OlxuICAgKiAgIChQdXNoQ29tcG9uZW50TWFuYWdlciAjQ29tcG9uZW50U3BlYylcbiAgICogT3BlcmFuZCBTdGFjazpcbiAgICogICAuLi4g4oaSXG4gICAqICAgLi4uLCB7IENvbXBvbmVudERlZmluaXRpb24sIENvbXBvbmVudE1hbmFnZXIgfVxuICAgKi9cbiAgUHVzaENvbXBvbmVudERlZmluaXRpb24sXG5cbiAgLyoqXG4gICAqIE9wZXJhdGlvbjpcbiAgICogICBQdXNoZXMgdGhlIENvbXBvbmVudEluc3RhbmNlIG9udG8gdGhlIHN0YWNrIHRoYXQgaXNcbiAgICogICB1c2VkIGR1cmluZyB0aGUgaW52b2tlLlxuICAgKlxuICAgKiBGb3JtYXQ6XG4gICAqICAgKFB1c2hEeW5hbWljQ29tcG9uZW50SW5zdGFuY2UpXG4gICAqIE9wZXJhbmQgU3RhY2s6XG4gICAqICAgLi4uLCBDb21wb25lbnREZWZpbml0aW9uIOKGklxuICAgKiAgIC4uLiwgeyBDb21wb25lbnREZWZpbml0aW9uLCBtYW5hZ2VyOiBudWxsLCBsYXlvdXQ6IG51bGwsIHN0YXRlOiBudWxsLCBoYW5kbGU6IG51bGwsIHRhYmxlOiBudWxsIH1cbiAgICovXG5cbiAgUHVzaER5bmFtaWNDb21wb25lbnRJbnN0YW5jZSxcblxuICAvKipcbiAgICogT3BlcmF0aW9uOlxuICAgKiAgIFB1c2hlcyBhIGN1cnJpZWQgY29tcG9uZW50IGRlZmluaXRpb24gb24gdG8gdGhlIHN0YWNrXG4gICAqXG4gICAqIEZvcm1hdDpcbiAgICogICAoUHVzaEN1cnJpZWRDb21wb25lbnQpXG4gICAqIE9wZXJhbmQgU3RhY2s6XG4gICAqICAgLi4uLCBWZXJzaW9uZWRQYXRoUmVmZXJlbmNlPE9wYXF1ZT4g4oaSXG4gICAqICAgLi4uLCBDb21wb25lbnREZWZpbml0aW9uXG4gICAqL1xuICBQdXNoQ3VycmllZENvbXBvbmVudCxcblxuICAvKipcbiAgICogT3BlcmF0aW9uOlxuICAgKiAgIFB1c2ggYSByZXNvbHZlZCBjb21wb25lbnQgZGVmaW5pdGlvbiBvbnRvIHRoZSBzdGFja1xuICAgKlxuICAgKiBGb3JtYXQ6XG4gICAqICAgKFJlc29sdmVEeW5hbWljQ29tcG9uZW50IHRlbXBsYXRlTWV0YTojTG9jYXRvcilcbiAgICogT3BlcmFuZCBTdGFjazpcbiAgICogICAuLi4sIFZlcnNpb25lZFBhdGhSZWZlcmVuY2U8T3BhcXVlPiDihpJcbiAgICogICAuLi4sIENvbXBvbmVudERlZmluaXRpb25cbiAgICovXG4gIFJlc29sdmVEeW5hbWljQ29tcG9uZW50LFxuXG4gIC8qKlxuICAgKiBPcGVyYXRpb246IFB1c2ggYSB1c2VyIHJlcHJlc2VudGF0aW9uIG9mIGFyZ3Mgb250byB0aGUgc3RhY2suXG4gICAqXG4gICAqIEZvcm1hdDpcbiAgICogICAoUHVzaEFyZ3MgbmFtZXM6I0FycmF5PCNzdHJpbmc+IHBvc2l0aW9uYWxDb3VudDp1MzIgc3ludGhldGljOiNib29sZWFuKVxuICAgKlxuICAgKiBPcGVyYW5kIFN0YWNrOlxuICAgKiAgIC4uLiwgW1ZlcnNpb25lZFBhdGhSZWZlcmVuY2UgLi4uXSAg4oaSXG4gICAqICAgLi4uLCBbVmVyc2lvbmVkUGF0aFJlZmVyZW5jZSAuLi5dLCBBcmd1bWVudHNcbiAgICpcbiAgICogRGVzY3JpcHRpb246XG4gICAqICAgVGhpcyBhcmd1bWVudHMgb2JqZWN0IGlzIG9ubHkgbmVjZXNzYXJ5IHdoZW4gY2FsbGluZyBpbnRvXG4gICAqICAgdXNlci1zcGVjaWZpZWQgaG9va3MuIEl0IGlzIG1lYW50IHRvIGJlIGltcGxlbWVudGVkIGFzIGFcbiAgICogICB0cmFuc2llbnQgcHJveHkgdGhhdCByZWFkcyBpbnRvIHRoZSBzdGFjayBhcyBuZWVkZWQuXG4gICAqICAgSG9sZGluZyBvbnRvIHRoZSBBcmd1bWVudHMgYWZ0ZXIgdGhlIGNhbGwgaGFzIGNvbXBsZXRlZCBpc1xuICAgKiAgIGlsbGVnYWwuXG4gICAqL1xuICBQdXNoQXJncyxcblxuICAvKipcbiAgICogT3BlcmF0aW9uOiBQdXNoIGVtcHR5IGFyZ3Mgb250byB0aGUgc3RhY2tcbiAgICpcbiAgICogRm9ybWF0OlxuICAgKiAgIChFbXB0eUFyZ3MpXG4gICAqXG4gICAqIE9wZXJhbmRTdGFjazpcbiAgICogICAuLi4g4oaSXG4gICAqICAgLi4uLCBBcmd1bWVudHNcbiAgICovXG4gIFB1c2hFbXB0eUFyZ3MsXG5cbiAgLyoqXG4gICAqIE9wZXJhdGlvbjogUG9wcyBBcmd1bWVudHMgZnJvbSB0aGUgc3RhY2sgYW5kIGNsZWFycyB0aGUgbmV4dCBOIGFyZ3MuXG4gICAqXG4gICAqIEZvcm1hdDpcbiAgICogICAoUG9wQXJncylcbiAgICpcbiAgICogT3BlcmFuZCBTdGFjazpcbiAgICogICAuLi4sIFtWZXJzaW9uZWRQYXRoUmVmZXJlbmNlIC4uLl0sIEFyZ3VtZW50cyAg4oaSXG4gICAqICAgLi4uXG4gICAqXG4gICAqIERlc2NyaXB0aW9uOlxuICAgKiBUaGUgYXJndW1lbnRzIG9iamVjdCBjb250YWlucyB0aGUgaW5mb3JtYXRpb24gb2YgaG93IG1hbnkgdXNlclxuICAgKiBzdXBwbGllZCBhcmdzIHRoZSBjb21wb25lbnQgd2FzIGludm9rZWQgd2l0aC4gVG8gY2xlYXIgdGhlbSBmcm9tXG4gICAqIHRoZSBzdGFjayB3ZSBtdXN0IHBvcCBpdCBmcm9tIHRoZSBzdGFjayBhbmQgY2FsbCBgY2xlYXJgIG9uIGl0XG4gICAqIHRvIHJlbW92ZSB0aGUgYXJndW1lbnQgdmFsdWVzIGZyb20gdGhlIHN0YWNrLlxuICAgKi9cbiAgUG9wQXJncyxcblxuICAvKipcbiAgICogT3BlcmF0aW9uOiAuLi5cbiAgICogRm9ybWF0OlxuICAgKiAgIChQcmVwYXJlQXJncyBzdGF0ZTpyZWdpc3RlcilcbiAgICogT3BlcmFuZCBTdGFjazpcbiAgICogICAuLi4g4oaSXG4gICAqICAgLi4uXG4gICAqL1xuICBQcmVwYXJlQXJncyxcblxuICAvKipcbiAgICogT3BlcmF0aW9uOiBSZXBsYWNlcyBBcmd1bWVudHMgb24gdGhlIHN0YWNrIHdpdGggQ2FwdHVyZWRBcmd1bWVudHNcbiAgICogRm9ybWF0OlxuICAgKiAgIChDYXB0dXJlQXJncylcbiAgICpcbiAgICogT3BlcmFuZCBTdGFjazpcbiAgICogICAuLi4sIEFyZ3VtZW50cyAg4oaSXG4gICAqICAgLi4uLCBDYXB0dXJlZEFyZ3VtZW50c1xuICAgKlxuICAgKiBEZXNjcmlwdGlvbjpcbiAgICogVGhlIEFyZ3VtZW50cyBvYmplY3QgaXMgbXV0YXRlZCBpbiBwbGFjZSBiZWNhdXNlIGl0IGlzIHVzdWFsbHkgY29uc3VtZWQgaW1tZWRpYXRlbHlcbiAgICogYWZ0ZXIgYmVpbmcgcHVzaGVkIG9uIHRvIHRoZSBzdGFjay4gSW4gc29tZSBzaXR1YXRpb25zLCBzdWNoIGFzIHdpdGggY3VycmllZCBjb21wb25lbnRzLFxuICAgKiBpbmZvcm1hdGlvbiBhYm91dCBtb3JlIHRoYW4gb25lIEFyZ3VtZW50IG1heSBuZWVkIHRvIGV4aXN0IG9uIHRoZSBzdGFjayBhdCBvbmNlLiBJbiB0aG9zZVxuICAgKiBjYXNlcywgdGhlIENhcHR1cmVBcmdzIGluc3RydWN0aW9uIHBvcHMgYW4gQXJndW1lbnRzIG9iamVjdCBvZmYgdGhlIHN0YWNrIGFuZCByZXBsYWNlcyBpdFxuICAgKiB3aXRoIHRoZSBpbW11dGFibGUgQ2FwdHVyZWRBcmdzIHNuYXBzaG90LlxuICAgKi9cbiAgQ2FwdHVyZUFyZ3MsXG5cbiAgLyoqXG4gICAqIE9wZXJhdGlvbjogQ3JlYXRlIHRoZSBjb21wb25lbnQgYW5kIHB1c2ggaXQgb250byB0aGUgc3RhY2suXG4gICAqIEZvcm1hdDpcbiAgICogICAoQ3JlYXRlQ29tcG9uZW50IGZsYWdzOnUzMiBzdGF0ZTpyZWdpc3RlcilcbiAgICogICAuLi4g4oaSXG4gICAqICAgLi4uXG4gICAqIERlc2NyaXB0aW9uOlxuICAgKiBPcGVyYW5kIFN0YWNrOlxuICAgKiAgIEZsYWdzOlxuICAgKlxuICAgKiAgICogMGIwMDE6IEhhcyBhIGRlZmF1bHQgYmxvY2tcbiAgICogICAqIDBiMDEwOiBIYXMgYW4gaW52ZXJzZSBibG9ja1xuICAgKi9cbiAgQ3JlYXRlQ29tcG9uZW50LFxuXG4gIC8qKlxuICAgKiBPcGVyYXRpb246IFJlZ2lzdGVyIGEgZGVzdHJ1Y3RvciBmb3IgdGhlIGN1cnJlbnQgY29tcG9uZW50XG4gICAqXG4gICAqIEZvcm1hdDpcbiAgICogICAoUmVnaXN0ZXJDb21wb25lbnREZXN0cnVjdG9yIHN0YXRlOnJlZ2lzdGVyKVxuICAgKiBPcGVyYW5kIFN0YWNrOlxuICAgKiAgIC4uLiDihpJcbiAgICogICAuLi5cbiAgICovXG4gIFJlZ2lzdGVyQ29tcG9uZW50RGVzdHJ1Y3RvcixcblxuICAvKipcbiAgICogT3BlcmF0aW9uOiBQdXNoIGEgbmV3IEVsZW1lbnRPcGVyYXRpb25zIGZvciB0aGUgY3VycmVudCBjb21wb25lbnQuXG4gICAqXG4gICAqIEZvcm1hdDpcbiAgICogICAoUHV0Q29tcG9uZW50T3BlcmF0aW9ucylcbiAgICogT3BlcmFuZCBTdGFjazpcbiAgICogICAuLi4g4oaSXG4gICAqICAgLi4uXG4gICAqL1xuICBQdXRDb21wb25lbnRPcGVyYXRpb25zLFxuXG4gIC8qKlxuICAgKiBPcGVyYXRpb246IFB1c2ggdGhlIGNvbXBvbmVudCdzIGBzZWxmYCBvbnRvIHRoZSBzdGFjay5cbiAgICpcbiAgICogRm9ybWF0OlxuICAgKiAgIChHZXRDb21wb25lbnRTZWxmIHN0YXRlOnJlZ2lzdGVyKVxuICAgKiBPcGVyYW5kIFN0YWNrOlxuICAgKiAgIC4uLiDihpJcbiAgICogICAuLi4sIFZlcnNpb25lZFBhdGhSZWZlcmVuY2VcbiAgICovXG4gIEdldENvbXBvbmVudFNlbGYsXG5cbiAgLyoqXG4gICAqIE9wZXJhdGlvbjogUHVzaCB0aGUgY29tcG9uZW50J3MgYHNlbGZgIG9udG8gdGhlIHN0YWNrLlxuICAgKlxuICAgKiBGb3JtYXQ6XG4gICAqICAgKEdldENvbXBvbmVudFRhZ05hbWUgc3RhdGU6cmVnaXN0ZXIpXG4gICAqIE9wZXJhbmQgU3RhY2s6XG4gICAqICAgLi4uIOKGklxuICAgKiAgIC4uLiwgT3B0aW9uPHN0cmluZz5cbiAgICovXG4gIEdldENvbXBvbmVudFRhZ05hbWUsXG5cbiAgLyoqXG4gICAqIE9wZXJhdGlvbjogR2V0IHRoZSBjb21wb25lbnQgbGF5b3V0IGZyb20gdGhlIG1hbmFnZXIuXG4gICAqXG4gICAqIEZvcm1hdDpcbiAgICogICAoR2V0Q29tcG9uZW50TGF5b3V0IHN0YXRlOnJlZ2lzdGVyKVxuICAgKiBPcGVyYW5kIFN0YWNrOlxuICAgKiAgIC4uLiDihpJcbiAgICogICAuLi4sIFByb2dyYW1TeW1ib2xUYWJsZSwgSGFuZGxlXG4gICAqL1xuICBHZXRDb21wb25lbnRMYXlvdXQsXG5cbiAgLyoqXG4gICAqIE9wZXJhdGlvbjogUG9wdWxhdGUgdGhlIGV2YWwgbG9va3VwIGlmIG5lY2Vzc2FyeS5cbiAgICpcbiAgICogRm9ybWF0OlxuICAgKiAgIChTZXR1cEZvckV2YWwgc3RhdGU6cmVnaXN0ZXIpXG4gICAqIE9wZXJhbmQgU3RhY2s6XG4gICAqICAgLi4uIOKGklxuICAgKiAgIC4uLlxuICAgKi9cbiAgU2V0dXBGb3JFdmFsLFxuXG4gIC8qKlxuICAgKiBPcGVyYXRpb246IFBvcHVsYXRlIHRoZSBldmFsIGxvb2t1cCBpZiBuZWNlc3NhcnkuXG4gICAqXG4gICAqIEZvcm1hdDpcbiAgICogICAoU2V0dXBGb3JFdmFsIHN0YXRlOnJlZ2lzdGVyKVxuICAgKiBPcGVyYW5kIFN0YWNrOlxuICAgKiAgIC4uLiDihpJcbiAgICogICAuLi5cbiAgICovXG4gIEJpbmRFdmFsU2NvcGUsXG5cbiAgLyoqXG4gICAqIE9wZXJhdGlvbjpcbiAgICogICBQb3B1bGF0ZSB0aGUgc3RhdGUgcmVnaXN0ZXIgd2l0aCB0aGUgbGF5b3V0IGN1cnJlbnRseVxuICAgKiAgIG9uIHRoZSBzdGFjay5cbiAgICpcbiAgICogRm9ybWF0OlxuICAgKiAgIChQb3B1bGF0ZUxheW91dCBzdGF0ZTpyZWdpc3RlcilcbiAgICogT3BlcmFuZCBTdGFjazpcbiAgICogICAuLi4sIFByb2dyYW1TeW1ib2xUYWJsZSwgSGFuZGxlIOKGklxuICAgKiAgIC4uLlxuICAgKi9cbiAgUG9wdWxhdGVMYXlvdXQsXG5cbiAgLyoqXG4gICAqIE9wZXJhdGlvbjogSW52b2tlIHRoZSBsYXlvdXQgcmV0dXJuZWQgYnkgdGhlIG1hbmFnZXIuXG4gICAqXG4gICAqIEZvcm1hdDpcbiAgICogICAoSW52b2tlQ29tcG9uZW50TGF5b3V0IHN0YXRlOnJlZ2lzdGVyKVxuICAgKiBPcGVyYW5kIFN0YWNrOlxuICAgKiAgIC4uLiDihpJcbiAgICogICAuLi5cbiAgICovXG4gIEludm9rZUNvbXBvbmVudExheW91dCxcblxuICAvKipcbiAgICogT3BlcmF0aW9uOiBCZWdpbiBhIG5ldyBjYWNoZSBncm91cFxuICAgKlxuICAgKiBGb3JtYXQ6XG4gICAqICAgKEJlZ2luQ29tcG9uZW50VHJhbnNhY3Rpb24pXG4gICAqIE9wZXJhbmQgU3RhY2s6XG4gICAqICAgLi4uLCBDb21wb25lbnRNYW5hZ2VyPFQ+LCBUIOKGklxuICAgKiAgIC4uLiwgQ29tcG9uZW50TWFuYWdlcjxUPiwgVFxuICAgKi9cbiAgQmVnaW5Db21wb25lbnRUcmFuc2FjdGlvbixcblxuICAvKipcbiAgICogT3BlcmF0aW9uOiBDb21taXQgdGhlIGN1cnJlbnQgY2FjaGUgZ3JvdXBcbiAgICpcbiAgICogRm9ybWF0OlxuICAgKiAgIChDb21taXRDb21wb25lbnRUcmFuc2FjdGlvbilcbiAgICogT3BlcmFuZCBTdGFjazpcbiAgICogICAuLi4g4oaSXG4gICAqICAgLi4uXG4gICAqL1xuICBDb21taXRDb21wb25lbnRUcmFuc2FjdGlvbixcblxuICAvKipcbiAgICogT3BlcmF0aW9uOiBJbnZva2UgZGlkQ3JlYXRlRWxlbWVudCBvbiB0aGUgY3VycmVudCBjb21wb25lbnQgbWFuYWdlclxuICAgKlxuICAgKiBGb3JtYXQ6XG4gICAqICAgKERpZENyZWF0ZUVsZW1lbnQgc3RhdGU6cmVnaXN0ZXIpXG4gICAqIE9wZXJhbmQgU3RhY2s6XG4gICAqICAgLi4uIOKGklxuICAgKiAgIC4uLlxuICAgKi9cbiAgRGlkQ3JlYXRlRWxlbWVudCxcblxuICAvKipcbiAgICogT3BlcmF0aW9uOiBJbnZva2UgZGlkUmVuZGVyTGF5b3V0IG9uIHRoZSBjdXJyZW50IGNvbXBvbmVudCBtYW5hZ2VyXG4gICAqXG4gICAqIEZvcm1hdDpcbiAgICogICAoRGlkUmVuZGVyTGF5b3V0IHN0YXRlOnJlZ2lzdGVyKVxuICAgKiBPcGVyYW5kIFN0YWNrOlxuICAgKiAgIC4uLiwg4oaSXG4gICAqICAgLi4uXG4gICAqL1xuICBEaWRSZW5kZXJMYXlvdXQsXG5cbiAgLy8vIFBBUlRJQUxTXG5cbiAgLyoqXG4gICAqIE9wZXJhdGlvbjogTG9va3VwIGFuZCBpbnZva2UgYSBwYXJ0aWFsIHRlbXBsYXRlLlxuICAgKlxuICAgKiBGb3JtYXQ6XG4gICAqICAgKEludm9rZVBhcnRpYWwgdGVtcGxhdGVNZXRhOiNMb2NhdG9yIHN5bWJvbHM6I0FycmF5PCNzdHJpbmc+IGV2YWxJbmZvOiNBcnJheTxudW1iZXI+KVxuICAgKiBPcGVyYW5kIFN0YWNrOlxuICAgKiAgIC4uLiwgVmVyc2lvbmVkUGF0aFJlZmVyZW5jZTxzdHJpbmc+IOKGklxuICAgKiAgIC4uLlxuICAgKi9cbiAgSW52b2tlUGFydGlhbCxcblxuICAvKipcbiAgICogT3BlcmF0aW9uOlxuICAgKiAgIFJlc29sdmUge3tmb299fSBpbnNpZGUgYSBwYXJ0aWFsLCB3aGljaCBjb3VsZCBiZSBlaXRoZXIgYSBzZWxmLWxvb2t1cFxuICAgKiAgIG9yIGEgbG9jYWwgdmFyaWFibGUgdGhhdCBpcyBpbi1zY29wZSBmb3IgdGhlIGNhbGxlci5cbiAgICpcbiAgICogRm9ybWF0OlxuICAgKiAgIChSZXNvbHZlTWF5YmVMb2NhbCBsb2NhbDojc3RyaW5nKVxuICAgKiBPcGVyYW5kIFN0YWNrOlxuICAgKiAgIC4uLiDihpJcbiAgICogICAuLi4sIFZlcnNpb25lZFBhdGhSZWZlcmVuY2VcbiAgICovXG4gIFJlc29sdmVNYXliZUxvY2FsLFxuXG4gIC8vLyBERUJVR0dFUlxuXG4gIC8qKlxuICAgKiBPcGVyYXRpb246IEFjdGl2YXRlIHRoZSBkZWJ1Z2dlclxuICAgKlxuICAgKiBGb3JtYXQ6XG4gICAqICAgKERlYnVnZ2VyIHN5bWJvbHM6I0FycmF5PHN0cmluZz4gZXZhbEluZm86I0FycmF5PG51bWJlcj4pXG4gICAqIE9wZXJhbmQgU3RhY2s6XG4gICAqICAgLi4uIOKGklxuICAgKiAgIC4uLlxuICAgKi9cbiAgRGVidWdnZXIsXG5cbiAgLyoqIFRoZSBzaXplIG9mIHRoZSBvcGNvZGUgbGlzdCAqL1xuICBTaXplLFxufVxuIl19
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3Bjb2Rlcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3BhY2thZ2VzL0BnbGltbWVyL3ZtL2xpYi9vcGNvZGVzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgY29uc3QgZW51bSBPcCB7XG4gIC8qXG4gICAgRG9jdW1lbnRhdGlvbiBUT0RPOlxuXG4gICAgRG9jdW1lbnQgdGhlIGxvY2FsIHZhcmlhYmxlIGxheW91dCBpbiB0aGUgc3RhY2tcbiAgICBkaWFncmFtIGJlZm9yZS1hbmQtYWZ0ZXIuXG5cbiAgICBEb2N1bWVudCB1cGRhdGluZyBvcGNvZGVzIGVtaXR0aW5nIGZyb20gdW5yZWFjaGFibGVcbiAgICBhcHBlbmQgb3Bjb2RlLlxuXG4gICAgRG9jdW1lbnQgdGhlIGVsZW1lbnQgc3RhY2ssIGJsb2NrIHN0YWNrIGFuZCBMaXN0XG4gICAgYmxvY2sgc3RhY2suXG4gICAqL1xuXG4gIC8qKlxuICAgKiBUaGlzIG9wY29kZSBzaG91bGQgbmV2ZXIgYmUgcmVhY2hlZC5cbiAgICovXG4gIEJ1ZyxcblxuICAvLy8gRVhQUkVTU0lPTlNcblxuICAvKipcbiAgICogT3BlcmF0aW9uOiBFdmFsdWF0ZSBhIEhlbHBlci5cbiAgICogRm9ybWF0OlxuICAgKiAgIChIZWxwZXIgaGVscGVyOiNGdW5jdGlvbilcbiAgICogT3BlcmFuZCBTdGFjazpcbiAgICogICAuLi4sIFtWZXJzaW9uZWRQYXRoUmVmZXJlbmNlIC4uLl0sIEFyZ3VtZW50cyDihpJcbiAgICogICAuLi4sIFZlcnNpb25lZFBhdGhSZWZlcmVuY2VcbiAgICovXG4gIEhlbHBlcixcblxuICAvKipcbiAgICogT3BlcmF0aW9uOlxuICAgKiAgIEJpbmQgdGhlIG5hbWVkIGFyZ3VtZW50cyBpbiB0aGUgQXJndW1lbnRzIHRvIHRoZSBzeW1ib2xzXG4gICAqICAgc3BlY2lmaWVkIGJ5IHRoZSBzeW1ib2wgdGFibGUgaW4gdGhlIGNvbXBvbmVudCBzdGF0ZSBhdCByZWdpc3Rlci5cbiAgICogRm9ybWF0OlxuICAgKiAgIChTZXROYW1lZFZhcmlhYmxlcyByZWdpc3Rlcjp1MzIpXG4gICAqIE9wZXJhbmQgU3RhY2s6XG4gICAqICAgLi4uLCBBcmd1bWVudHMg4oaSXG4gICAqICAgLi4uXG4gICAqL1xuICBTZXROYW1lZFZhcmlhYmxlcyxcblxuICAvKipcbiAgICogT3BlcmF0aW9uOlxuICAgKiAgIEJpbmQgdGhlIGJsb2NrcyBpbiB0aGUgQXJndW1lbnRzIHRvIHRoZSBzeW1ib2xzIHNwZWNpZmllZCBieSB0aGVcbiAgICogICBzeW1ib2wgdGFibGUgaW4gdGhlIGNvbXBvbmVudCBzdGF0ZSBhdCByZWdpc3Rlci5cbiAgICogRm9ybWF0OlxuICAgKiAgIChTZXRCbG9ja3MgcmVnaXN0ZXI6dTMyKVxuICAgKiBPcGVyYW5kIFN0YWNrOlxuICAgKiAgIC4uLiwgQXJndW1lbnRzIOKGklxuICAgKiAgIC4uLlxuICAgKi9cbiAgU2V0QmxvY2tzLFxuXG4gIC8qKlxuICAgKiBPcGVyYXRpb246XG4gICAqICAgQmluZCB0aGUgdmFyaWFibGUgcmVwcmVzZW50ZWQgYnkgYSBzeW1ib2wgZnJvbVxuICAgKiAgIHRoZSB2YWx1ZSBhdCB0aGUgdG9wIG9mIHRoZSBzdGFjay5cbiAgICogRm9ybWF0OlxuICAgKiAgIChTZXRWYXJpYWJsZSBzeW1ib2w6dTMyKVxuICAgKiBPcGVyYW5kIFN0YWNrOlxuICAgKiAgIC4uLiwgVmVyc2lvbmVkUGF0aFJlZmVyZW5jZSDihpJcbiAgICogICAuLi5cbiAgICovXG4gIFNldFZhcmlhYmxlLFxuXG4gIC8qKlxuICAgKiBPcGVyYXRpb246XG4gICAqICAgQmluZCB0aGUgYmxvY2sgYXQgdGhlIHRvcCBvZiB0aGUgc3RhY2suXG4gICAqIEZvcm1hdDpcbiAgICogICAoU2V0QmxvY2sgc3ltYm9sOnUzMilcbiAgICogT3BlcmFuZCBTdGFjazpcbiAgICogICAuLi4sIFN5bWJvbFRhYmxlLCBIYW5kbGUg4oaSXG4gICAqICAgLi4uXG4gICAqL1xuICBTZXRCbG9jayxcblxuICAvKipcbiAgICogT3BlcmF0aW9uOlxuICAgKiAgIFB1c2ggdGhlIGNvbnRlbnRzIG9mIHRoZSB2YXJpYWJsZSByZXByZXNlbnRlZCBieVxuICAgKiAgIGEgc3ltYm9sIChhIHBvc2l0aW9uYWwgb3IgbmFtZWQgYXJndW1lbnQpIG9udG9cbiAgICogICB0aGUgc3RhY2suXG4gICAqIEZvcm1hdDpcbiAgICogICAoUHVzaFN5bWJvbCBzeW1ib2w6dTMyKVxuICAgKiBPcGVyYW5kIFN0YWNrOlxuICAgKiAgIC4uLiDihpJcbiAgICogICAuLi4sIFZlcnNpb25lZFBhdGhSZWZlcmVuY2VcbiAgICovXG4gIEdldFZhcmlhYmxlLFxuXG4gIC8qKlxuICAgKiBPcGVyYXRpb246XG4gICAqICAgUG9wIGEgVmVyc2lvbmVkUGF0aFJlZmVyZW5jZSBmcm9tIHRoZSB0b3Agb2YgdGhlXG4gICAqICAgc3RhY2ssIGFuZCBwdXNoIGEgVmVyc2lvbmVkUGF0aFJlZmVyZW5jZSBjb25zdHJ1Y3RlZFxuICAgKiAgIGJ5IGAuZ2V0KHByb3BlcnR5KWAuXG4gICAqIEZvcm1hdDpcbiAgICogICAoR2V0UHJvcGVydHkgcHJvcGVydHk6I3N0cmluZylcbiAgICogT3BlcmFuZCBTdGFjazpcbiAgICogICAuLi4sIFZlcnNpb25lZFBhdGhSZWZlcmVuY2Ug4oaSXG4gICAqICAgLi4uLCBWZXJzaW9uZWRQYXRoUmVmZXJlbmNlXG4gICAqL1xuICBHZXRQcm9wZXJ0eSxcblxuICAvKipcbiAgICogT3BlcmF0aW9uOiBQdXNoIHRoZSBzcGVjaWZpZWQgYm91bmQgYmxvY2sgb250byB0aGUgc3RhY2suXG4gICAqIEZvcm1hdDpcbiAgICogICAoR2V0QmxvY2sgYmxvY2s6dTMyKVxuICAgKiBPcGVyYW5kIFN0YWNrOlxuICAgKiAgIC4uLiDihpJcbiAgICogICAuLi4sIElubGluZUJsb2NrXG4gICAqL1xuICBHZXRCbG9jayxcblxuICAvKipcbiAgICogT3BlcmF0aW9uOlxuICAgKiAgIFB1c2ggVFJVRSBvbnRvIHRoZSBzdGFjayBpZiB0aGUgc3BlY2lmaWVkIGJsb2NrXG4gICAqICAgaXMgYm91bmQgYW5kIEZBTFNFIGlmIGl0IGlzIG5vdC5cbiAgICogRm9ybWF0OlxuICAgKiAgIChIYXNCbG9jayBibG9jazp1MzIpXG4gICAqIE9wZXJhbmQgU3RhY2s6XG4gICAqICAgLi4uIOKGklxuICAgKiAgIC4uLiwgYm9vbGVhblxuICAgKi9cbiAgSGFzQmxvY2ssXG5cbiAgLyoqXG4gICAqIE9wZXJhdGlvbjpcbiAgICogICBQdXNoIFRSVUUgb250byB0aGUgc3RhY2sgaWYgdGhlIHNwZWNpZmllZCBibG9ja1xuICAgKiAgIGlzIGJvdW5kICphbmQqIGhhcyBhdCBsZWFzdCBvbmUgc3BlY2lmaWVkIGZvcm1hbFxuICAgKiAgIHBhcmFtZXRlciwgYW5kIEZBTFNFIG90aGVyd2lzZS5cbiAgICogRm9ybWF0OlxuICAgKiAgIChIYXNCbG9ja1BhcmFtcyBibG9jazp1MzIpXG4gICAqIE9wZXJhbmQgU3RhY2s6XG4gICAqICAgLi4uIOKGklxuICAgKiAgIC4uLiwgVmVyc2lvbmVkUGF0aFJlZmVyZW5jZSAoYm9vbGVhbilcbiAgICovXG4gIEhhc0Jsb2NrUGFyYW1zLFxuXG4gIC8qKlxuICAgKiBPcGVyYXRpb246XG4gICAqICAgUG9wIGNvdW50IGBWZXJzaW9uZWRQYXRoUmVmZXJlbmNlYHMgb2ZmIHRoZSBzdGFjayBhbmRcbiAgICogICBjb25zdHJ1Y3QgYSBuZXcgQ29uY2F0UmVmZXJlbmNlIGZyb20gdGhlbSAoaW4gcmV2ZXJzZVxuICAgKiAgIG9yZGVyKS5cbiAgICogRm9ybWF0OlxuICAgKiAgIChDb25jYXQgY291bnQ6dTMyKVxuICAgKiBPcGVyYW5kIFN0YWNrOlxuICAgKiAgIC4uLiwgVmVyc2lvbmVkUGF0aFJlZmVyZW5jZSwgW1ZlcnNpb25lZFBhdGhSZWZlcmVuY2UgLi4uXSDihpJcbiAgICogICAuLi4sIENvbmNhdFJlZmVyZW5jZVxuICAgKi9cbiAgQ29uY2F0LFxuXG4gIC8qKlxuICAgKiBPcGVyYXRpb246XG4gICAqICAgUHVzaCBhbiBPYmplY3QgY29uc3RhbnQgb250byB0aGUgc3RhY2sgdGhhdCBpcyBub3RcbiAgICogICBhIEphdmFTY3JpcHQgcHJpbWl0aXZlLlxuICAgKiBGb3JtYXQ6XG4gICAqICAgKFB1c2hDb25zdGFudCBjb25zdGFudDojT2JqZWN0KVxuICAgKiBPcGVyYW5kIFN0YWNrOlxuICAgKiAgIC4uLiDihpJcbiAgICogICAuLi4sIE9wYXF1ZVxuICAgKi9cbiAgQ29uc3RhbnQsXG5cbiAgLyoqXG4gICAqIE9wZXJhdGlvbjpcbiAgICogICBXcmFwIGEgSmF2YVNjcmlwdCBwcmltaXRpdmUgaW4gYSByZWZlcmVuY2UgYW5kIHB1c2ggaXRcbiAgICogICBvbnRvIHRoZSBzdGFjay5cbiAgICogRm9ybWF0OlxuICAgKiAgIChQdXNoUHJpbWl0aXZlIGNvbnN0YW50OiNQcmltaXRpdmUpXG4gICAqIE9wZXJhbmQgU3RhY2s6XG4gICAqICAgLi4uIOKGklxuICAgKiAgIC4uLiwgUHJpbWl0aXZlXG4gICAqIERlc2NyaXB0aW9uOlxuICAgKiAgIFRoZSB0d28gaGlnaCBiaXRzIG9mIHRoZSBjb25zdGFudCByZWZlcmVuY2UgZGVzY3JpYmVcbiAgICogICB0aGUga2luZCBvZiBwcmltaXRpdmU6XG4gICAqXG4gICAqICAgMDA6IG51bWJlclxuICAgKiAgIDAxOiBzdHJpbmdcbiAgICogICAxMDogdHJ1ZSB8IGZhbHNlIHwgbnVsbCB8IHVuZGVmaW5lZFxuICAgKi9cbiAgUHJpbWl0aXZlLFxuXG4gIC8qKlxuICAgKiBPcGVyYXRpb246IENvbnZlcnQgdGhlIHRvcCBvZiB0aGUgc3RhY2sgaW50byBhIHByaW1pdGl2ZSByZWZlcmVuY2UuXG4gICAqXG4gICAqIEZvcm1hdDpcbiAgICogICAoUHJpbWl0aXZlUmVmZXJlbmNlKVxuICAgKiBPcGVyYW5kIFN0YWNrOlxuICAgKiAgIC4uLiwgUHJpbWl0aXZlIOKGklxuICAgKiAgIC4uLiwgVmVyc2lvbmVkUGF0aFJlZmVyZW5jZTxQcmltaXRpdmU+XG4gICAqL1xuICBQcmltaXRpdmVSZWZlcmVuY2UsXG5cbiAgLyoqXG4gICAqIE9wZXJhdGlvbjogQ29udmVydCB0aGUgdG9wIG9mIHRoZSBzdGFjayBpbnRvIGEgbnVtYmVyLlxuICAgKlxuICAgKiBGb3JtYXQ6XG4gICAqICAgKFJlaWZ5VTMyKVxuICAgKiBPcGVyYW5kIFN0YWNrOlxuICAgKiAgIC4uLiwgVmVyc2lvbmVkUGF0aFJlZmVyZW5jZTx1MzI+IOKGklxuICAgKiAgIC4uLiwgVmVyc2lvbmVkUGF0aFJlZmVyZW5jZTx1MzI+LCB1MzJcbiAgICovXG4gIFJlaWZ5VTMyLFxuXG4gIC8qKlxuICAgKiBPcGVyYXRpb246IER1cGxpY2F0ZSBhbmQgcHVzaCBpdGVtIGZyb20gYW4gb2Zmc2V0IGluIHRoZSBzdGFjay5cbiAgICogRm9ybWF0OlxuICAgKiAgIChEdXAgcmVnaXN0ZXI6dTMyLCBvZmZzZXQ6dTMyKVxuICAgKiBPcGVyYW5kIFN0YWNrOlxuICAgKiAgIC4uLiwgT3BhcXVlIOKGklxuICAgKiAgIC4uLiwgT3BhcXVlLCBPcGFxdWVcbiAgICovXG4gIER1cCxcblxuICAvKipcbiAgICogT3BlcmF0aW9uOiBQb3AgTiBpdGVtcyBvZmYgdGhlIHN0YWNrIGFuZCB0aHJvdyBhd2F5IHRoZSB2YWx1ZS5cbiAgICogRm9ybWF0OlxuICAgKiAgIChQb3ApXG4gICAqIE9wZXJhbmQgU3RhY2s6XG4gICAqICAgLi4uLCBPcGFxdWUsIC4uLiwgT3BhcXVlIOKGklxuICAgKiAgIC4uLlxuICAgKi9cbiAgUG9wLFxuXG4gIC8qKlxuICAgKiBPcGVyYXRpb246IExvYWQgYSB2YWx1ZSBpbnRvIGEgcmVnaXN0ZXJcbiAgICogRm9ybWF0OlxuICAgKiAgIChMb2FkIHJlZ2lzdGVyOnUzMilcbiAgICogT3BlcmFuZCBTdGFjazpcbiAgICogICAuLi4sIE9wYXF1ZSDihpJcbiAgICogICAuLi5cbiAgICovXG4gIExvYWQsXG5cbiAgLyoqXG4gICAqIE9wZXJhdGlvbjogRmV0Y2ggYSB2YWx1ZSBmcm9tIGEgcmVnaXN0ZXJcbiAgICogRm9ybWF0OlxuICAgKiAgIChGZXRjaCByZWdpc3Rlcjp1MzIpXG4gICAqIE9wZXJhbmQgU3RhY2s6XG4gICAqICAgLi4uIOKGklxuICAgKiAgIC4uLiwgT3BhcXVlXG4gICAqL1xuICBGZXRjaCxcblxuICAvLy8gUFJFTFVERSAmIEVYSVRcblxuICAvKipcbiAgICogT3BlcmF0aW9uOiBQdXNoIGEgbmV3IHJvb3Qgc2NvcGUgb250byB0aGUgc2NvcGUgc3RhY2suXG4gICAqXG4gICAqIEZvcm1hdDpcbiAgICogICAoUm9vdFNjb3BlIHN5bWJvbHM6dTMyIGJpbmRDYWxsZXJTY29wZTpib29sKVxuICAgKiBPcGVyYW5kIFN0YWNrOlxuICAgKiAgIC4uLiDihpJcbiAgICogICAuLi5cbiAgICogRGVzY3JpcHRpb246XG4gICAqICAgQSByb290IHNjb3BlIGhhcyBubyBwYXJlbnQgc2NvcGUsIGFuZCB0aGVyZWZvcmUgaW5oZXJpdHMgbm8gbGV4aWNhbFxuICAgKiAgIHZhcmlhYmxlcy4gSWYgYGJpbmRDYWxsZXJTY29wZWAgaXMgYHRydWVgLCB0aGUgY3VycmVudCBzY29wZSByZW1lbWJlcnNcbiAgICogICB0aGUgY2FsbGVyIHNjb3BlIChmb3IgeWllbGRpbmcgYmxvY2tzKS5cbiAgICovXG4gIFJvb3RTY29wZSxcblxuICAvKipcbiAgICogT3BlcmF0aW9uOiBQdXNoIGEgbmV3IHJvb3Qgc2NvcGUgb250byB0aGUgc2NvcGUgc3RhY2suXG4gICAqXG4gICAqIEZvcm1hdDpcbiAgICogICAoVmlydHVhbFJvb3RTY29wZSByZWdpc3Rlcjp1MzIpXG4gICAqIE9wZXJhbmQgU3RhY2s6XG4gICAqICAgLi4uIOKGklxuICAgKiAgIC4uLlxuICAgKiBEZXNjcmlwdGlvbjpcbiAgICogICBUaGUgc3ltYm9sIGNvdW50IGlzIGRldGVybWluZWQgYnkgdGhlIGNvbXBvbmVudCBzdGF0ZSBpblxuICAgKiAgIHRoZSBzcGVjaWZpZWQgcmVnaXN0ZXIuXG4gICAqL1xuICBWaXJ0dWFsUm9vdFNjb3BlLFxuXG4gIC8qKlxuICAgKiBPcGVyYXRpb246IFB1c2ggYSBuZXcgY2hpbGQgc2NvcGUgb250byB0aGUgc2NvcGUgc3RhY2suXG4gICAqXG4gICAqIEZvcm1hdDpcbiAgICogICAoQ2hpbGRTY29wZSlcbiAgICogT3BlcmFuZCBTdGFjazpcbiAgICogICAuLi4g4oaSXG4gICAqICAgLi4uXG4gICAqIERlc2NyaXB0aW9uOlxuICAgKiAgIEEgY2hpbGQgc2NvcGUgaW5oZXJpdHMgZnJvbSB0aGUgY3VycmVudCBwYXJlbnQgc2NvcGUsIGFuZCB0aGVyZWZvcmVcbiAgICogICBzaGFyZXMgaXRzIGxleGljYWwgdmFyaWFibGVzLlxuICAgKi9cbiAgQ2hpbGRTY29wZSxcblxuICAvKipcbiAgICogT3BlcmF0aW9uOiBQb3AgdGhlIGN1cnJlbnQgc2NvcGUgZnJvbSB0aGUgc2NvcGUgc3RhY2suXG4gICAqIEZvcm1hdDpcbiAgICogICAoUG9wU2NvcGUpXG4gICAqIE9wZXJhbmQgU3RhY2s6XG4gICAqICAgLi4uIOKGklxuICAgKiAgIC4uLlxuICAgKi9cbiAgUG9wU2NvcGUsXG5cbiAgLyoqXG4gICAqIE9wZXJhdGlvbjogUmV0dXJuIHRvIHRoZSBwcmV2aW91cyBmcmFtZS5cbiAgICogRm9ybWF0OlxuICAgKiAgIChSZXR1cm4pXG4gICAqIE9wZXJhbmQgU3RhY2s6XG4gICAqICAgLi4uLCBhZGRyZXNzOm51bWJlciDihpJcbiAgICogICAuLi5cbiAgICovXG4gIFJldHVybixcblxuICAvKipcbiAgICogT3BlcmF0aW9uOiBSZXR1cm4gdG8gYSBwbGFjZSBpbiB0aGUgcHJvZ3JhbSBnaXZlbiBhbiBvZmZzZXRcbiAgICogRm9ybWF0OlxuICAgKiAgKFJldHVyblRvIG9mZnNldDppMzIpXG4gICAqIE9wZXJhbmQgU3RhY2s6XG4gICAqICAgIC4uLiDihpJcbiAgICovXG4gIFJldHVyblRvLFxuXG4gIC8vLyBIVE1MXG5cbiAgLyoqXG4gICAqIE9wZXJhdGlvbjogQXBwZW5kIGEgVGV4dCBub2RlIHdpdGggdmFsdWUgYGNvbnRlbnRzYFxuICAgKiBGb3JtYXQ6XG4gICAqICAgKFRleHQgY29udGVudHM6I3N0cmluZylcbiAgICogT3BlcmFuZCBTdGFjazpcbiAgICogICAuLi4g4oaSXG4gICAqICAgLi4uXG4gICAqL1xuICBUZXh0LFxuXG4gIC8qKlxuICAgKiBPcGVyYXRpb246IEFwcGVuZCBhIENvbW1lbnQgbm9kZSB3aXRoIHZhbHVlIGBjb250ZW50c2BcbiAgICogRm9ybWF0OlxuICAgKiAgIChDb21tZW50IGNvbnRlbnRzOiNzdHJpbmcpXG4gICAqIE9wZXJhbmQgU3RhY2s6XG4gICAqICAgLi4uIOKGklxuICAgKiAgIC4uLlxuICAgKi9cbiAgQ29tbWVudCxcblxuICAvKipcbiAgICogT3BlcmF0aW9uOiBBcHBlbmQgY29udGVudCBhcyBIVE1MLlxuICAgKiBGb3JtYXQ6XG4gICAqICAgKEFwcGVuZEhUTUwpXG4gICAqIE9wZXJhbmQgU3RhY2s6XG4gICAqICAgLi4uLCBWZXJzaW9uZWRQYXRoUmVmZXJlbmNlPHN0cmluZz4g4oaSXG4gICAqICAgLi4uXG4gICAqL1xuICBBcHBlbmRIVE1MLFxuXG4gIC8qKlxuICAgKiBPcGVyYXRpb246IEFwcGVuZCBTYWZlSFRNTCBhcyBIVE1MLlxuICAgKiBGb3JtYXQ6XG4gICAqICAgKEFwcGVuZFNhZmVIVE1MKVxuICAgKiBPcGVyYW5kIFN0YWNrOlxuICAgKiAgIC4uLiwgVmVyc2lvbmVkUGF0aFJlZmVyZW5jZTxTYWZlSFRNTD4g4oaSXG4gICAqICAgLi4uXG4gICAqL1xuICBBcHBlbmRTYWZlSFRNTCxcblxuICAvKipcbiAgICogT3BlcmF0aW9uOiBBcHBlbmQgRG9jdW1lbnRGcmFnbWVudC5cbiAgICogRm9ybWF0OlxuICAgKiAgIChBcHBlbmRGcmFnbWVudClcbiAgICogT3BlcmFuZCBTdGFjazpcbiAgICogICAuLi4sIFZlcnNpb25lZFBhdGhSZWZlcmVuY2U8RG9jdW1lbnRGcmFnbWVudD4g4oaSXG4gICAqICAgLi4uXG4gICAqL1xuICBBcHBlbmREb2N1bWVudEZyYWdtZW50LFxuXG4gIC8qKlxuICAgKiBPcGVyYXRpb246IEFwcGVuZCBOb2RlLlxuICAgKiBGb3JtYXQ6XG4gICAqICAgKEFwcGVuZEZyYWdtZW50KVxuICAgKiBPcGVyYW5kIFN0YWNrOlxuICAgKiAgIC4uLiwgVmVyc2lvbmVkUGF0aFJlZmVyZW5jZTxOb2RlPiDihpJcbiAgICogICAuLi5cbiAgICovXG4gIEFwcGVuZE5vZGUsXG5cbiAgLyoqXG4gICAqIE9wZXJhdGlvbjogQXBwZW5kIGNvbnRlbnQgYXMgdGV4dC5cbiAgICogRm9ybWF0OlxuICAgKiAgIChBcHBlbmRUZXh0KVxuICAgKiBPcGVyYW5kIFN0YWNrOlxuICAgKiAgIC4uLiwgVmVyc2lvbmVkUGF0aFJlZmVyZW5jZTxzdHJpbmc+IOKGklxuICAgKiAgIC4uLlxuICAgKi9cbiAgQXBwZW5kVGV4dCxcblxuICAvKipcbiAgICogT3BlcmF0aW9uOiBPcGVuIGEgbmV3IEVsZW1lbnQgbmFtZWQgYHRhZ2AuXG4gICAqIEZvcm1hdDpcbiAgICogICAoT3BlbkVsZW1lbnQgdGFnOiNzdHJpbmcpXG4gICAqIE9wZXJhbmQgU3RhY2s6XG4gICAqICAgLi4uIOKGklxuICAgKiAgIC4uLlxuICAgKi9cbiAgT3BlbkVsZW1lbnQsXG5cbiAgLyoqXG4gICAqIE9wZXJhdGlvbjpcbiAgICogICBPcGVuIGEgbmV3IEVsZW1lbnQgd2l0aCBhIG5hbWUgb24gdGhlIHN0YWNrIGFuZCB3aXRoIHNwZWNpYWxcbiAgICogICBvcGVyYXRpb25zIHByb3ZpZGVkIG9uIHRoZSBzdGFjay5cbiAgICogRm9ybWF0OlxuICAgKiAgIChPcGVuRHluYW1pY0VsZW1lbnQpXG4gICAqIE9wZXJhbmQgU3RhY2s6XG4gICAqICAgLi4uLCBzdHJpbmcsIEVsZW1lbnRPcGVyYXRpb25zIOKGklxuICAgKiAgIC4uLlxuICAgKi9cbiAgT3BlbkR5bmFtaWNFbGVtZW50LFxuXG4gIC8qKlxuICAgKiBPcGVyYXRpb246IEFkZCBhbiBhdHRyaWJ1dGUgdG8gdGhlIGN1cnJlbnQgRWxlbWVudC5cbiAgICogRm9ybWF0OlxuICAgKiAgIChTdGF0aWNBdHRyIG5hbWU6I3N0cmluZyB2YWx1ZTojc3RyaW5nIG5hbWVzcGFjZTpPcHRpb248I3N0cmluZz4pXG4gICAqIE9wZXJhbmQgU3RhY2s6XG4gICAqICAgLi4uIOKGklxuICAgKiAgIC4uLlxuICAgKi9cbiAgU3RhdGljQXR0cixcblxuICAvKipcbiAgICogT3BlcmF0aW9uOlxuICAgKiAgIEFkZCBhbiBhdHRyaWJ1dGUgdG8gdGhlIGN1cnJlbnQgZWxlbWVudCB1c2luZyB0aGUgdmFsdWVcbiAgICogICBhdCB0aGUgdG9wIG9mIHRoZSBzdGFjay5cbiAgICpcbiAgICogRm9ybWF0OlxuICAgKiAgIChEeW5hbWljQXR0ciBuYW1lOiNzdHJpbmcgdHJ1c3Rpbmc6Ym9vbGVhbiBuYW1lc3BhY2U6T3B0aW9uPCNzdHJpbmc+KVxuICAgKiBPcGVyYW5kIFN0YWNrOlxuICAgKiAgIC4uLiwgVmVyc2lvbmVkUGF0aFJlZmVyZW5jZSDihpJcbiAgICogICAuLi5cbiAgICogRGVzY3JpcHRpb246XG4gICAqICAgSWYgYHRydXN0aW5nYCBpcyBmYWxzZSwgdGhlIGhvc3QgbWF5IHNhbml0aXplIHRoZSBhdHRyaWJ1dGVcbiAgICogICBiYXNlZCB1cG9uIGtub3duIHJpc2tzLlxuICAgKi9cbiAgRHluYW1pY0F0dHIsXG5cbiAgLyoqXG4gICAqIE9wZXJhdGlvbjpcbiAgICogICBBZGQgYW4gYXR0cmlidXRlIHRvIHRoZSBjdXJyZW50IGVsZW1lbnQgdXNpbmcgdGhlIHZhbHVlXG4gICAqICAgYXQgdGhlIHRvcCBvZiB0aGUgc3RhY2suXG4gICAqXG4gICAqIEZvcm1hdDpcbiAgICogICAoQ29tcG9uZW50QXRyIG5hbWU6I3N0cmluZyB0cnVzdGluZzpib29sZWFuIG5hbWVzcGFjZTpPcHRpb248I3N0cmluZz4pXG4gICAqIE9wZXJhbmQgU3RhY2s6XG4gICAqICAgLi4uLCBWZXJzaW9uZWRQYXRoUmVmZXJlbmNlIOKGklxuICAgKiAgIC4uLlxuICAgKi9cbiAgQ29tcG9uZW50QXR0cixcblxuICAvKipcbiAgICogT3BlcmF0aW9uOiBGaW5pc2ggc2V0dGluZyBhdHRyaWJ1dGVzIG9uIHRoZSBjdXJyZW50IGVsZW1lbnQuXG4gICAqXG4gICAqIEZvcm1hdDpcbiAgICogICAoRmx1c2hFbGVtZW50KVxuICAgKiBPcGVyYW5kIFN0YWNrOlxuICAgKiAgIC4uLiDihpJcbiAgICogICAuLi5cbiAgICovXG4gIEZsdXNoRWxlbWVudCxcblxuICAvKipcbiAgICogT3BlcmF0aW9uOiBDbG9zZSB0aGUgY3VycmVudCBlbGVtZW50LlxuICAgKlxuICAgKiBGb3JtYXQ6XG4gICAqICAgKENsb3NlRWxlbWVudClcbiAgICogT3BlcmFuZCBTdGFjazpcbiAgICogICAuLi4g4oaSXG4gICAqICAgLi4uXG4gICAqL1xuICBDbG9zZUVsZW1lbnQsXG5cbiAgLy8vIE1PRElGSUVSXG4gIE1vZGlmaWVyLCAvLyAoQ29uc3RhbnRTdHJpbmcsIENvbnN0YW50T3RoZXI8TW9kaWZpZXJNYW5hZ2VyPiwgQ29uc3RhbnRFeHByZXNzaW9uKVxuXG4gIC8vLyBXT1JNSE9MRVxuICBQdXNoUmVtb3RlRWxlbWVudCwgLy8gKClcbiAgUG9wUmVtb3RlRWxlbWVudCwgLy8gKClcblxuICAvLy8gRFlOQU1JQyBTQ09QRVxuXG4gIC8qKlxuICAgKiBPcGVyYXRpb246IEJpbmQgc3RhY2sgdmFsdWVzIGFzIGR5bmFtaWMgdmFyaWFibGVzLlxuICAgKiBGb3JtYXQ6XG4gICAqICAgKEJpbmREeW5hbWljU2NvcGUgbmFtZXM6I0FycmF5PCNzdHJpbmc+KVxuICAgKiBPcGVyYW5kIFN0YWNrOlxuICAgKiAgIC4uLiwgVmVyc2lvbmVkUGF0aFJlZmVyZW5jZSwgW1ZlcnNpb25lZFBhdGhSZWZlcmVuY2UgLi4uXSDihpJcbiAgICogICAuLi5cbiAgICogRGVzY3JpcHRpb246XG4gICAqICAgVGhpcyBpcyB1c2VkIHRvIGV4cG9zZSBgLXdpdGgtZHluYW1pYy12YXJzYCwgYW5kIGlzIGFcbiAgICogICBuaWNoZSBmZWF0dXJlLlxuICAgKi9cbiAgQmluZER5bmFtaWNTY29wZSxcblxuICBQdXNoRHluYW1pY1Njb3BlLCAvLyAoKVxuICBQb3BEeW5hbWljU2NvcGUsIC8vICgpXG5cbiAgLy8vIFZNXG5cbiAgLyoqXG4gICAqIE9wZXJhdGlvbjogQ29tcGlsZSB0aGUgSW5saW5lQmxvY2sgYXQgdGhlIHRvcCBvZiB0aGUgc3RhY2suXG4gICAqIEZvcm1hdDpcbiAgICogICAoQ29tcGlsZUJsb2NrKVxuICAgKiBPcGVyYW5kIFN0YWNrOlxuICAgKiAgIC4uLiwgQ29tcGlsYWJsZUJsb2NrIOKGklxuICAgKiAgIC4uLiwgSGFuZGxlXG4gICAqL1xuICBDb21waWxlQmxvY2ssXG5cbiAgLyoqXG4gICAqIE9wZXJhdGlvbjogUHVzaCBhIHNjb3BlIG9udG8gdGhlIHN0YWNrLlxuICAgKiBGb3JtYXQ6XG4gICAqICAgKFB1c2hCbG9ja1Njb3BlICNTY29wZSlcbiAgICogT3BlcmFuZCBTdGFjazpcbiAgICogICAuLi4sIOKGklxuICAgKiAgIC4uLiwgU2NvcGVcbiAgICovXG4gIFB1c2hCbG9ja1Njb3BlLFxuXG4gIC8qKlxuICAgKiBPcGVyYXRpb246IFB1c2ggYSBzeW1ib2wgdGFibGUgb250byB0aGUgc3RhY2suXG4gICAqIEZvcm1hdDpcbiAgICogICAoUHVzaFN5bWJvbFRhYmxlICNTeW1ib2xUYWJsZSlcbiAgICogT3BlcmFuZCBTdGFjazpcbiAgICogICAuLi4sIOKGklxuICAgKiAgIC4uLiwgU3ltYm9sVGFibGVcbiAgICovXG4gIFB1c2hTeW1ib2xUYWJsZSxcblxuICAvKipcbiAgICogT3BlcmF0aW9uOiBFdmFsdWF0ZSB0aGUgaGFuZGxlIGF0IHRoZSB0b3Agb2YgdGhlIHN0YWNrLlxuICAgKiBGb3JtYXQ6XG4gICAqICAgKEludm9rZVZpcnR1YWwpXG4gICAqIE9wZXJhbmQgU3RhY2s6XG4gICAqICAgLi4uLCBIYW5kbGUsIOKGklxuICAgKiAgIC4uLlxuICAgKi9cbiAgSW52b2tlVmlydHVhbCxcblxuICAvKipcbiAgICogT3BlcmF0aW9uOiBFdmFsdWF0ZSB0aGUgaGFuZGxlLlxuICAgKiBGb3JtYXQ6XG4gICAqICAgKEludm9rZVN0YXRpYyBoYW5kbGU6dTMyKVxuICAgKiBPcGVyYW5kIFN0YWNrOlxuICAgKiAgIC4uLiDihpJcbiAgICogICAuLi5cbiAgICovXG4gIEludm9rZVN0YXRpYyxcblxuICAvKipcbiAgICogT3BlcmF0aW9uOiBZaWVsZCB0byBhIGJsb2NrLlxuICAgKiBGb3JtYXQ6XG4gICAqICAgKEludm9rZVlpZWxkKVxuICAgKiBPcGVyYW5kIFN0YWNrOlxuICAgKiAgIC4uLiwgW1ZlcnNpb25lZFBhdGhSZWZlcmVuY2UgLi4uXSwgQXJndW1lbnRzLCBTeW1ib2xUYWJsZSwgSGFuZGxlIOKGklxuICAgKiAgIC4uLlxuICAgKi9cbiAgSW52b2tlWWllbGQsXG5cbiAgLyoqXG4gICAqIE9wZXJhdGlvbjogSnVtcCB0byB0aGUgc3BlY2lmaWVkIG9mZnNldC5cbiAgICpcbiAgICogRm9ybWF0OlxuICAgKiAgIChKdW1wIHRvOnUzMilcbiAgICogT3BlcmFuZCBTdGFjazpcbiAgICogICAuLi4g4oaSXG4gICAqICAgLi4uXG4gICAqL1xuICBKdW1wLFxuXG4gIC8qKlxuICAgKiBPcGVyYXRpb246XG4gICAqICAgSnVtcCB0byB0aGUgc3BlY2lmaWVkIG9mZnNldCBpZiB0aGUgdmFsdWUgYXRcbiAgICogICB0aGUgdG9wIG9mIHRoZSBzdGFjayBpcyB0cnVlLlxuICAgKlxuICAgKiBGb3JtYXQ6XG4gICAqICAgKEp1bXBJZiB0bzp1MzIpXG4gICAqIE9wZXJhbmQgU3RhY2s6XG4gICAqICAgLi4uLCBWZXJzaW9uZWRQYXRoUmVmZXJlbmNlIOKGklxuICAgKiAgIC4uLlxuICAgKi9cbiAgSnVtcElmLFxuXG4gIC8qKlxuICAgKiBPcGVyYXRpb246XG4gICAqICAgSnVtcCB0byB0aGUgc3BlY2lmaWVkIG9mZnNldCBpZiB0aGUgdmFsdWUgYXRcbiAgICogICB0aGUgdG9wIG9mIHRoZSBzdGFjayBpcyBmYWxzZS5cbiAgICpcbiAgICogRm9ybWF0OlxuICAgKiAgIChKdW1wVW5sZXNzIHRvOnUzMilcbiAgICogT3BlcmFuZCBTdGFjazpcbiAgICogICAuLi4sIFZlcnNpb25lZFBhdGhSZWZlcmVuY2Ug4oaSXG4gICAqICAgLi4uXG4gICAqL1xuICBKdW1wVW5sZXNzLFxuXG4gIC8qKlxuICAgKiBPcGVyYXRpb246XG4gICAqICAgSnVtcCB0byB0aGUgc3BlY2lmaWVkIG9mZnNldCBpZiB0aGUgdmFsdWUgYXRcbiAgICogICB0aGUgdG9wIG9mIHRoZSBzdGFjayBpcyB0aGUgc2FtZSBhcyB0aGVcbiAgICogICBjb21wYXJpc29uLlxuICAgKlxuICAgKiBGb3JtYXQ6XG4gICAqICAgKEp1bXBFcSB0bzppMzIgY29tcGFyaXNvbjppMzIpXG4gICAqIE9wZXJhbmQgU3RhY2s6XG4gICAqICAgLi4uLCB1MzIg4oaSXG4gICAqICAgLi4uLCB1MzJcbiAgICovXG4gIEp1bXBFcSxcblxuICAvKipcbiAgICogT3BlcmF0aW9uOlxuICAgKiAgIFZhbGlkYXRlIHRoYXQgdGhlIHZhbHVlIGF0IHRoZSB0b3Agb2YgdGhlIHN0YWNrXG4gICAqICAgaGFzbid0IGNoYW5nZWQuXG4gICAqXG4gICAqIEZvcm1hdDpcbiAgICogICAoQXNzZXJ0U2FtZSlcbiAgICogT3BlcmFuZCBTdGFjazpcbiAgICogICAuLi4sIFZlcnNpb25lZFBhdGhSZWZlcmVuY2U8dTMyPiDihpJcbiAgICogICAuLi4sIFZlcnNpb25lZFBhdGhSZWZlcmVuY2U8dTMyPlxuICAgKi9cbiAgQXNzZXJ0U2FtZSxcblxuICAvKipcbiAgICogT3BlcmF0aW9uOiBQdXNoIGEgc3RhY2sgZnJhbWVcbiAgICpcbiAgICogRm9ybWF0OlxuICAgKiAgIChQdXNoRnJhbWUpXG4gICAqIE9wZXJhbmQgU3RhY2s6XG4gICAqICAgLi4uIOKGklxuICAgKiAgICRyYSwgJGZwXG4gICAqL1xuICBQdXNoRnJhbWUsXG5cbiAgLyoqXG4gICAqIE9wZXJhdGlvbjogUG9wIGEgc3RhY2sgZnJhbWVcbiAgICpcbiAgICogRm9ybWF0OlxuICAgKiAgIChQdXNoRnJhbWUpXG4gICAqIE9wZXJhbmQgU3RhY2s6XG4gICAqICAgJHJhLCAkZnAg4oaSXG4gICAqICAgLi4uXG4gICAqL1xuICBQb3BGcmFtZSxcblxuICAvKipcbiAgICogT3BlcmF0aW9uOiBQdXNoIGEgc21hbGwgc3RhY2sgZnJhbWVcbiAgICpcbiAgICogRm9ybWF0OlxuICAgKiAgIChQdXNoU21hbGxGcmFtZSlcbiAgICogT3BlcmFuZCBTdGFjazpcbiAgICogICAuLi4g4oaSXG4gICAqICAgJGZwXG4gICAqL1xuICBQdXNoU21hbGxGcmFtZSxcblxuICAvKipcbiAgICogT3BlcmF0aW9uOiBQb3AgYSBzdGFjayBmcmFtZVxuICAgKlxuICAgKiBGb3JtYXQ6XG4gICAqICAgKFBvcFNtYWxsRnJhbWUpXG4gICAqIE9wZXJhbmQgU3RhY2s6XG4gICAqICAgJGZwIOKGklxuICAgKiAgIC4uLlxuICAgKi9cbiAgUG9wU21hbGxGcmFtZSxcblxuICAvKipcbiAgICogT3BlcmF0aW9uOlxuICAgKiAgIFN0YXJ0IHRyYWNraW5nIGEgbmV3IG91dHB1dCBibG9jayB0aGF0IGNvdWxkIGNoYW5nZVxuICAgKiAgIGlmIG9uZSBvZiBpdHMgaW5wdXRzIGNoYW5nZXMuXG4gICAqXG4gICAqIEZvcm1hdDpcbiAgICogICAoRW50ZXIgYXJnczp1MzIpXG4gICAqIE9wZXJhbmQgU3RhY2s6XG4gICAqICAgLi4uIOKGklxuICAgKiAgIC4uLlxuICAgKiBEZXNjcmlwdGlvbjpcbiAgICogICBTb29uIGFmdGVyIHRoaXMgb3Bjb2RlLCBvbmUgb2YgSnVtcCwgSnVtcElmLFxuICAgKiAgIEp1bXBVbmxlc3MsIG9yIEp1bXBFcSB3aWxsIHByb2R1Y2UgYW4gdXBkYXRpbmdcbiAgICogICBhc3NlcnRpb24uIElmIHRoYXQgYXNzZXJ0aW9uIGZhaWxzLCB0aGUgYXBwZW5kaW5nXG4gICAqICAgVk0gd2lsbCBiZSByZS1lbnRlcmVkLCBhbmQgdGhlIGluc3RydWN0aW9ucyBmcm9tIGBmcm9tYFxuICAgKiAgIHRvIGB0b2Agd2lsbCBiZSBleGVjdXRlZC5cbiAgICpcbiAgICogICBUT0RPOiBTYXZlIGFuZCByZXN0b3JlLlxuICAgKi9cbiAgRW50ZXIsXG5cbiAgLyoqXG4gICAqIE9wZXJhdGlvbjpcbiAgICogICBGaW5pc2ggdHJhY2tpbmcgdGhlIGN1cnJlbnQgYmxvY2suXG4gICAqXG4gICAqIEZvcm1hdDpcbiAgICogICAoRXhpdClcbiAgICogT3BlcmFuZCBTdGFjazpcbiAgICogICAuLi4g4oaSXG4gICAqICAgLi4uXG4gICAqIERlc2NyaXB0aW9uOlxuICAgKiAgIFRoaXMgZmluYWxpemVzIHRoZSB2YWxpZGF0b3JzIHRoYXQgdGhlIHVwZGF0aW5nXG4gICAqICAgYmxvY2sgbXVzdCBjaGVjayB0byBkZXRlcm1pbmUgd2hldGhlciBpdCdzIHNhZmUgdG9cbiAgICogICBza2lwIHJ1bm5pbmcgdGhlIGNvbnRlbnRzLlxuICAgKi9cbiAgRXhpdCxcblxuICAvKipcbiAgICogT3BlcmF0aW9uOiBDb252ZXJ0IHRoZSB0b3Agb2YgdGhlIHN0YWNrIGludG8gYSBib29sZWFuIHJlZmVyZW5jZS5cbiAgICpcbiAgICogRm9ybWF0OlxuICAgKiAgIChUb0Jvb2xlYW4pXG4gICAqIE9wZXJhbmQgU3RhY2s6XG4gICAqICAgLi4uLCBWZXJzaW9uZWRQYXRoUmVmZXJlbmNlPE9wYXF1ZT4g4oaSXG4gICAqICAgLi4uLCBWZXJzaW9uZWRQYXRoUmVmZXJlbmNlPGJvb2w+XG4gICAqL1xuICBUb0Jvb2xlYW4sXG5cbiAgLy8vIExJU1RTXG5cbiAgLyoqXG4gICAqIE9wZXJhdGlvbjogRW50ZXIgYSBsaXN0LlxuICAgKlxuICAgKiBGb3JtYXQ6XG4gICAqICAgKEVudGVyTGlzdCBhZGRyZXNzOnUzMilcbiAgICogT3BlcmFuZCBTdGFjazpcbiAgICogICAuLi4sIEl0ZXJhdG9yIOKGklxuICAgKiAgIC4uLlxuICAgKi9cbiAgRW50ZXJMaXN0LFxuXG4gIC8qKlxuICAgKiBPcGVyYXRpb246IEV4aXQgdGhlIGN1cnJlbnQgbGlzdC5cbiAgICpcbiAgICogRm9ybWF0OlxuICAgKiAgIChFeGl0TGlzdClcbiAgICogT3BlcmFuZCBTdGFjazpcbiAgICogICAuLi4g4oaSXG4gICAqICAgLi4uXG4gICAqL1xuICBFeGl0TGlzdCxcblxuICAvKipcbiAgICogT3BlcmF0aW9uOlxuICAgKiAgIENvbnZlcnQgYW4gb3BlcmFuZCBhbmQga2V5IGludG8gYW4gaXRlcmF0b3IgYW5kXG4gICAqICAgcHJlc2VuY2UgcmVmZXJlbmNlLlxuICAgKlxuICAgKiBGb3JtYXQ6XG4gICAqICAgKFB1dEl0ZXJhdG9yKVxuICAgKiBPcGVyYW5kIFN0YWNrOlxuICAgKiAgIC4uLiwga2V5OnN0cmluZywgbGlzdDpWZXJzaW9uZWRQYXRoUmVmZXJlbmNlIOKGklxuICAgKiAgIC4uLiwgaXRlcmF0b3I6UmVmZXJlbmNlSXRlcmF0b3IsIHByZXNlbnQ6UHJlc2VuY2VSZWZlcmVuY2VcbiAgICovXG4gIFB1dEl0ZXJhdG9yLFxuXG4gIC8qKlxuICAgKiBPcGVyYXRpb246XG4gICAqICAgU2V0IHVwIHRoZSBzdGFjayBmb3IgaXRlcmF0aW5nIGZvciBhIGdpdmVuIGtleSxcbiAgICogICBvciBqdW1wIHRvIGBlbmRgIGlmIHRoZXJlIGlzIG5vdGhpbmcgbGVmdCB0b1xuICAgKiAgIGl0ZXJhdGUuXG4gICAqXG4gICAqIEZvcm1hdDpcbiAgICogICAoSXRlcmF0ZSBlbmQ6dTMyKVxuICAgKiBPcGVyYW5kIFN0YWNrOlxuICAgKiAgIEZvcm0gMTogKHNvbWV0aGluZyB0byBpdGVyYXRlKVxuICAgKiAgIC4uLiDihpJcbiAgICogICAuLi4sIFZlcnNpb25lZFBhdGhSZWZlcmVuY2UsIFZlcnNpb25lZFBhdGhSZWZlcmVuY2UsIHN0cmluZ1xuICAgKiAgIEZvcm0gMjogKG5vdGhpbmcgbGVmdCB0byBpdGVyYXRlKVxuICAgKiAgIC4uLiDihpJcbiAgICogICAuLi5cbiAgICogRGVzY3JpcHRpb246XG4gICAqICAgSW4gRm9ybSAxLCB0aGUgc3RhY2sgd2lsbCBoYXZlIChpbiByZXZlcnNlIG9yZGVyKTpcbiAgICpcbiAgICogICAtIHRoZSBrZXksIGFzIGEgc3RyaW5nXG4gICAqICAgLSB0aGUgY3VycmVudCBpdGVyYXRlZCB2YWx1ZVxuICAgKiAgIC0gdGhlIG1lbW9pemVkIGl0ZXJhdGVkIHZhbHVlXG4gICAqL1xuICBJdGVyYXRlLFxuXG4gIC8vLyBDT01QT05FTlRTXG5cbiAgLyoqXG4gICAqIE9wZXJhdGlvbjogVGVzdCB3aGV0aGVyIGEgcmVmZXJlbmNlIGNvbnRhaW5zIGEgY29tcG9uZW50IGRlZmluaXRpb24uXG4gICAqXG4gICAqIEZvcm1hdDpcbiAgICogICAoTWFpbiBzdGF0ZTpyZWdpc3RlcilcbiAgICogT3BlcmFuZCBTdGFjazpcbiAgICogICAuLi4sIEludm9jYXRpb24sIENvbXBvbmVudERlZmluaXRpb24g4oaSXG4gICAqICAgLi4uXG4gICAqL1xuICBNYWluLFxuXG4gIC8qKlxuICAgKiBPcGVyYXRpb246IFRlc3Qgd2hldGhlciBhIHJlZmVyZW5jZSBjb250YWlucyBhIGNvbXBvbmVudCBkZWZpbml0aW9uLlxuICAgKlxuICAgKiBGb3JtYXQ6XG4gICAqICAgKElzQ29tcG9uZW50KVxuICAgKiBPcGVyYW5kIFN0YWNrOlxuICAgKiAgIC4uLiwgVmVyc2lvbmVkUGF0aFJlZmVyZW5jZTxPcGFxdWU+IOKGklxuICAgKiAgIC4uLiwgVmVyc2lvbmVkUGF0aFJlZmVyZW5jZTxib29sZWFuPlxuICAgKi9cbiAgSXNDb21wb25lbnQsXG5cbiAgLyoqXG4gICAqIE9wZXJhdGlvbjogUHVzaCB0aGUgY29udGVudCB0eXBlIG9udG8gdGhlIHN0YWNrLlxuICAgKlxuICAgKiBGb3JtYXQ6XG4gICAqICAgKENvbnRlbnRUeXBlKVxuICAgKiBPcGVyYW5kIFN0YWNrOlxuICAgKiAgIC4uLiwgVmVyc2lvbmVkUGF0aFJlZmVyZW5jZTxPcGFxdWU+IOKGklxuICAgKiAgIC4uLiwgVmVyc2lvbmVkUGF0aFJlZmVyZW5jZTxPcGFxdWU+LCBWZXJzaW9uZWRQYXRoUmVmZXJlbmNlPENvbnRlbnRUeXBlPlxuICAgKi9cbiAgQ29udGVudFR5cGUsXG5cbiAgLyoqXG4gICAqIE9wZXJhdGlvbjogQ3VycnkgYSBjb21wb25lbnQgZGVmaW5pdGlvbiBmb3IgYSBsYXRlciBpbnZvY2F0aW9uLlxuICAgKlxuICAgKiBGb3JtYXQ6XG4gICAqICAgKEN1cnJ5Q29tcG9uZW50IHRlbXBsYXRlTWV0YTojTG9jYXRvcilcbiAgICogT3BlcmFuZCBTdGFjazpcbiAgICogICAuLi4sIFZlcnNpb25lZFBhdGhSZWZlcmVuY2UsIFtWZXJzaW9uZWRQYXRoUmVmZXJlbmNlIC4uLl0sIEFyZ3VtZW50cyDihpJcbiAgICogICAuLi4sIHsgVmVyc2lvbmVkUGF0aFJlZmVyZW5jZSwgTG9jYXRvciwgQ2FwdHVyZWRBcmd1bWVudHMgfVxuICAgKi9cbiAgQ3VycnlDb21wb25lbnQsXG5cbiAgLyoqXG4gICAqIE9wZXJhdGlvbjogUHVzaCBhbiBhcHByb3ByaWF0ZSBjb21wb25lbnQgbWFuYWdlciBvbnRvIHRoZSBzdGFjay5cbiAgICpcbiAgICogRm9ybWF0OlxuICAgKiAgIChQdXNoQ29tcG9uZW50TWFuYWdlciAjQ29tcG9uZW50U3BlYylcbiAgICogT3BlcmFuZCBTdGFjazpcbiAgICogICAuLi4g4oaSXG4gICAqICAgLi4uLCB7IENvbXBvbmVudERlZmluaXRpb24sIENvbXBvbmVudE1hbmFnZXIgfVxuICAgKi9cbiAgUHVzaENvbXBvbmVudERlZmluaXRpb24sXG5cbiAgLyoqXG4gICAqIE9wZXJhdGlvbjpcbiAgICogICBQdXNoZXMgdGhlIENvbXBvbmVudEluc3RhbmNlIG9udG8gdGhlIHN0YWNrIHRoYXQgaXNcbiAgICogICB1c2VkIGR1cmluZyB0aGUgaW52b2tlLlxuICAgKlxuICAgKiBGb3JtYXQ6XG4gICAqICAgKFB1c2hEeW5hbWljQ29tcG9uZW50SW5zdGFuY2UpXG4gICAqIE9wZXJhbmQgU3RhY2s6XG4gICAqICAgLi4uLCBDb21wb25lbnREZWZpbml0aW9uIOKGklxuICAgKiAgIC4uLiwgeyBDb21wb25lbnREZWZpbml0aW9uLCBtYW5hZ2VyOiBudWxsLCBsYXlvdXQ6IG51bGwsIHN0YXRlOiBudWxsLCBoYW5kbGU6IG51bGwsIHRhYmxlOiBudWxsIH1cbiAgICovXG5cbiAgUHVzaER5bmFtaWNDb21wb25lbnRJbnN0YW5jZSxcblxuICAvKipcbiAgICogT3BlcmF0aW9uOlxuICAgKiAgIFB1c2hlcyBhIGN1cnJpZWQgY29tcG9uZW50IGRlZmluaXRpb24gb24gdG8gdGhlIHN0YWNrXG4gICAqXG4gICAqIEZvcm1hdDpcbiAgICogICAoUHVzaEN1cnJpZWRDb21wb25lbnQpXG4gICAqIE9wZXJhbmQgU3RhY2s6XG4gICAqICAgLi4uLCBWZXJzaW9uZWRQYXRoUmVmZXJlbmNlPE9wYXF1ZT4g4oaSXG4gICAqICAgLi4uLCBDb21wb25lbnREZWZpbml0aW9uXG4gICAqL1xuICBQdXNoQ3VycmllZENvbXBvbmVudCxcblxuICAvKipcbiAgICogT3BlcmF0aW9uOlxuICAgKiAgIFB1c2ggYSByZXNvbHZlZCBjb21wb25lbnQgZGVmaW5pdGlvbiBvbnRvIHRoZSBzdGFja1xuICAgKlxuICAgKiBGb3JtYXQ6XG4gICAqICAgKFJlc29sdmVEeW5hbWljQ29tcG9uZW50IHRlbXBsYXRlTWV0YTojTG9jYXRvcilcbiAgICogT3BlcmFuZCBTdGFjazpcbiAgICogICAuLi4sIFZlcnNpb25lZFBhdGhSZWZlcmVuY2U8T3BhcXVlPiDihpJcbiAgICogICAuLi4sIENvbXBvbmVudERlZmluaXRpb25cbiAgICovXG4gIFJlc29sdmVEeW5hbWljQ29tcG9uZW50LFxuXG4gIC8qKlxuICAgKiBPcGVyYXRpb246IFB1c2ggYSB1c2VyIHJlcHJlc2VudGF0aW9uIG9mIGFyZ3Mgb250byB0aGUgc3RhY2suXG4gICAqXG4gICAqIEZvcm1hdDpcbiAgICogICAoUHVzaEFyZ3MgbmFtZXM6I0FycmF5PCNzdHJpbmc+IHBvc2l0aW9uYWxDb3VudDp1MzIgc3ludGhldGljOiNib29sZWFuKVxuICAgKlxuICAgKiBPcGVyYW5kIFN0YWNrOlxuICAgKiAgIC4uLiwgW1ZlcnNpb25lZFBhdGhSZWZlcmVuY2UgLi4uXSAg4oaSXG4gICAqICAgLi4uLCBbVmVyc2lvbmVkUGF0aFJlZmVyZW5jZSAuLi5dLCBBcmd1bWVudHNcbiAgICpcbiAgICogRGVzY3JpcHRpb246XG4gICAqICAgVGhpcyBhcmd1bWVudHMgb2JqZWN0IGlzIG9ubHkgbmVjZXNzYXJ5IHdoZW4gY2FsbGluZyBpbnRvXG4gICAqICAgdXNlci1zcGVjaWZpZWQgaG9va3MuIEl0IGlzIG1lYW50IHRvIGJlIGltcGxlbWVudGVkIGFzIGFcbiAgICogICB0cmFuc2llbnQgcHJveHkgdGhhdCByZWFkcyBpbnRvIHRoZSBzdGFjayBhcyBuZWVkZWQuXG4gICAqICAgSG9sZGluZyBvbnRvIHRoZSBBcmd1bWVudHMgYWZ0ZXIgdGhlIGNhbGwgaGFzIGNvbXBsZXRlZCBpc1xuICAgKiAgIGlsbGVnYWwuXG4gICAqL1xuICBQdXNoQXJncyxcblxuICAvKipcbiAgICogT3BlcmF0aW9uOiBQdXNoIGVtcHR5IGFyZ3Mgb250byB0aGUgc3RhY2tcbiAgICpcbiAgICogRm9ybWF0OlxuICAgKiAgIChFbXB0eUFyZ3MpXG4gICAqXG4gICAqIE9wZXJhbmRTdGFjazpcbiAgICogICAuLi4g4oaSXG4gICAqICAgLi4uLCBBcmd1bWVudHNcbiAgICovXG4gIFB1c2hFbXB0eUFyZ3MsXG5cbiAgLyoqXG4gICAqIE9wZXJhdGlvbjogUG9wcyBBcmd1bWVudHMgZnJvbSB0aGUgc3RhY2sgYW5kIGNsZWFycyB0aGUgbmV4dCBOIGFyZ3MuXG4gICAqXG4gICAqIEZvcm1hdDpcbiAgICogICAoUG9wQXJncylcbiAgICpcbiAgICogT3BlcmFuZCBTdGFjazpcbiAgICogICAuLi4sIFtWZXJzaW9uZWRQYXRoUmVmZXJlbmNlIC4uLl0sIEFyZ3VtZW50cyAg4oaSXG4gICAqICAgLi4uXG4gICAqXG4gICAqIERlc2NyaXB0aW9uOlxuICAgKiBUaGUgYXJndW1lbnRzIG9iamVjdCBjb250YWlucyB0aGUgaW5mb3JtYXRpb24gb2YgaG93IG1hbnkgdXNlclxuICAgKiBzdXBwbGllZCBhcmdzIHRoZSBjb21wb25lbnQgd2FzIGludm9rZWQgd2l0aC4gVG8gY2xlYXIgdGhlbSBmcm9tXG4gICAqIHRoZSBzdGFjayB3ZSBtdXN0IHBvcCBpdCBmcm9tIHRoZSBzdGFjayBhbmQgY2FsbCBgY2xlYXJgIG9uIGl0XG4gICAqIHRvIHJlbW92ZSB0aGUgYXJndW1lbnQgdmFsdWVzIGZyb20gdGhlIHN0YWNrLlxuICAgKi9cbiAgUG9wQXJncyxcblxuICAvKipcbiAgICogT3BlcmF0aW9uOiAuLi5cbiAgICogRm9ybWF0OlxuICAgKiAgIChQcmVwYXJlQXJncyBzdGF0ZTpyZWdpc3RlcilcbiAgICogT3BlcmFuZCBTdGFjazpcbiAgICogICAuLi4g4oaSXG4gICAqICAgLi4uXG4gICAqL1xuICBQcmVwYXJlQXJncyxcblxuICAvKipcbiAgICogT3BlcmF0aW9uOiBSZXBsYWNlcyBBcmd1bWVudHMgb24gdGhlIHN0YWNrIHdpdGggQ2FwdHVyZWRBcmd1bWVudHNcbiAgICogRm9ybWF0OlxuICAgKiAgIChDYXB0dXJlQXJncylcbiAgICpcbiAgICogT3BlcmFuZCBTdGFjazpcbiAgICogICAuLi4sIEFyZ3VtZW50cyAg4oaSXG4gICAqICAgLi4uLCBDYXB0dXJlZEFyZ3VtZW50c1xuICAgKlxuICAgKiBEZXNjcmlwdGlvbjpcbiAgICogVGhlIEFyZ3VtZW50cyBvYmplY3QgaXMgbXV0YXRlZCBpbiBwbGFjZSBiZWNhdXNlIGl0IGlzIHVzdWFsbHkgY29uc3VtZWQgaW1tZWRpYXRlbHlcbiAgICogYWZ0ZXIgYmVpbmcgcHVzaGVkIG9uIHRvIHRoZSBzdGFjay4gSW4gc29tZSBzaXR1YXRpb25zLCBzdWNoIGFzIHdpdGggY3VycmllZCBjb21wb25lbnRzLFxuICAgKiBpbmZvcm1hdGlvbiBhYm91dCBtb3JlIHRoYW4gb25lIEFyZ3VtZW50IG1heSBuZWVkIHRvIGV4aXN0IG9uIHRoZSBzdGFjayBhdCBvbmNlLiBJbiB0aG9zZVxuICAgKiBjYXNlcywgdGhlIENhcHR1cmVBcmdzIGluc3RydWN0aW9uIHBvcHMgYW4gQXJndW1lbnRzIG9iamVjdCBvZmYgdGhlIHN0YWNrIGFuZCByZXBsYWNlcyBpdFxuICAgKiB3aXRoIHRoZSBpbW11dGFibGUgQ2FwdHVyZWRBcmdzIHNuYXBzaG90LlxuICAgKi9cbiAgQ2FwdHVyZUFyZ3MsXG5cbiAgLyoqXG4gICAqIE9wZXJhdGlvbjogQ3JlYXRlIHRoZSBjb21wb25lbnQgYW5kIHB1c2ggaXQgb250byB0aGUgc3RhY2suXG4gICAqIEZvcm1hdDpcbiAgICogICAoQ3JlYXRlQ29tcG9uZW50IGZsYWdzOnUzMiBzdGF0ZTpyZWdpc3RlcilcbiAgICogICAuLi4g4oaSXG4gICAqICAgLi4uXG4gICAqIERlc2NyaXB0aW9uOlxuICAgKiBPcGVyYW5kIFN0YWNrOlxuICAgKiAgIEZsYWdzOlxuICAgKlxuICAgKiAgICogMGIwMDE6IEhhcyBhIGRlZmF1bHQgYmxvY2tcbiAgICogICAqIDBiMDEwOiBIYXMgYW4gaW52ZXJzZSBibG9ja1xuICAgKi9cbiAgQ3JlYXRlQ29tcG9uZW50LFxuXG4gIC8qKlxuICAgKiBPcGVyYXRpb246IFJlZ2lzdGVyIGEgZGVzdHJ1Y3RvciBmb3IgdGhlIGN1cnJlbnQgY29tcG9uZW50XG4gICAqXG4gICAqIEZvcm1hdDpcbiAgICogICAoUmVnaXN0ZXJDb21wb25lbnREZXN0cnVjdG9yIHN0YXRlOnJlZ2lzdGVyKVxuICAgKiBPcGVyYW5kIFN0YWNrOlxuICAgKiAgIC4uLiDihpJcbiAgICogICAuLi5cbiAgICovXG4gIFJlZ2lzdGVyQ29tcG9uZW50RGVzdHJ1Y3RvcixcblxuICAvKipcbiAgICogT3BlcmF0aW9uOiBQdXNoIGEgbmV3IEVsZW1lbnRPcGVyYXRpb25zIGZvciB0aGUgY3VycmVudCBjb21wb25lbnQuXG4gICAqXG4gICAqIEZvcm1hdDpcbiAgICogICAoUHV0Q29tcG9uZW50T3BlcmF0aW9ucylcbiAgICogT3BlcmFuZCBTdGFjazpcbiAgICogICAuLi4g4oaSXG4gICAqICAgLi4uXG4gICAqL1xuICBQdXRDb21wb25lbnRPcGVyYXRpb25zLFxuXG4gIC8qKlxuICAgKiBPcGVyYXRpb246IFB1c2ggdGhlIGNvbXBvbmVudCdzIGBzZWxmYCBvbnRvIHRoZSBzdGFjay5cbiAgICpcbiAgICogRm9ybWF0OlxuICAgKiAgIChHZXRDb21wb25lbnRTZWxmIHN0YXRlOnJlZ2lzdGVyKVxuICAgKiBPcGVyYW5kIFN0YWNrOlxuICAgKiAgIC4uLiDihpJcbiAgICogICAuLi4sIFZlcnNpb25lZFBhdGhSZWZlcmVuY2VcbiAgICovXG4gIEdldENvbXBvbmVudFNlbGYsXG5cbiAgLyoqXG4gICAqIE9wZXJhdGlvbjogUHVzaCB0aGUgY29tcG9uZW50J3MgYHRhZ05hbWVgIG9udG8gdGhlIHN0YWNrLlxuICAgKlxuICAgKiBGb3JtYXQ6XG4gICAqICAgKEdldENvbXBvbmVudFRhZ05hbWUgc3RhdGU6cmVnaXN0ZXIpXG4gICAqIE9wZXJhbmQgU3RhY2s6XG4gICAqICAgLi4uIOKGklxuICAgKiAgIC4uLiwgT3B0aW9uPHN0cmluZz5cbiAgICovXG4gIEdldENvbXBvbmVudFRhZ05hbWUsXG5cbiAgLyoqXG4gICAqIE9wZXJhdGlvbjogR2V0IHRoZSBjb21wb25lbnQgbGF5b3V0IGZyb20gdGhlIG1hbmFnZXIuXG4gICAqXG4gICAqIEZvcm1hdDpcbiAgICogICAoR2V0Q29tcG9uZW50TGF5b3V0IHN0YXRlOnJlZ2lzdGVyKVxuICAgKiBPcGVyYW5kIFN0YWNrOlxuICAgKiAgIC4uLiDihpJcbiAgICogICAuLi4sIFByb2dyYW1TeW1ib2xUYWJsZSwgSGFuZGxlXG4gICAqL1xuICBHZXRDb21wb25lbnRMYXlvdXQsXG5cbiAgLyoqXG4gICAqIE9wZXJhdGlvbjogUG9wdWxhdGUgdGhlIGV2YWwgbG9va3VwIGlmIG5lY2Vzc2FyeS5cbiAgICpcbiAgICogRm9ybWF0OlxuICAgKiAgIChTZXR1cEZvckV2YWwgc3RhdGU6cmVnaXN0ZXIpXG4gICAqIE9wZXJhbmQgU3RhY2s6XG4gICAqICAgLi4uIOKGklxuICAgKiAgIC4uLlxuICAgKi9cbiAgU2V0dXBGb3JFdmFsLFxuXG4gIC8qKlxuICAgKiBPcGVyYXRpb246IFBvcHVsYXRlIHRoZSBldmFsIGxvb2t1cCBpZiBuZWNlc3NhcnkuXG4gICAqXG4gICAqIEZvcm1hdDpcbiAgICogICAoU2V0dXBGb3JFdmFsIHN0YXRlOnJlZ2lzdGVyKVxuICAgKiBPcGVyYW5kIFN0YWNrOlxuICAgKiAgIC4uLiDihpJcbiAgICogICAuLi5cbiAgICovXG4gIEJpbmRFdmFsU2NvcGUsXG5cbiAgLyoqXG4gICAqIE9wZXJhdGlvbjpcbiAgICogICBQb3B1bGF0ZSB0aGUgc3RhdGUgcmVnaXN0ZXIgd2l0aCB0aGUgbGF5b3V0IGN1cnJlbnRseVxuICAgKiAgIG9uIHRoZSBzdGFjay5cbiAgICpcbiAgICogRm9ybWF0OlxuICAgKiAgIChQb3B1bGF0ZUxheW91dCBzdGF0ZTpyZWdpc3RlcilcbiAgICogT3BlcmFuZCBTdGFjazpcbiAgICogICAuLi4sIFByb2dyYW1TeW1ib2xUYWJsZSwgSGFuZGxlIOKGklxuICAgKiAgIC4uLlxuICAgKi9cbiAgUG9wdWxhdGVMYXlvdXQsXG5cbiAgLyoqXG4gICAqIE9wZXJhdGlvbjogSW52b2tlIHRoZSBsYXlvdXQgcmV0dXJuZWQgYnkgdGhlIG1hbmFnZXIuXG4gICAqXG4gICAqIEZvcm1hdDpcbiAgICogICAoSW52b2tlQ29tcG9uZW50TGF5b3V0IHN0YXRlOnJlZ2lzdGVyKVxuICAgKiBPcGVyYW5kIFN0YWNrOlxuICAgKiAgIC4uLiDihpJcbiAgICogICAuLi5cbiAgICovXG4gIEludm9rZUNvbXBvbmVudExheW91dCxcblxuICAvKipcbiAgICogT3BlcmF0aW9uOiBCZWdpbiBhIG5ldyBjYWNoZSBncm91cFxuICAgKlxuICAgKiBGb3JtYXQ6XG4gICAqICAgKEJlZ2luQ29tcG9uZW50VHJhbnNhY3Rpb24pXG4gICAqIE9wZXJhbmQgU3RhY2s6XG4gICAqICAgLi4uLCBDb21wb25lbnRNYW5hZ2VyPFQ+LCBUIOKGklxuICAgKiAgIC4uLiwgQ29tcG9uZW50TWFuYWdlcjxUPiwgVFxuICAgKi9cbiAgQmVnaW5Db21wb25lbnRUcmFuc2FjdGlvbixcblxuICAvKipcbiAgICogT3BlcmF0aW9uOiBDb21taXQgdGhlIGN1cnJlbnQgY2FjaGUgZ3JvdXBcbiAgICpcbiAgICogRm9ybWF0OlxuICAgKiAgIChDb21taXRDb21wb25lbnRUcmFuc2FjdGlvbilcbiAgICogT3BlcmFuZCBTdGFjazpcbiAgICogICAuLi4g4oaSXG4gICAqICAgLi4uXG4gICAqL1xuICBDb21taXRDb21wb25lbnRUcmFuc2FjdGlvbixcblxuICAvKipcbiAgICogT3BlcmF0aW9uOiBJbnZva2UgZGlkQ3JlYXRlRWxlbWVudCBvbiB0aGUgY3VycmVudCBjb21wb25lbnQgbWFuYWdlclxuICAgKlxuICAgKiBGb3JtYXQ6XG4gICAqICAgKERpZENyZWF0ZUVsZW1lbnQgc3RhdGU6cmVnaXN0ZXIpXG4gICAqIE9wZXJhbmQgU3RhY2s6XG4gICAqICAgLi4uIOKGklxuICAgKiAgIC4uLlxuICAgKi9cbiAgRGlkQ3JlYXRlRWxlbWVudCxcblxuICAvKipcbiAgICogT3BlcmF0aW9uOiBJbnZva2UgZGlkUmVuZGVyTGF5b3V0IG9uIHRoZSBjdXJyZW50IGNvbXBvbmVudCBtYW5hZ2VyXG4gICAqXG4gICAqIEZvcm1hdDpcbiAgICogICAoRGlkUmVuZGVyTGF5b3V0IHN0YXRlOnJlZ2lzdGVyKVxuICAgKiBPcGVyYW5kIFN0YWNrOlxuICAgKiAgIC4uLiwg4oaSXG4gICAqICAgLi4uXG4gICAqL1xuICBEaWRSZW5kZXJMYXlvdXQsXG5cbiAgLy8vIFBBUlRJQUxTXG5cbiAgLyoqXG4gICAqIE9wZXJhdGlvbjogTG9va3VwIGFuZCBpbnZva2UgYSBwYXJ0aWFsIHRlbXBsYXRlLlxuICAgKlxuICAgKiBGb3JtYXQ6XG4gICAqICAgKEludm9rZVBhcnRpYWwgdGVtcGxhdGVNZXRhOiNMb2NhdG9yIHN5bWJvbHM6I0FycmF5PCNzdHJpbmc+IGV2YWxJbmZvOiNBcnJheTxudW1iZXI+KVxuICAgKiBPcGVyYW5kIFN0YWNrOlxuICAgKiAgIC4uLiwgVmVyc2lvbmVkUGF0aFJlZmVyZW5jZTxzdHJpbmc+IOKGklxuICAgKiAgIC4uLlxuICAgKi9cbiAgSW52b2tlUGFydGlhbCxcblxuICAvKipcbiAgICogT3BlcmF0aW9uOlxuICAgKiAgIFJlc29sdmUge3tmb299fSBpbnNpZGUgYSBwYXJ0aWFsLCB3aGljaCBjb3VsZCBiZSBlaXRoZXIgYSBzZWxmLWxvb2t1cFxuICAgKiAgIG9yIGEgbG9jYWwgdmFyaWFibGUgdGhhdCBpcyBpbi1zY29wZSBmb3IgdGhlIGNhbGxlci5cbiAgICpcbiAgICogRm9ybWF0OlxuICAgKiAgIChSZXNvbHZlTWF5YmVMb2NhbCBsb2NhbDojc3RyaW5nKVxuICAgKiBPcGVyYW5kIFN0YWNrOlxuICAgKiAgIC4uLiDihpJcbiAgICogICAuLi4sIFZlcnNpb25lZFBhdGhSZWZlcmVuY2VcbiAgICovXG4gIFJlc29sdmVNYXliZUxvY2FsLFxuXG4gIC8vLyBERUJVR0dFUlxuXG4gIC8qKlxuICAgKiBPcGVyYXRpb246IEFjdGl2YXRlIHRoZSBkZWJ1Z2dlclxuICAgKlxuICAgKiBGb3JtYXQ6XG4gICAqICAgKERlYnVnZ2VyIHN5bWJvbHM6I0FycmF5PHN0cmluZz4gZXZhbEluZm86I0FycmF5PG51bWJlcj4pXG4gICAqIE9wZXJhbmQgU3RhY2s6XG4gICAqICAgLi4uIOKGklxuICAgKiAgIC4uLlxuICAgKi9cbiAgRGVidWdnZXIsXG5cbiAgLyoqIFRoZSBzaXplIG9mIHRoZSBvcGNvZGUgbGlzdCAqL1xuICBTaXplLFxufVxuIl19
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3Bjb2Rlcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3BhY2thZ2VzL0BnbGltbWVyL3ZtL2xpYi9vcGNvZGVzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgY29uc3QgZW51bSBPcCB7XG4gIC8qXG4gICAgRG9jdW1lbnRhdGlvbiBUT0RPOlxuXG4gICAgRG9jdW1lbnQgdGhlIGxvY2FsIHZhcmlhYmxlIGxheW91dCBpbiB0aGUgc3RhY2tcbiAgICBkaWFncmFtIGJlZm9yZS1hbmQtYWZ0ZXIuXG5cbiAgICBEb2N1bWVudCB1cGRhdGluZyBvcGNvZGVzIGVtaXR0aW5nIGZyb20gdW5yZWFjaGFibGVcbiAgICBhcHBlbmQgb3Bjb2RlLlxuXG4gICAgRG9jdW1lbnQgdGhlIGVsZW1lbnQgc3RhY2ssIGJsb2NrIHN0YWNrIGFuZCBMaXN0XG4gICAgYmxvY2sgc3RhY2suXG4gICAqL1xuXG4gIC8qKlxuICAgKiBUaGlzIG9wY29kZSBzaG91bGQgbmV2ZXIgYmUgcmVhY2hlZC5cbiAgICovXG4gIEJ1ZyxcblxuICAvLy8gRVhQUkVTU0lPTlNcblxuICAvKipcbiAgICogT3BlcmF0aW9uOiBFdmFsdWF0ZSBhIEhlbHBlci5cbiAgICogRm9ybWF0OlxuICAgKiAgIChIZWxwZXIgaGVscGVyOiNGdW5jdGlvbilcbiAgICogT3BlcmFuZCBTdGFjazpcbiAgICogICAuLi4sIFtWZXJzaW9uZWRQYXRoUmVmZXJlbmNlIC4uLl0sIEFyZ3VtZW50cyDihpJcbiAgICogICAuLi4sIFZlcnNpb25lZFBhdGhSZWZlcmVuY2VcbiAgICovXG4gIEhlbHBlcixcblxuICAvKipcbiAgICogT3BlcmF0aW9uOlxuICAgKiAgIEJpbmQgdGhlIG5hbWVkIGFyZ3VtZW50cyBpbiB0aGUgQXJndW1lbnRzIHRvIHRoZSBzeW1ib2xzXG4gICAqICAgc3BlY2lmaWVkIGJ5IHRoZSBzeW1ib2wgdGFibGUgaW4gdGhlIGNvbXBvbmVudCBzdGF0ZSBhdCByZWdpc3Rlci5cbiAgICogRm9ybWF0OlxuICAgKiAgIChTZXROYW1lZFZhcmlhYmxlcyByZWdpc3Rlcjp1MzIpXG4gICAqIE9wZXJhbmQgU3RhY2s6XG4gICAqICAgLi4uLCBBcmd1bWVudHMg4oaSXG4gICAqICAgLi4uXG4gICAqL1xuICBTZXROYW1lZFZhcmlhYmxlcyxcblxuICAvKipcbiAgICogT3BlcmF0aW9uOlxuICAgKiAgIEJpbmQgdGhlIGJsb2NrcyBpbiB0aGUgQXJndW1lbnRzIHRvIHRoZSBzeW1ib2xzIHNwZWNpZmllZCBieSB0aGVcbiAgICogICBzeW1ib2wgdGFibGUgaW4gdGhlIGNvbXBvbmVudCBzdGF0ZSBhdCByZWdpc3Rlci5cbiAgICogRm9ybWF0OlxuICAgKiAgIChTZXRCbG9ja3MgcmVnaXN0ZXI6dTMyKVxuICAgKiBPcGVyYW5kIFN0YWNrOlxuICAgKiAgIC4uLiwgQXJndW1lbnRzIOKGklxuICAgKiAgIC4uLlxuICAgKi9cbiAgU2V0QmxvY2tzLFxuXG4gIC8qKlxuICAgKiBPcGVyYXRpb246XG4gICAqICAgQmluZCB0aGUgdmFyaWFibGUgcmVwcmVzZW50ZWQgYnkgYSBzeW1ib2wgZnJvbVxuICAgKiAgIHRoZSB2YWx1ZSBhdCB0aGUgdG9wIG9mIHRoZSBzdGFjay5cbiAgICogRm9ybWF0OlxuICAgKiAgIChTZXRWYXJpYWJsZSBzeW1ib2w6dTMyKVxuICAgKiBPcGVyYW5kIFN0YWNrOlxuICAgKiAgIC4uLiwgVmVyc2lvbmVkUGF0aFJlZmVyZW5jZSDihpJcbiAgICogICAuLi5cbiAgICovXG4gIFNldFZhcmlhYmxlLFxuXG4gIC8qKlxuICAgKiBPcGVyYXRpb246XG4gICAqICAgQmluZCB0aGUgYmxvY2sgYXQgdGhlIHRvcCBvZiB0aGUgc3RhY2suXG4gICAqIEZvcm1hdDpcbiAgICogICAoU2V0QmxvY2sgc3ltYm9sOnUzMilcbiAgICogT3BlcmFuZCBTdGFjazpcbiAgICogICAuLi4sIFN5bWJvbFRhYmxlLCBIYW5kbGUg4oaSXG4gICAqICAgLi4uXG4gICAqL1xuICBTZXRCbG9jayxcblxuICAvKipcbiAgICogT3BlcmF0aW9uOlxuICAgKiAgIFB1c2ggdGhlIGNvbnRlbnRzIG9mIHRoZSB2YXJpYWJsZSByZXByZXNlbnRlZCBieVxuICAgKiAgIGEgc3ltYm9sIChhIHBvc2l0aW9uYWwgb3IgbmFtZWQgYXJndW1lbnQpIG9udG9cbiAgICogICB0aGUgc3RhY2suXG4gICAqIEZvcm1hdDpcbiAgICogICAoUHVzaFN5bWJvbCBzeW1ib2w6dTMyKVxuICAgKiBPcGVyYW5kIFN0YWNrOlxuICAgKiAgIC4uLiDihpJcbiAgICogICAuLi4sIFZlcnNpb25lZFBhdGhSZWZlcmVuY2VcbiAgICovXG4gIEdldFZhcmlhYmxlLFxuXG4gIC8qKlxuICAgKiBPcGVyYXRpb246XG4gICAqICAgUG9wIGEgVmVyc2lvbmVkUGF0aFJlZmVyZW5jZSBmcm9tIHRoZSB0b3Agb2YgdGhlXG4gICAqICAgc3RhY2ssIGFuZCBwdXNoIGEgVmVyc2lvbmVkUGF0aFJlZmVyZW5jZSBjb25zdHJ1Y3RlZFxuICAgKiAgIGJ5IGAuZ2V0KHByb3BlcnR5KWAuXG4gICAqIEZvcm1hdDpcbiAgICogICAoR2V0UHJvcGVydHkgcHJvcGVydHk6I3N0cmluZylcbiAgICogT3BlcmFuZCBTdGFjazpcbiAgICogICAuLi4sIFZlcnNpb25lZFBhdGhSZWZlcmVuY2Ug4oaSXG4gICAqICAgLi4uLCBWZXJzaW9uZWRQYXRoUmVmZXJlbmNlXG4gICAqL1xuICBHZXRQcm9wZXJ0eSxcblxuICAvKipcbiAgICogT3BlcmF0aW9uOiBQdXNoIHRoZSBzcGVjaWZpZWQgYm91bmQgYmxvY2sgb250byB0aGUgc3RhY2suXG4gICAqIEZvcm1hdDpcbiAgICogICAoR2V0QmxvY2sgYmxvY2s6dTMyKVxuICAgKiBPcGVyYW5kIFN0YWNrOlxuICAgKiAgIC4uLiDihpJcbiAgICogICAuLi4sIElubGluZUJsb2NrXG4gICAqL1xuICBHZXRCbG9jayxcblxuICAvKipcbiAgICogT3BlcmF0aW9uOlxuICAgKiAgIFB1c2ggVFJVRSBvbnRvIHRoZSBzdGFjayBpZiB0aGUgc3BlY2lmaWVkIGJsb2NrXG4gICAqICAgaXMgYm91bmQgYW5kIEZBTFNFIGlmIGl0IGlzIG5vdC5cbiAgICogRm9ybWF0OlxuICAgKiAgIChIYXNCbG9jayBibG9jazp1MzIpXG4gICAqIE9wZXJhbmQgU3RhY2s6XG4gICAqICAgLi4uIOKGklxuICAgKiAgIC4uLiwgYm9vbGVhblxuICAgKi9cbiAgSGFzQmxvY2ssXG5cbiAgLyoqXG4gICAqIE9wZXJhdGlvbjpcbiAgICogICBQdXNoIFRSVUUgb250byB0aGUgc3RhY2sgaWYgdGhlIHNwZWNpZmllZCBibG9ja1xuICAgKiAgIGlzIGJvdW5kICphbmQqIGhhcyBhdCBsZWFzdCBvbmUgc3BlY2lmaWVkIGZvcm1hbFxuICAgKiAgIHBhcmFtZXRlciwgYW5kIEZBTFNFIG90aGVyd2lzZS5cbiAgICogRm9ybWF0OlxuICAgKiAgIChIYXNCbG9ja1BhcmFtcyBibG9jazp1MzIpXG4gICAqIE9wZXJhbmQgU3RhY2s6XG4gICAqICAgLi4uIOKGklxuICAgKiAgIC4uLiwgVmVyc2lvbmVkUGF0aFJlZmVyZW5jZSAoYm9vbGVhbilcbiAgICovXG4gIEhhc0Jsb2NrUGFyYW1zLFxuXG4gIC8qKlxuICAgKiBPcGVyYXRpb246XG4gICAqICAgUG9wIGNvdW50IGBWZXJzaW9uZWRQYXRoUmVmZXJlbmNlYHMgb2ZmIHRoZSBzdGFjayBhbmRcbiAgICogICBjb25zdHJ1Y3QgYSBuZXcgQ29uY2F0UmVmZXJlbmNlIGZyb20gdGhlbSAoaW4gcmV2ZXJzZVxuICAgKiAgIG9yZGVyKS5cbiAgICogRm9ybWF0OlxuICAgKiAgIChDb25jYXQgY291bnQ6dTMyKVxuICAgKiBPcGVyYW5kIFN0YWNrOlxuICAgKiAgIC4uLiwgVmVyc2lvbmVkUGF0aFJlZmVyZW5jZSwgW1ZlcnNpb25lZFBhdGhSZWZlcmVuY2UgLi4uXSDihpJcbiAgICogICAuLi4sIENvbmNhdFJlZmVyZW5jZVxuICAgKi9cbiAgQ29uY2F0LFxuXG4gIC8qKlxuICAgKiBPcGVyYXRpb246XG4gICAqICAgUHVzaCBhbiBPYmplY3QgY29uc3RhbnQgb250byB0aGUgc3RhY2sgdGhhdCBpcyBub3RcbiAgICogICBhIEphdmFTY3JpcHQgcHJpbWl0aXZlLlxuICAgKiBGb3JtYXQ6XG4gICAqICAgKFB1c2hDb25zdGFudCBjb25zdGFudDojT2JqZWN0KVxuICAgKiBPcGVyYW5kIFN0YWNrOlxuICAgKiAgIC4uLiDihpJcbiAgICogICAuLi4sIE9wYXF1ZVxuICAgKi9cbiAgQ29uc3RhbnQsXG5cbiAgLyoqXG4gICAqIE9wZXJhdGlvbjpcbiAgICogICBXcmFwIGEgSmF2YVNjcmlwdCBwcmltaXRpdmUgaW4gYSByZWZlcmVuY2UgYW5kIHB1c2ggaXRcbiAgICogICBvbnRvIHRoZSBzdGFjay5cbiAgICogRm9ybWF0OlxuICAgKiAgIChQdXNoUHJpbWl0aXZlIGNvbnN0YW50OiNQcmltaXRpdmUpXG4gICAqIE9wZXJhbmQgU3RhY2s6XG4gICAqICAgLi4uIOKGklxuICAgKiAgIC4uLiwgUHJpbWl0aXZlXG4gICAqIERlc2NyaXB0aW9uOlxuICAgKiAgIFRoZSB0d28gaGlnaCBiaXRzIG9mIHRoZSBjb25zdGFudCByZWZlcmVuY2UgZGVzY3JpYmVcbiAgICogICB0aGUga2luZCBvZiBwcmltaXRpdmU6XG4gICAqXG4gICAqICAgMDA6IG51bWJlclxuICAgKiAgIDAxOiBzdHJpbmdcbiAgICogICAxMDogdHJ1ZSB8IGZhbHNlIHwgbnVsbCB8IHVuZGVmaW5lZFxuICAgKi9cbiAgUHJpbWl0aXZlLFxuXG4gIC8qKlxuICAgKiBPcGVyYXRpb246IENvbnZlcnQgdGhlIHRvcCBvZiB0aGUgc3RhY2sgaW50byBhIHByaW1pdGl2ZSByZWZlcmVuY2UuXG4gICAqXG4gICAqIEZvcm1hdDpcbiAgICogICAoUHJpbWl0aXZlUmVmZXJlbmNlKVxuICAgKiBPcGVyYW5kIFN0YWNrOlxuICAgKiAgIC4uLiwgUHJpbWl0aXZlIOKGklxuICAgKiAgIC4uLiwgVmVyc2lvbmVkUGF0aFJlZmVyZW5jZTxQcmltaXRpdmU+XG4gICAqL1xuICBQcmltaXRpdmVSZWZlcmVuY2UsXG5cbiAgLyoqXG4gICAqIE9wZXJhdGlvbjogQ29udmVydCB0aGUgdG9wIG9mIHRoZSBzdGFjayBpbnRvIGEgbnVtYmVyLlxuICAgKlxuICAgKiBGb3JtYXQ6XG4gICAqICAgKFJlaWZ5VTMyKVxuICAgKiBPcGVyYW5kIFN0YWNrOlxuICAgKiAgIC4uLiwgVmVyc2lvbmVkUGF0aFJlZmVyZW5jZTx1MzI+IOKGklxuICAgKiAgIC4uLiwgVmVyc2lvbmVkUGF0aFJlZmVyZW5jZTx1MzI+LCB1MzJcbiAgICovXG4gIFJlaWZ5VTMyLFxuXG4gIC8qKlxuICAgKiBPcGVyYXRpb246IER1cGxpY2F0ZSBhbmQgcHVzaCBpdGVtIGZyb20gYW4gb2Zmc2V0IGluIHRoZSBzdGFjay5cbiAgICogRm9ybWF0OlxuICAgKiAgIChEdXAgcmVnaXN0ZXI6dTMyLCBvZmZzZXQ6dTMyKVxuICAgKiBPcGVyYW5kIFN0YWNrOlxuICAgKiAgIC4uLiwgT3BhcXVlIOKGklxuICAgKiAgIC4uLiwgT3BhcXVlLCBPcGFxdWVcbiAgICovXG4gIER1cCxcblxuICAvKipcbiAgICogT3BlcmF0aW9uOiBQb3AgTiBpdGVtcyBvZmYgdGhlIHN0YWNrIGFuZCB0aHJvdyBhd2F5IHRoZSB2YWx1ZS5cbiAgICogRm9ybWF0OlxuICAgKiAgIChQb3ApXG4gICAqIE9wZXJhbmQgU3RhY2s6XG4gICAqICAgLi4uLCBPcGFxdWUsIC4uLiwgT3BhcXVlIOKGklxuICAgKiAgIC4uLlxuICAgKi9cbiAgUG9wLFxuXG4gIC8qKlxuICAgKiBPcGVyYXRpb246IExvYWQgYSB2YWx1ZSBpbnRvIGEgcmVnaXN0ZXJcbiAgICogRm9ybWF0OlxuICAgKiAgIChMb2FkIHJlZ2lzdGVyOnUzMilcbiAgICogT3BlcmFuZCBTdGFjazpcbiAgICogICAuLi4sIE9wYXF1ZSDihpJcbiAgICogICAuLi5cbiAgICovXG4gIExvYWQsXG5cbiAgLyoqXG4gICAqIE9wZXJhdGlvbjogRmV0Y2ggYSB2YWx1ZSBmcm9tIGEgcmVnaXN0ZXJcbiAgICogRm9ybWF0OlxuICAgKiAgIChGZXRjaCByZWdpc3Rlcjp1MzIpXG4gICAqIE9wZXJhbmQgU3RhY2s6XG4gICAqICAgLi4uIOKGklxuICAgKiAgIC4uLiwgT3BhcXVlXG4gICAqL1xuICBGZXRjaCxcblxuICAvLy8gUFJFTFVERSAmIEVYSVRcblxuICAvKipcbiAgICogT3BlcmF0aW9uOiBQdXNoIGEgbmV3IHJvb3Qgc2NvcGUgb250byB0aGUgc2NvcGUgc3RhY2suXG4gICAqXG4gICAqIEZvcm1hdDpcbiAgICogICAoUm9vdFNjb3BlIHN5bWJvbHM6dTMyIGJpbmRDYWxsZXJTY29wZTpib29sKVxuICAgKiBPcGVyYW5kIFN0YWNrOlxuICAgKiAgIC4uLiDihpJcbiAgICogICAuLi5cbiAgICogRGVzY3JpcHRpb246XG4gICAqICAgQSByb290IHNjb3BlIGhhcyBubyBwYXJlbnQgc2NvcGUsIGFuZCB0aGVyZWZvcmUgaW5oZXJpdHMgbm8gbGV4aWNhbFxuICAgKiAgIHZhcmlhYmxlcy4gSWYgYGJpbmRDYWxsZXJTY29wZWAgaXMgYHRydWVgLCB0aGUgY3VycmVudCBzY29wZSByZW1lbWJlcnNcbiAgICogICB0aGUgY2FsbGVyIHNjb3BlIChmb3IgeWllbGRpbmcgYmxvY2tzKS5cbiAgICovXG4gIFJvb3RTY29wZSxcblxuICAvKipcbiAgICogT3BlcmF0aW9uOiBQdXNoIGEgbmV3IHJvb3Qgc2NvcGUgb250byB0aGUgc2NvcGUgc3RhY2suXG4gICAqXG4gICAqIEZvcm1hdDpcbiAgICogICAoVmlydHVhbFJvb3RTY29wZSByZWdpc3Rlcjp1MzIpXG4gICAqIE9wZXJhbmQgU3RhY2s6XG4gICAqICAgLi4uIOKGklxuICAgKiAgIC4uLlxuICAgKiBEZXNjcmlwdGlvbjpcbiAgICogICBUaGUgc3ltYm9sIGNvdW50IGlzIGRldGVybWluZWQgYnkgdGhlIGNvbXBvbmVudCBzdGF0ZSBpblxuICAgKiAgIHRoZSBzcGVjaWZpZWQgcmVnaXN0ZXIuXG4gICAqL1xuICBWaXJ0dWFsUm9vdFNjb3BlLFxuXG4gIC8qKlxuICAgKiBPcGVyYXRpb246IFB1c2ggYSBuZXcgY2hpbGQgc2NvcGUgb250byB0aGUgc2NvcGUgc3RhY2suXG4gICAqXG4gICAqIEZvcm1hdDpcbiAgICogICAoQ2hpbGRTY29wZSlcbiAgICogT3BlcmFuZCBTdGFjazpcbiAgICogICAuLi4g4oaSXG4gICAqICAgLi4uXG4gICAqIERlc2NyaXB0aW9uOlxuICAgKiAgIEEgY2hpbGQgc2NvcGUgaW5oZXJpdHMgZnJvbSB0aGUgY3VycmVudCBwYXJlbnQgc2NvcGUsIGFuZCB0aGVyZWZvcmVcbiAgICogICBzaGFyZXMgaXRzIGxleGljYWwgdmFyaWFibGVzLlxuICAgKi9cbiAgQ2hpbGRTY29wZSxcblxuICAvKipcbiAgICogT3BlcmF0aW9uOiBQb3AgdGhlIGN1cnJlbnQgc2NvcGUgZnJvbSB0aGUgc2NvcGUgc3RhY2suXG4gICAqIEZvcm1hdDpcbiAgICogICAoUG9wU2NvcGUpXG4gICAqIE9wZXJhbmQgU3RhY2s6XG4gICAqICAgLi4uIOKGklxuICAgKiAgIC4uLlxuICAgKi9cbiAgUG9wU2NvcGUsXG5cbiAgLyoqXG4gICAqIE9wZXJhdGlvbjogUmV0dXJuIHRvIHRoZSBwcmV2aW91cyBmcmFtZS5cbiAgICogRm9ybWF0OlxuICAgKiAgIChSZXR1cm4pXG4gICAqIE9wZXJhbmQgU3RhY2s6XG4gICAqICAgLi4uLCBhZGRyZXNzOm51bWJlciDihpJcbiAgICogICAuLi5cbiAgICovXG4gIFJldHVybixcblxuICAvKipcbiAgICogT3BlcmF0aW9uOiBSZXR1cm4gdG8gYSBwbGFjZSBpbiB0aGUgcHJvZ3JhbSBnaXZlbiBhbiBvZmZzZXRcbiAgICogRm9ybWF0OlxuICAgKiAgKFJldHVyblRvIG9mZnNldDppMzIpXG4gICAqIE9wZXJhbmQgU3RhY2s6XG4gICAqICAgIC4uLiDihpJcbiAgICovXG4gIFJldHVyblRvLFxuXG4gIC8vLyBIVE1MXG5cbiAgLyoqXG4gICAqIE9wZXJhdGlvbjogQXBwZW5kIGEgVGV4dCBub2RlIHdpdGggdmFsdWUgYGNvbnRlbnRzYFxuICAgKiBGb3JtYXQ6XG4gICAqICAgKFRleHQgY29udGVudHM6I3N0cmluZylcbiAgICogT3BlcmFuZCBTdGFjazpcbiAgICogICAuLi4g4oaSXG4gICAqICAgLi4uXG4gICAqL1xuICBUZXh0LFxuXG4gIC8qKlxuICAgKiBPcGVyYXRpb246IEFwcGVuZCBhIENvbW1lbnQgbm9kZSB3aXRoIHZhbHVlIGBjb250ZW50c2BcbiAgICogRm9ybWF0OlxuICAgKiAgIChDb21tZW50IGNvbnRlbnRzOiNzdHJpbmcpXG4gICAqIE9wZXJhbmQgU3RhY2s6XG4gICAqICAgLi4uIOKGklxuICAgKiAgIC4uLlxuICAgKi9cbiAgQ29tbWVudCxcblxuICAvKipcbiAgICogT3BlcmF0aW9uOiBBcHBlbmQgY29udGVudCBhcyBIVE1MLlxuICAgKiBGb3JtYXQ6XG4gICAqICAgKEFwcGVuZEhUTUwpXG4gICAqIE9wZXJhbmQgU3RhY2s6XG4gICAqICAgLi4uLCBWZXJzaW9uZWRQYXRoUmVmZXJlbmNlPHN0cmluZz4g4oaSXG4gICAqICAgLi4uXG4gICAqL1xuICBBcHBlbmRIVE1MLFxuXG4gIC8qKlxuICAgKiBPcGVyYXRpb246IEFwcGVuZCBTYWZlSFRNTCBhcyBIVE1MLlxuICAgKiBGb3JtYXQ6XG4gICAqICAgKEFwcGVuZFNhZmVIVE1MKVxuICAgKiBPcGVyYW5kIFN0YWNrOlxuICAgKiAgIC4uLiwgVmVyc2lvbmVkUGF0aFJlZmVyZW5jZTxTYWZlSFRNTD4g4oaSXG4gICAqICAgLi4uXG4gICAqL1xuICBBcHBlbmRTYWZlSFRNTCxcblxuICAvKipcbiAgICogT3BlcmF0aW9uOiBBcHBlbmQgRG9jdW1lbnRGcmFnbWVudC5cbiAgICogRm9ybWF0OlxuICAgKiAgIChBcHBlbmRGcmFnbWVudClcbiAgICogT3BlcmFuZCBTdGFjazpcbiAgICogICAuLi4sIFZlcnNpb25lZFBhdGhSZWZlcmVuY2U8RG9jdW1lbnRGcmFnbWVudD4g4oaSXG4gICAqICAgLi4uXG4gICAqL1xuICBBcHBlbmREb2N1bWVudEZyYWdtZW50LFxuXG4gIC8qKlxuICAgKiBPcGVyYXRpb246IEFwcGVuZCBOb2RlLlxuICAgKiBGb3JtYXQ6XG4gICAqICAgKEFwcGVuZEZyYWdtZW50KVxuICAgKiBPcGVyYW5kIFN0YWNrOlxuICAgKiAgIC4uLiwgVmVyc2lvbmVkUGF0aFJlZmVyZW5jZTxOb2RlPiDihpJcbiAgICogICAuLi5cbiAgICovXG4gIEFwcGVuZE5vZGUsXG5cbiAgLyoqXG4gICAqIE9wZXJhdGlvbjogQXBwZW5kIGNvbnRlbnQgYXMgdGV4dC5cbiAgICogRm9ybWF0OlxuICAgKiAgIChBcHBlbmRUZXh0KVxuICAgKiBPcGVyYW5kIFN0YWNrOlxuICAgKiAgIC4uLiwgVmVyc2lvbmVkUGF0aFJlZmVyZW5jZTxzdHJpbmc+IOKGklxuICAgKiAgIC4uLlxuICAgKi9cbiAgQXBwZW5kVGV4dCxcblxuICAvKipcbiAgICogT3BlcmF0aW9uOiBPcGVuIGEgbmV3IEVsZW1lbnQgbmFtZWQgYHRhZ2AuXG4gICAqIEZvcm1hdDpcbiAgICogICAoT3BlbkVsZW1lbnQgdGFnOiNzdHJpbmcpXG4gICAqIE9wZXJhbmQgU3RhY2s6XG4gICAqICAgLi4uIOKGklxuICAgKiAgIC4uLlxuICAgKi9cbiAgT3BlbkVsZW1lbnQsXG5cbiAgLyoqXG4gICAqIE9wZXJhdGlvbjpcbiAgICogICBPcGVuIGEgbmV3IEVsZW1lbnQgd2l0aCBhIG5hbWUgb24gdGhlIHN0YWNrIGFuZCB3aXRoIHNwZWNpYWxcbiAgICogICBvcGVyYXRpb25zIHByb3ZpZGVkIG9uIHRoZSBzdGFjay5cbiAgICogRm9ybWF0OlxuICAgKiAgIChPcGVuRHluYW1pY0VsZW1lbnQpXG4gICAqIE9wZXJhbmQgU3RhY2s6XG4gICAqICAgLi4uLCBzdHJpbmcsIEVsZW1lbnRPcGVyYXRpb25zIOKGklxuICAgKiAgIC4uLlxuICAgKi9cbiAgT3BlbkR5bmFtaWNFbGVtZW50LFxuXG4gIC8qKlxuICAgKiBPcGVyYXRpb246IEFkZCBhbiBhdHRyaWJ1dGUgdG8gdGhlIGN1cnJlbnQgRWxlbWVudC5cbiAgICogRm9ybWF0OlxuICAgKiAgIChTdGF0aWNBdHRyIG5hbWU6I3N0cmluZyB2YWx1ZTojc3RyaW5nIG5hbWVzcGFjZTpPcHRpb248I3N0cmluZz4pXG4gICAqIE9wZXJhbmQgU3RhY2s6XG4gICAqICAgLi4uIOKGklxuICAgKiAgIC4uLlxuICAgKi9cbiAgU3RhdGljQXR0cixcblxuICAvKipcbiAgICogT3BlcmF0aW9uOlxuICAgKiAgIEFkZCBhbiBhdHRyaWJ1dGUgdG8gdGhlIGN1cnJlbnQgZWxlbWVudCB1c2luZyB0aGUgdmFsdWVcbiAgICogICBhdCB0aGUgdG9wIG9mIHRoZSBzdGFjay5cbiAgICpcbiAgICogRm9ybWF0OlxuICAgKiAgIChEeW5hbWljQXR0ciBuYW1lOiNzdHJpbmcgdHJ1c3Rpbmc6Ym9vbGVhbiBuYW1lc3BhY2U6T3B0aW9uPCNzdHJpbmc+KVxuICAgKiBPcGVyYW5kIFN0YWNrOlxuICAgKiAgIC4uLiwgVmVyc2lvbmVkUGF0aFJlZmVyZW5jZSDihpJcbiAgICogICAuLi5cbiAgICogRGVzY3JpcHRpb246XG4gICAqICAgSWYgYHRydXN0aW5nYCBpcyBmYWxzZSwgdGhlIGhvc3QgbWF5IHNhbml0aXplIHRoZSBhdHRyaWJ1dGVcbiAgICogICBiYXNlZCB1cG9uIGtub3duIHJpc2tzLlxuICAgKi9cbiAgRHluYW1pY0F0dHIsXG5cbiAgLyoqXG4gICAqIE9wZXJhdGlvbjpcbiAgICogICBBZGQgYW4gYXR0cmlidXRlIHRvIHRoZSBjdXJyZW50IGVsZW1lbnQgdXNpbmcgdGhlIHZhbHVlXG4gICAqICAgYXQgdGhlIHRvcCBvZiB0aGUgc3RhY2suXG4gICAqXG4gICAqIEZvcm1hdDpcbiAgICogICAoQ29tcG9uZW50QXRyIG5hbWU6I3N0cmluZyB0cnVzdGluZzpib29sZWFuIG5hbWVzcGFjZTpPcHRpb248I3N0cmluZz4pXG4gICAqIE9wZXJhbmQgU3RhY2s6XG4gICAqICAgLi4uLCBWZXJzaW9uZWRQYXRoUmVmZXJlbmNlIOKGklxuICAgKiAgIC4uLlxuICAgKi9cbiAgQ29tcG9uZW50QXR0cixcblxuICAvKipcbiAgICogT3BlcmF0aW9uOiBGaW5pc2ggc2V0dGluZyBhdHRyaWJ1dGVzIG9uIHRoZSBjdXJyZW50IGVsZW1lbnQuXG4gICAqXG4gICAqIEZvcm1hdDpcbiAgICogICAoRmx1c2hFbGVtZW50KVxuICAgKiBPcGVyYW5kIFN0YWNrOlxuICAgKiAgIC4uLiDihpJcbiAgICogICAuLi5cbiAgICovXG4gIEZsdXNoRWxlbWVudCxcblxuICAvKipcbiAgICogT3BlcmF0aW9uOiBDbG9zZSB0aGUgY3VycmVudCBlbGVtZW50LlxuICAgKlxuICAgKiBGb3JtYXQ6XG4gICAqICAgKENsb3NlRWxlbWVudClcbiAgICogT3BlcmFuZCBTdGFjazpcbiAgICogICAuLi4g4oaSXG4gICAqICAgLi4uXG4gICAqL1xuICBDbG9zZUVsZW1lbnQsXG5cbiAgLy8vIE1PRElGSUVSXG4gIE1vZGlmaWVyLCAvLyAoQ29uc3RhbnRTdHJpbmcsIENvbnN0YW50T3RoZXI8TW9kaWZpZXJNYW5hZ2VyPiwgQ29uc3RhbnRFeHByZXNzaW9uKVxuXG4gIC8vLyBXT1JNSE9MRVxuICBQdXNoUmVtb3RlRWxlbWVudCwgLy8gKClcbiAgUG9wUmVtb3RlRWxlbWVudCwgLy8gKClcblxuICAvLy8gRFlOQU1JQyBTQ09QRVxuXG4gIC8qKlxuICAgKiBPcGVyYXRpb246IEJpbmQgc3RhY2sgdmFsdWVzIGFzIGR5bmFtaWMgdmFyaWFibGVzLlxuICAgKiBGb3JtYXQ6XG4gICAqICAgKEJpbmREeW5hbWljU2NvcGUgbmFtZXM6I0FycmF5PCNzdHJpbmc+KVxuICAgKiBPcGVyYW5kIFN0YWNrOlxuICAgKiAgIC4uLiwgVmVyc2lvbmVkUGF0aFJlZmVyZW5jZSwgW1ZlcnNpb25lZFBhdGhSZWZlcmVuY2UgLi4uXSDihpJcbiAgICogICAuLi5cbiAgICogRGVzY3JpcHRpb246XG4gICAqICAgVGhpcyBpcyB1c2VkIHRvIGV4cG9zZSBgLXdpdGgtZHluYW1pYy12YXJzYCwgYW5kIGlzIGFcbiAgICogICBuaWNoZSBmZWF0dXJlLlxuICAgKi9cbiAgQmluZER5bmFtaWNTY29wZSxcblxuICBQdXNoRHluYW1pY1Njb3BlLCAvLyAoKVxuICBQb3BEeW5hbWljU2NvcGUsIC8vICgpXG5cbiAgLy8vIFZNXG5cbiAgLyoqXG4gICAqIE9wZXJhdGlvbjogQ29tcGlsZSB0aGUgSW5saW5lQmxvY2sgYXQgdGhlIHRvcCBvZiB0aGUgc3RhY2suXG4gICAqIEZvcm1hdDpcbiAgICogICAoQ29tcGlsZUJsb2NrKVxuICAgKiBPcGVyYW5kIFN0YWNrOlxuICAgKiAgIC4uLiwgQ29tcGlsYWJsZUJsb2NrIOKGklxuICAgKiAgIC4uLiwgSGFuZGxlXG4gICAqL1xuICBDb21waWxlQmxvY2ssXG5cbiAgLyoqXG4gICAqIE9wZXJhdGlvbjogUHVzaCBhIHNjb3BlIG9udG8gdGhlIHN0YWNrLlxuICAgKiBGb3JtYXQ6XG4gICAqICAgKFB1c2hCbG9ja1Njb3BlICNTY29wZSlcbiAgICogT3BlcmFuZCBTdGFjazpcbiAgICogICAuLi4sIOKGklxuICAgKiAgIC4uLiwgU2NvcGVcbiAgICovXG4gIFB1c2hCbG9ja1Njb3BlLFxuXG4gIC8qKlxuICAgKiBPcGVyYXRpb246IFB1c2ggYSBzeW1ib2wgdGFibGUgb250byB0aGUgc3RhY2suXG4gICAqIEZvcm1hdDpcbiAgICogICAoUHVzaFN5bWJvbFRhYmxlICNTeW1ib2xUYWJsZSlcbiAgICogT3BlcmFuZCBTdGFjazpcbiAgICogICAuLi4sIOKGklxuICAgKiAgIC4uLiwgU3ltYm9sVGFibGVcbiAgICovXG4gIFB1c2hTeW1ib2xUYWJsZSxcblxuICAvKipcbiAgICogT3BlcmF0aW9uOiBFdmFsdWF0ZSB0aGUgaGFuZGxlIGF0IHRoZSB0b3Agb2YgdGhlIHN0YWNrLlxuICAgKiBGb3JtYXQ6XG4gICAqICAgKEludm9rZVZpcnR1YWwpXG4gICAqIE9wZXJhbmQgU3RhY2s6XG4gICAqICAgLi4uLCBIYW5kbGUsIOKGklxuICAgKiAgIC4uLlxuICAgKi9cbiAgSW52b2tlVmlydHVhbCxcblxuICAvKipcbiAgICogT3BlcmF0aW9uOiBFdmFsdWF0ZSB0aGUgaGFuZGxlLlxuICAgKiBGb3JtYXQ6XG4gICAqICAgKEludm9rZVN0YXRpYyBoYW5kbGU6dTMyKVxuICAgKiBPcGVyYW5kIFN0YWNrOlxuICAgKiAgIC4uLiDihpJcbiAgICogICAuLi5cbiAgICovXG4gIEludm9rZVN0YXRpYyxcblxuICAvKipcbiAgICogT3BlcmF0aW9uOiBZaWVsZCB0byBhIGJsb2NrLlxuICAgKiBGb3JtYXQ6XG4gICAqICAgKEludm9rZVlpZWxkKVxuICAgKiBPcGVyYW5kIFN0YWNrOlxuICAgKiAgIC4uLiwgW1ZlcnNpb25lZFBhdGhSZWZlcmVuY2UgLi4uXSwgQXJndW1lbnRzLCBTeW1ib2xUYWJsZSwgSGFuZGxlIOKGklxuICAgKiAgIC4uLlxuICAgKi9cbiAgSW52b2tlWWllbGQsXG5cbiAgLyoqXG4gICAqIE9wZXJhdGlvbjogSnVtcCB0byB0aGUgc3BlY2lmaWVkIG9mZnNldC5cbiAgICpcbiAgICogRm9ybWF0OlxuICAgKiAgIChKdW1wIHRvOnUzMilcbiAgICogT3BlcmFuZCBTdGFjazpcbiAgICogICAuLi4g4oaSXG4gICAqICAgLi4uXG4gICAqL1xuICBKdW1wLFxuXG4gIC8qKlxuICAgKiBPcGVyYXRpb246XG4gICAqICAgSnVtcCB0byB0aGUgc3BlY2lmaWVkIG9mZnNldCBpZiB0aGUgdmFsdWUgYXRcbiAgICogICB0aGUgdG9wIG9mIHRoZSBzdGFjayBpcyB0cnVlLlxuICAgKlxuICAgKiBGb3JtYXQ6XG4gICAqICAgKEp1bXBJZiB0bzp1MzIpXG4gICAqIE9wZXJhbmQgU3RhY2s6XG4gICAqICAgLi4uLCBWZXJzaW9uZWRQYXRoUmVmZXJlbmNlIOKGklxuICAgKiAgIC4uLlxuICAgKi9cbiAgSnVtcElmLFxuXG4gIC8qKlxuICAgKiBPcGVyYXRpb246XG4gICAqICAgSnVtcCB0byB0aGUgc3BlY2lmaWVkIG9mZnNldCBpZiB0aGUgdmFsdWUgYXRcbiAgICogICB0aGUgdG9wIG9mIHRoZSBzdGFjayBpcyBmYWxzZS5cbiAgICpcbiAgICogRm9ybWF0OlxuICAgKiAgIChKdW1wVW5sZXNzIHRvOnUzMilcbiAgICogT3BlcmFuZCBTdGFjazpcbiAgICogICAuLi4sIFZlcnNpb25lZFBhdGhSZWZlcmVuY2Ug4oaSXG4gICAqICAgLi4uXG4gICAqL1xuICBKdW1wVW5sZXNzLFxuXG4gIC8qKlxuICAgKiBPcGVyYXRpb246XG4gICAqICAgSnVtcCB0byB0aGUgc3BlY2lmaWVkIG9mZnNldCBpZiB0aGUgdmFsdWUgYXRcbiAgICogICB0aGUgdG9wIG9mIHRoZSBzdGFjayBpcyB0aGUgc2FtZSBhcyB0aGVcbiAgICogICBjb21wYXJpc29uLlxuICAgKlxuICAgKiBGb3JtYXQ6XG4gICAqICAgKEp1bXBFcSB0bzppMzIgY29tcGFyaXNvbjppMzIpXG4gICAqIE9wZXJhbmQgU3RhY2s6XG4gICAqICAgLi4uLCB1MzIg4oaSXG4gICAqICAgLi4uLCB1MzJcbiAgICovXG4gIEp1bXBFcSxcblxuICAvKipcbiAgICogT3BlcmF0aW9uOlxuICAgKiAgIFZhbGlkYXRlIHRoYXQgdGhlIHZhbHVlIGF0IHRoZSB0b3Agb2YgdGhlIHN0YWNrXG4gICAqICAgaGFzbid0IGNoYW5nZWQuXG4gICAqXG4gICAqIEZvcm1hdDpcbiAgICogICAoQXNzZXJ0U2FtZSlcbiAgICogT3BlcmFuZCBTdGFjazpcbiAgICogICAuLi4sIFZlcnNpb25lZFBhdGhSZWZlcmVuY2U8dTMyPiDihpJcbiAgICogICAuLi4sIFZlcnNpb25lZFBhdGhSZWZlcmVuY2U8dTMyPlxuICAgKi9cbiAgQXNzZXJ0U2FtZSxcblxuICAvKipcbiAgICogT3BlcmF0aW9uOiBQdXNoIGEgc3RhY2sgZnJhbWVcbiAgICpcbiAgICogRm9ybWF0OlxuICAgKiAgIChQdXNoRnJhbWUpXG4gICAqIE9wZXJhbmQgU3RhY2s6XG4gICAqICAgLi4uIOKGklxuICAgKiAgICRyYSwgJGZwXG4gICAqL1xuICBQdXNoRnJhbWUsXG5cbiAgLyoqXG4gICAqIE9wZXJhdGlvbjogUG9wIGEgc3RhY2sgZnJhbWVcbiAgICpcbiAgICogRm9ybWF0OlxuICAgKiAgIChQdXNoRnJhbWUpXG4gICAqIE9wZXJhbmQgU3RhY2s6XG4gICAqICAgJHJhLCAkZnAg4oaSXG4gICAqICAgLi4uXG4gICAqL1xuICBQb3BGcmFtZSxcblxuICAvKipcbiAgICogT3BlcmF0aW9uOiBQdXNoIGEgc21hbGwgc3RhY2sgZnJhbWVcbiAgICpcbiAgICogRm9ybWF0OlxuICAgKiAgIChQdXNoU21hbGxGcmFtZSlcbiAgICogT3BlcmFuZCBTdGFjazpcbiAgICogICAuLi4g4oaSXG4gICAqICAgJGZwXG4gICAqL1xuICBQdXNoU21hbGxGcmFtZSxcblxuICAvKipcbiAgICogT3BlcmF0aW9uOiBQb3AgYSBzdGFjayBmcmFtZVxuICAgKlxuICAgKiBGb3JtYXQ6XG4gICAqICAgKFBvcFNtYWxsRnJhbWUpXG4gICAqIE9wZXJhbmQgU3RhY2s6XG4gICAqICAgJGZwIOKGklxuICAgKiAgIC4uLlxuICAgKi9cbiAgUG9wU21hbGxGcmFtZSxcblxuICAvKipcbiAgICogT3BlcmF0aW9uOlxuICAgKiAgIFN0YXJ0IHRyYWNraW5nIGEgbmV3IG91dHB1dCBibG9jayB0aGF0IGNvdWxkIGNoYW5nZVxuICAgKiAgIGlmIG9uZSBvZiBpdHMgaW5wdXRzIGNoYW5nZXMuXG4gICAqXG4gICAqIEZvcm1hdDpcbiAgICogICAoRW50ZXIgYXJnczp1MzIpXG4gICAqIE9wZXJhbmQgU3RhY2s6XG4gICAqICAgLi4uIOKGklxuICAgKiAgIC4uLlxuICAgKiBEZXNjcmlwdGlvbjpcbiAgICogICBTb29uIGFmdGVyIHRoaXMgb3Bjb2RlLCBvbmUgb2YgSnVtcCwgSnVtcElmLFxuICAgKiAgIEp1bXBVbmxlc3MsIG9yIEp1bXBFcSB3aWxsIHByb2R1Y2UgYW4gdXBkYXRpbmdcbiAgICogICBhc3NlcnRpb24uIElmIHRoYXQgYXNzZXJ0aW9uIGZhaWxzLCB0aGUgYXBwZW5kaW5nXG4gICAqICAgVk0gd2lsbCBiZSByZS1lbnRlcmVkLCBhbmQgdGhlIGluc3RydWN0aW9ucyBmcm9tIGBmcm9tYFxuICAgKiAgIHRvIGB0b2Agd2lsbCBiZSBleGVjdXRlZC5cbiAgICpcbiAgICogICBUT0RPOiBTYXZlIGFuZCByZXN0b3JlLlxuICAgKi9cbiAgRW50ZXIsXG5cbiAgLyoqXG4gICAqIE9wZXJhdGlvbjpcbiAgICogICBGaW5pc2ggdHJhY2tpbmcgdGhlIGN1cnJlbnQgYmxvY2suXG4gICAqXG4gICAqIEZvcm1hdDpcbiAgICogICAoRXhpdClcbiAgICogT3BlcmFuZCBTdGFjazpcbiAgICogICAuLi4g4oaSXG4gICAqICAgLi4uXG4gICAqIERlc2NyaXB0aW9uOlxuICAgKiAgIFRoaXMgZmluYWxpemVzIHRoZSB2YWxpZGF0b3JzIHRoYXQgdGhlIHVwZGF0aW5nXG4gICAqICAgYmxvY2sgbXVzdCBjaGVjayB0byBkZXRlcm1pbmUgd2hldGhlciBpdCdzIHNhZmUgdG9cbiAgICogICBza2lwIHJ1bm5pbmcgdGhlIGNvbnRlbnRzLlxuICAgKi9cbiAgRXhpdCxcblxuICAvKipcbiAgICogT3BlcmF0aW9uOiBDb252ZXJ0IHRoZSB0b3Agb2YgdGhlIHN0YWNrIGludG8gYSBib29sZWFuIHJlZmVyZW5jZS5cbiAgICpcbiAgICogRm9ybWF0OlxuICAgKiAgIChUb0Jvb2xlYW4pXG4gICAqIE9wZXJhbmQgU3RhY2s6XG4gICAqICAgLi4uLCBWZXJzaW9uZWRQYXRoUmVmZXJlbmNlPE9wYXF1ZT4g4oaSXG4gICAqICAgLi4uLCBWZXJzaW9uZWRQYXRoUmVmZXJlbmNlPGJvb2w+XG4gICAqL1xuICBUb0Jvb2xlYW4sXG5cbiAgLy8vIExJU1RTXG5cbiAgLyoqXG4gICAqIE9wZXJhdGlvbjogRW50ZXIgYSBsaXN0LlxuICAgKlxuICAgKiBGb3JtYXQ6XG4gICAqICAgKEVudGVyTGlzdCBhZGRyZXNzOnUzMilcbiAgICogT3BlcmFuZCBTdGFjazpcbiAgICogICAuLi4sIEl0ZXJhdG9yIOKGklxuICAgKiAgIC4uLlxuICAgKi9cbiAgRW50ZXJMaXN0LFxuXG4gIC8qKlxuICAgKiBPcGVyYXRpb246IEV4aXQgdGhlIGN1cnJlbnQgbGlzdC5cbiAgICpcbiAgICogRm9ybWF0OlxuICAgKiAgIChFeGl0TGlzdClcbiAgICogT3BlcmFuZCBTdGFjazpcbiAgICogICAuLi4g4oaSXG4gICAqICAgLi4uXG4gICAqL1xuICBFeGl0TGlzdCxcblxuICAvKipcbiAgICogT3BlcmF0aW9uOlxuICAgKiAgIENvbnZlcnQgYW4gb3BlcmFuZCBhbmQga2V5IGludG8gYW4gaXRlcmF0b3IgYW5kXG4gICAqICAgcHJlc2VuY2UgcmVmZXJlbmNlLlxuICAgKlxuICAgKiBGb3JtYXQ6XG4gICAqICAgKFB1dEl0ZXJhdG9yKVxuICAgKiBPcGVyYW5kIFN0YWNrOlxuICAgKiAgIC4uLiwga2V5OnN0cmluZywgbGlzdDpWZXJzaW9uZWRQYXRoUmVmZXJlbmNlIOKGklxuICAgKiAgIC4uLiwgaXRlcmF0b3I6UmVmZXJlbmNlSXRlcmF0b3IsIHByZXNlbnQ6UHJlc2VuY2VSZWZlcmVuY2VcbiAgICovXG4gIFB1dEl0ZXJhdG9yLFxuXG4gIC8qKlxuICAgKiBPcGVyYXRpb246XG4gICAqICAgU2V0IHVwIHRoZSBzdGFjayBmb3IgaXRlcmF0aW5nIGZvciBhIGdpdmVuIGtleSxcbiAgICogICBvciBqdW1wIHRvIGBlbmRgIGlmIHRoZXJlIGlzIG5vdGhpbmcgbGVmdCB0b1xuICAgKiAgIGl0ZXJhdGUuXG4gICAqXG4gICAqIEZvcm1hdDpcbiAgICogICAoSXRlcmF0ZSBlbmQ6dTMyKVxuICAgKiBPcGVyYW5kIFN0YWNrOlxuICAgKiAgIEZvcm0gMTogKHNvbWV0aGluZyB0byBpdGVyYXRlKVxuICAgKiAgIC4uLiDihpJcbiAgICogICAuLi4sIFZlcnNpb25lZFBhdGhSZWZlcmVuY2UsIFZlcnNpb25lZFBhdGhSZWZlcmVuY2UsIHN0cmluZ1xuICAgKiAgIEZvcm0gMjogKG5vdGhpbmcgbGVmdCB0byBpdGVyYXRlKVxuICAgKiAgIC4uLiDihpJcbiAgICogICAuLi5cbiAgICogRGVzY3JpcHRpb246XG4gICAqICAgSW4gRm9ybSAxLCB0aGUgc3RhY2sgd2lsbCBoYXZlIChpbiByZXZlcnNlIG9yZGVyKTpcbiAgICpcbiAgICogICAtIHRoZSBrZXksIGFzIGEgc3RyaW5nXG4gICAqICAgLSB0aGUgY3VycmVudCBpdGVyYXRlZCB2YWx1ZVxuICAgKiAgIC0gdGhlIG1lbW9pemVkIGl0ZXJhdGVkIHZhbHVlXG4gICAqL1xuICBJdGVyYXRlLFxuXG4gIC8vLyBDT01QT05FTlRTXG5cbiAgLyoqXG4gICAqIE9wZXJhdGlvbjogVGVzdCB3aGV0aGVyIGEgcmVmZXJlbmNlIGNvbnRhaW5zIGEgY29tcG9uZW50IGRlZmluaXRpb24uXG4gICAqXG4gICAqIEZvcm1hdDpcbiAgICogICAoTWFpbiBzdGF0ZTpyZWdpc3RlcilcbiAgICogT3BlcmFuZCBTdGFjazpcbiAgICogICAuLi4sIEludm9jYXRpb24sIENvbXBvbmVudERlZmluaXRpb24g4oaSXG4gICAqICAgLi4uXG4gICAqL1xuICBNYWluLFxuXG4gIC8qKlxuICAgKiBPcGVyYXRpb246IFRlc3Qgd2hldGhlciBhIHJlZmVyZW5jZSBjb250YWlucyBhIGNvbXBvbmVudCBkZWZpbml0aW9uLlxuICAgKlxuICAgKiBGb3JtYXQ6XG4gICAqICAgKElzQ29tcG9uZW50KVxuICAgKiBPcGVyYW5kIFN0YWNrOlxuICAgKiAgIC4uLiwgVmVyc2lvbmVkUGF0aFJlZmVyZW5jZTxPcGFxdWU+IOKGklxuICAgKiAgIC4uLiwgVmVyc2lvbmVkUGF0aFJlZmVyZW5jZTxib29sZWFuPlxuICAgKi9cbiAgSXNDb21wb25lbnQsXG5cbiAgLyoqXG4gICAqIE9wZXJhdGlvbjogUHVzaCB0aGUgY29udGVudCB0eXBlIG9udG8gdGhlIHN0YWNrLlxuICAgKlxuICAgKiBGb3JtYXQ6XG4gICAqICAgKENvbnRlbnRUeXBlKVxuICAgKiBPcGVyYW5kIFN0YWNrOlxuICAgKiAgIC4uLiwgVmVyc2lvbmVkUGF0aFJlZmVyZW5jZTxPcGFxdWU+IOKGklxuICAgKiAgIC4uLiwgVmVyc2lvbmVkUGF0aFJlZmVyZW5jZTxPcGFxdWU+LCBWZXJzaW9uZWRQYXRoUmVmZXJlbmNlPENvbnRlbnRUeXBlPlxuICAgKi9cbiAgQ29udGVudFR5cGUsXG5cbiAgLyoqXG4gICAqIE9wZXJhdGlvbjogQ3VycnkgYSBjb21wb25lbnQgZGVmaW5pdGlvbiBmb3IgYSBsYXRlciBpbnZvY2F0aW9uLlxuICAgKlxuICAgKiBGb3JtYXQ6XG4gICAqICAgKEN1cnJ5Q29tcG9uZW50IHRlbXBsYXRlTWV0YTojTG9jYXRvcilcbiAgICogT3BlcmFuZCBTdGFjazpcbiAgICogICAuLi4sIFZlcnNpb25lZFBhdGhSZWZlcmVuY2UsIFtWZXJzaW9uZWRQYXRoUmVmZXJlbmNlIC4uLl0sIEFyZ3VtZW50cyDihpJcbiAgICogICAuLi4sIHsgVmVyc2lvbmVkUGF0aFJlZmVyZW5jZSwgTG9jYXRvciwgQ2FwdHVyZWRBcmd1bWVudHMgfVxuICAgKi9cbiAgQ3VycnlDb21wb25lbnQsXG5cbiAgLyoqXG4gICAqIE9wZXJhdGlvbjogUHVzaCBhbiBhcHByb3ByaWF0ZSBjb21wb25lbnQgbWFuYWdlciBvbnRvIHRoZSBzdGFjay5cbiAgICpcbiAgICogRm9ybWF0OlxuICAgKiAgIChQdXNoQ29tcG9uZW50TWFuYWdlciAjQ29tcG9uZW50U3BlYylcbiAgICogT3BlcmFuZCBTdGFjazpcbiAgICogICAuLi4g4oaSXG4gICAqICAgLi4uLCB7IENvbXBvbmVudERlZmluaXRpb24sIENvbXBvbmVudE1hbmFnZXIgfVxuICAgKi9cbiAgUHVzaENvbXBvbmVudERlZmluaXRpb24sXG5cbiAgLyoqXG4gICAqIE9wZXJhdGlvbjpcbiAgICogICBQdXNoZXMgdGhlIENvbXBvbmVudEluc3RhbmNlIG9udG8gdGhlIHN0YWNrIHRoYXQgaXNcbiAgICogICB1c2VkIGR1cmluZyB0aGUgaW52b2tlLlxuICAgKlxuICAgKiBGb3JtYXQ6XG4gICAqICAgKFB1c2hEeW5hbWljQ29tcG9uZW50SW5zdGFuY2UpXG4gICAqIE9wZXJhbmQgU3RhY2s6XG4gICAqICAgLi4uLCBDb21wb25lbnREZWZpbml0aW9uIOKGklxuICAgKiAgIC4uLiwgeyBDb21wb25lbnREZWZpbml0aW9uLCBtYW5hZ2VyOiBudWxsLCBsYXlvdXQ6IG51bGwsIHN0YXRlOiBudWxsLCBoYW5kbGU6IG51bGwsIHRhYmxlOiBudWxsIH1cbiAgICovXG5cbiAgUHVzaER5bmFtaWNDb21wb25lbnRJbnN0YW5jZSxcblxuICAvKipcbiAgICogT3BlcmF0aW9uOlxuICAgKiAgIFB1c2hlcyBhIGN1cnJpZWQgY29tcG9uZW50IGRlZmluaXRpb24gb24gdG8gdGhlIHN0YWNrXG4gICAqXG4gICAqIEZvcm1hdDpcbiAgICogICAoUHVzaEN1cnJpZWRDb21wb25lbnQpXG4gICAqIE9wZXJhbmQgU3RhY2s6XG4gICAqICAgLi4uLCBWZXJzaW9uZWRQYXRoUmVmZXJlbmNlPE9wYXF1ZT4g4oaSXG4gICAqICAgLi4uLCBDb21wb25lbnREZWZpbml0aW9uXG4gICAqL1xuICBQdXNoQ3VycmllZENvbXBvbmVudCxcblxuICAvKipcbiAgICogT3BlcmF0aW9uOlxuICAgKiAgIFB1c2ggYSByZXNvbHZlZCBjb21wb25lbnQgZGVmaW5pdGlvbiBvbnRvIHRoZSBzdGFja1xuICAgKlxuICAgKiBGb3JtYXQ6XG4gICAqICAgKFJlc29sdmVEeW5hbWljQ29tcG9uZW50IHRlbXBsYXRlTWV0YTojTG9jYXRvcilcbiAgICogT3BlcmFuZCBTdGFjazpcbiAgICogICAuLi4sIFZlcnNpb25lZFBhdGhSZWZlcmVuY2U8T3BhcXVlPiDihpJcbiAgICogICAuLi4sIENvbXBvbmVudERlZmluaXRpb25cbiAgICovXG4gIFJlc29sdmVEeW5hbWljQ29tcG9uZW50LFxuXG4gIC8qKlxuICAgKiBPcGVyYXRpb246IFB1c2ggYSB1c2VyIHJlcHJlc2VudGF0aW9uIG9mIGFyZ3Mgb250byB0aGUgc3RhY2suXG4gICAqXG4gICAqIEZvcm1hdDpcbiAgICogICAoUHVzaEFyZ3MgbmFtZXM6I0FycmF5PCNzdHJpbmc+IHBvc2l0aW9uYWxDb3VudDp1MzIgc3ludGhldGljOiNib29sZWFuKVxuICAgKlxuICAgKiBPcGVyYW5kIFN0YWNrOlxuICAgKiAgIC4uLiwgW1ZlcnNpb25lZFBhdGhSZWZlcmVuY2UgLi4uXSAg4oaSXG4gICAqICAgLi4uLCBbVmVyc2lvbmVkUGF0aFJlZmVyZW5jZSAuLi5dLCBBcmd1bWVudHNcbiAgICpcbiAgICogRGVzY3JpcHRpb246XG4gICAqICAgVGhpcyBhcmd1bWVudHMgb2JqZWN0IGlzIG9ubHkgbmVjZXNzYXJ5IHdoZW4gY2FsbGluZyBpbnRvXG4gICAqICAgdXNlci1zcGVjaWZpZWQgaG9va3MuIEl0IGlzIG1lYW50IHRvIGJlIGltcGxlbWVudGVkIGFzIGFcbiAgICogICB0cmFuc2llbnQgcHJveHkgdGhhdCByZWFkcyBpbnRvIHRoZSBzdGFjayBhcyBuZWVkZWQuXG4gICAqICAgSG9sZGluZyBvbnRvIHRoZSBBcmd1bWVudHMgYWZ0ZXIgdGhlIGNhbGwgaGFzIGNvbXBsZXRlZCBpc1xuICAgKiAgIGlsbGVnYWwuXG4gICAqL1xuICBQdXNoQXJncyxcblxuICAvKipcbiAgICogT3BlcmF0aW9uOiBQdXNoIGVtcHR5IGFyZ3Mgb250byB0aGUgc3RhY2tcbiAgICpcbiAgICogRm9ybWF0OlxuICAgKiAgIChFbXB0eUFyZ3MpXG4gICAqXG4gICAqIE9wZXJhbmRTdGFjazpcbiAgICogICAuLi4g4oaSXG4gICAqICAgLi4uLCBBcmd1bWVudHNcbiAgICovXG4gIFB1c2hFbXB0eUFyZ3MsXG5cbiAgLyoqXG4gICAqIE9wZXJhdGlvbjogUG9wcyBBcmd1bWVudHMgZnJvbSB0aGUgc3RhY2sgYW5kIGNsZWFycyB0aGUgbmV4dCBOIGFyZ3MuXG4gICAqXG4gICAqIEZvcm1hdDpcbiAgICogICAoUG9wQXJncylcbiAgICpcbiAgICogT3BlcmFuZCBTdGFjazpcbiAgICogICAuLi4sIFtWZXJzaW9uZWRQYXRoUmVmZXJlbmNlIC4uLl0sIEFyZ3VtZW50cyAg4oaSXG4gICAqICAgLi4uXG4gICAqXG4gICAqIERlc2NyaXB0aW9uOlxuICAgKiBUaGUgYXJndW1lbnRzIG9iamVjdCBjb250YWlucyB0aGUgaW5mb3JtYXRpb24gb2YgaG93IG1hbnkgdXNlclxuICAgKiBzdXBwbGllZCBhcmdzIHRoZSBjb21wb25lbnQgd2FzIGludm9rZWQgd2l0aC4gVG8gY2xlYXIgdGhlbSBmcm9tXG4gICAqIHRoZSBzdGFjayB3ZSBtdXN0IHBvcCBpdCBmcm9tIHRoZSBzdGFjayBhbmQgY2FsbCBgY2xlYXJgIG9uIGl0XG4gICAqIHRvIHJlbW92ZSB0aGUgYXJndW1lbnQgdmFsdWVzIGZyb20gdGhlIHN0YWNrLlxuICAgKi9cbiAgUG9wQXJncyxcblxuICAvKipcbiAgICogT3BlcmF0aW9uOiAuLi5cbiAgICogRm9ybWF0OlxuICAgKiAgIChQcmVwYXJlQXJncyBzdGF0ZTpyZWdpc3RlcilcbiAgICogT3BlcmFuZCBTdGFjazpcbiAgICogICAuLi4g4oaSXG4gICAqICAgLi4uXG4gICAqL1xuICBQcmVwYXJlQXJncyxcblxuICAvKipcbiAgICogT3BlcmF0aW9uOiBSZXBsYWNlcyBBcmd1bWVudHMgb24gdGhlIHN0YWNrIHdpdGggQ2FwdHVyZWRBcmd1bWVudHNcbiAgICogRm9ybWF0OlxuICAgKiAgIChDYXB0dXJlQXJncylcbiAgICpcbiAgICogT3BlcmFuZCBTdGFjazpcbiAgICogICAuLi4sIEFyZ3VtZW50cyAg4oaSXG4gICAqICAgLi4uLCBDYXB0dXJlZEFyZ3VtZW50c1xuICAgKlxuICAgKiBEZXNjcmlwdGlvbjpcbiAgICogVGhlIEFyZ3VtZW50cyBvYmplY3QgaXMgbXV0YXRlZCBpbiBwbGFjZSBiZWNhdXNlIGl0IGlzIHVzdWFsbHkgY29uc3VtZWQgaW1tZWRpYXRlbHlcbiAgICogYWZ0ZXIgYmVpbmcgcHVzaGVkIG9uIHRvIHRoZSBzdGFjay4gSW4gc29tZSBzaXR1YXRpb25zLCBzdWNoIGFzIHdpdGggY3VycmllZCBjb21wb25lbnRzLFxuICAgKiBpbmZvcm1hdGlvbiBhYm91dCBtb3JlIHRoYW4gb25lIEFyZ3VtZW50IG1heSBuZWVkIHRvIGV4aXN0IG9uIHRoZSBzdGFjayBhdCBvbmNlLiBJbiB0aG9zZVxuICAgKiBjYXNlcywgdGhlIENhcHR1cmVBcmdzIGluc3RydWN0aW9uIHBvcHMgYW4gQXJndW1lbnRzIG9iamVjdCBvZmYgdGhlIHN0YWNrIGFuZCByZXBsYWNlcyBpdFxuICAgKiB3aXRoIHRoZSBpbW11dGFibGUgQ2FwdHVyZWRBcmdzIHNuYXBzaG90LlxuICAgKi9cbiAgQ2FwdHVyZUFyZ3MsXG5cbiAgLyoqXG4gICAqIE9wZXJhdGlvbjogQ3JlYXRlIHRoZSBjb21wb25lbnQgYW5kIHB1c2ggaXQgb250byB0aGUgc3RhY2suXG4gICAqIEZvcm1hdDpcbiAgICogICAoQ3JlYXRlQ29tcG9uZW50IGZsYWdzOnUzMiBzdGF0ZTpyZWdpc3RlcilcbiAgICogICAuLi4g4oaSXG4gICAqICAgLi4uXG4gICAqIERlc2NyaXB0aW9uOlxuICAgKiBPcGVyYW5kIFN0YWNrOlxuICAgKiAgIEZsYWdzOlxuICAgKlxuICAgKiAgICogMGIwMDE6IEhhcyBhIGRlZmF1bHQgYmxvY2tcbiAgICogICAqIDBiMDEwOiBIYXMgYW4gaW52ZXJzZSBibG9ja1xuICAgKi9cbiAgQ3JlYXRlQ29tcG9uZW50LFxuXG4gIC8qKlxuICAgKiBPcGVyYXRpb246IFJlZ2lzdGVyIGEgZGVzdHJ1Y3RvciBmb3IgdGhlIGN1cnJlbnQgY29tcG9uZW50XG4gICAqXG4gICAqIEZvcm1hdDpcbiAgICogICAoUmVnaXN0ZXJDb21wb25lbnREZXN0cnVjdG9yIHN0YXRlOnJlZ2lzdGVyKVxuICAgKiBPcGVyYW5kIFN0YWNrOlxuICAgKiAgIC4uLiDihpJcbiAgICogICAuLi5cbiAgICovXG4gIFJlZ2lzdGVyQ29tcG9uZW50RGVzdHJ1Y3RvcixcblxuICAvKipcbiAgICogT3BlcmF0aW9uOiBQdXNoIGEgbmV3IEVsZW1lbnRPcGVyYXRpb25zIGZvciB0aGUgY3VycmVudCBjb21wb25lbnQuXG4gICAqXG4gICAqIEZvcm1hdDpcbiAgICogICAoUHV0Q29tcG9uZW50T3BlcmF0aW9ucylcbiAgICogT3BlcmFuZCBTdGFjazpcbiAgICogICAuLi4g4oaSXG4gICAqICAgLi4uXG4gICAqL1xuICBQdXRDb21wb25lbnRPcGVyYXRpb25zLFxuXG4gIC8qKlxuICAgKiBPcGVyYXRpb246IFB1c2ggdGhlIGNvbXBvbmVudCdzIGBzZWxmYCBvbnRvIHRoZSBzdGFjay5cbiAgICpcbiAgICogRm9ybWF0OlxuICAgKiAgIChHZXRDb21wb25lbnRTZWxmIHN0YXRlOnJlZ2lzdGVyKVxuICAgKiBPcGVyYW5kIFN0YWNrOlxuICAgKiAgIC4uLiDihpJcbiAgICogICAuLi4sIFZlcnNpb25lZFBhdGhSZWZlcmVuY2VcbiAgICovXG4gIEdldENvbXBvbmVudFNlbGYsXG5cbiAgLyoqXG4gICAqIE9wZXJhdGlvbjogUHVzaCB0aGUgY29tcG9uZW50J3MgYHNlbGZgIG9udG8gdGhlIHN0YWNrLlxuICAgKlxuICAgKiBGb3JtYXQ6XG4gICAqICAgKEdldENvbXBvbmVudFRhZ05hbWUgc3RhdGU6cmVnaXN0ZXIpXG4gICAqIE9wZXJhbmQgU3RhY2s6XG4gICAqICAgLi4uIOKGklxuICAgKiAgIC4uLiwgT3B0aW9uPHN0cmluZz5cbiAgICovXG4gIEdldENvbXBvbmVudFRhZ05hbWUsXG5cbiAgLyoqXG4gICAqIE9wZXJhdGlvbjogR2V0IHRoZSBjb21wb25lbnQgbGF5b3V0IGZyb20gdGhlIG1hbmFnZXIuXG4gICAqXG4gICAqIEZvcm1hdDpcbiAgICogICAoR2V0Q29tcG9uZW50TGF5b3V0IHN0YXRlOnJlZ2lzdGVyKVxuICAgKiBPcGVyYW5kIFN0YWNrOlxuICAgKiAgIC4uLiDihpJcbiAgICogICAuLi4sIFByb2dyYW1TeW1ib2xUYWJsZSwgSGFuZGxlXG4gICAqL1xuICBHZXRDb21wb25lbnRMYXlvdXQsXG5cbiAgLyoqXG4gICAqIE9wZXJhdGlvbjogUG9wdWxhdGUgdGhlIGV2YWwgbG9va3VwIGlmIG5lY2Vzc2FyeS5cbiAgICpcbiAgICogRm9ybWF0OlxuICAgKiAgIChTZXR1cEZvckV2YWwgc3RhdGU6cmVnaXN0ZXIpXG4gICAqIE9wZXJhbmQgU3RhY2s6XG4gICAqICAgLi4uIOKGklxuICAgKiAgIC4uLlxuICAgKi9cbiAgU2V0dXBGb3JFdmFsLFxuXG4gIC8qKlxuICAgKiBPcGVyYXRpb246IFBvcHVsYXRlIHRoZSBldmFsIGxvb2t1cCBpZiBuZWNlc3NhcnkuXG4gICAqXG4gICAqIEZvcm1hdDpcbiAgICogICAoU2V0dXBGb3JFdmFsIHN0YXRlOnJlZ2lzdGVyKVxuICAgKiBPcGVyYW5kIFN0YWNrOlxuICAgKiAgIC4uLiDihpJcbiAgICogICAuLi5cbiAgICovXG4gIEJpbmRFdmFsU2NvcGUsXG5cbiAgLyoqXG4gICAqIE9wZXJhdGlvbjpcbiAgICogICBQb3B1bGF0ZSB0aGUgc3RhdGUgcmVnaXN0ZXIgd2l0aCB0aGUgbGF5b3V0IGN1cnJlbnRseVxuICAgKiAgIG9uIHRoZSBzdGFjay5cbiAgICpcbiAgICogRm9ybWF0OlxuICAgKiAgIChQb3B1bGF0ZUxheW91dCBzdGF0ZTpyZWdpc3RlcilcbiAgICogT3BlcmFuZCBTdGFjazpcbiAgICogICAuLi4sIFByb2dyYW1TeW1ib2xUYWJsZSwgSGFuZGxlIOKGklxuICAgKiAgIC4uLlxuICAgKi9cbiAgUG9wdWxhdGVMYXlvdXQsXG5cbiAgLyoqXG4gICAqIE9wZXJhdGlvbjogSW52b2tlIHRoZSBsYXlvdXQgcmV0dXJuZWQgYnkgdGhlIG1hbmFnZXIuXG4gICAqXG4gICAqIEZvcm1hdDpcbiAgICogICAoSW52b2tlQ29tcG9uZW50TGF5b3V0IHN0YXRlOnJlZ2lzdGVyKVxuICAgKiBPcGVyYW5kIFN0YWNrOlxuICAgKiAgIC4uLiDihpJcbiAgICogICAuLi5cbiAgICovXG4gIEludm9rZUNvbXBvbmVudExheW91dCxcblxuICAvKipcbiAgICogT3BlcmF0aW9uOiBCZWdpbiBhIG5ldyBjYWNoZSBncm91cFxuICAgKlxuICAgKiBGb3JtYXQ6XG4gICAqICAgKEJlZ2luQ29tcG9uZW50VHJhbnNhY3Rpb24pXG4gICAqIE9wZXJhbmQgU3RhY2s6XG4gICAqICAgLi4uLCBDb21wb25lbnRNYW5hZ2VyPFQ+LCBUIOKGklxuICAgKiAgIC4uLiwgQ29tcG9uZW50TWFuYWdlcjxUPiwgVFxuICAgKi9cbiAgQmVnaW5Db21wb25lbnRUcmFuc2FjdGlvbixcblxuICAvKipcbiAgICogT3BlcmF0aW9uOiBDb21taXQgdGhlIGN1cnJlbnQgY2FjaGUgZ3JvdXBcbiAgICpcbiAgICogRm9ybWF0OlxuICAgKiAgIChDb21taXRDb21wb25lbnRUcmFuc2FjdGlvbilcbiAgICogT3BlcmFuZCBTdGFjazpcbiAgICogICAuLi4g4oaSXG4gICAqICAgLi4uXG4gICAqL1xuICBDb21taXRDb21wb25lbnRUcmFuc2FjdGlvbixcblxuICAvKipcbiAgICogT3BlcmF0aW9uOiBJbnZva2UgZGlkQ3JlYXRlRWxlbWVudCBvbiB0aGUgY3VycmVudCBjb21wb25lbnQgbWFuYWdlclxuICAgKlxuICAgKiBGb3JtYXQ6XG4gICAqICAgKERpZENyZWF0ZUVsZW1lbnQgc3RhdGU6cmVnaXN0ZXIpXG4gICAqIE9wZXJhbmQgU3RhY2s6XG4gICAqICAgLi4uIOKGklxuICAgKiAgIC4uLlxuICAgKi9cbiAgRGlkQ3JlYXRlRWxlbWVudCxcblxuICAvKipcbiAgICogT3BlcmF0aW9uOiBJbnZva2UgZGlkUmVuZGVyTGF5b3V0IG9uIHRoZSBjdXJyZW50IGNvbXBvbmVudCBtYW5hZ2VyXG4gICAqXG4gICAqIEZvcm1hdDpcbiAgICogICAoRGlkUmVuZGVyTGF5b3V0IHN0YXRlOnJlZ2lzdGVyKVxuICAgKiBPcGVyYW5kIFN0YWNrOlxuICAgKiAgIC4uLiwg4oaSXG4gICAqICAgLi4uXG4gICAqL1xuICBEaWRSZW5kZXJMYXlvdXQsXG5cbiAgLy8vIFBBUlRJQUxTXG5cbiAgLyoqXG4gICAqIE9wZXJhdGlvbjogTG9va3VwIGFuZCBpbnZva2UgYSBwYXJ0aWFsIHRlbXBsYXRlLlxuICAgKlxuICAgKiBGb3JtYXQ6XG4gICAqICAgKEludm9rZVBhcnRpYWwgdGVtcGxhdGVNZXRhOiNMb2NhdG9yIHN5bWJvbHM6I0FycmF5PCNzdHJpbmc+IGV2YWxJbmZvOiNBcnJheTxudW1iZXI+KVxuICAgKiBPcGVyYW5kIFN0YWNrOlxuICAgKiAgIC4uLiwgVmVyc2lvbmVkUGF0aFJlZmVyZW5jZTxzdHJpbmc+IOKGklxuICAgKiAgIC4uLlxuICAgKi9cbiAgSW52b2tlUGFydGlhbCxcblxuICAvKipcbiAgICogT3BlcmF0aW9uOlxuICAgKiAgIFJlc29sdmUge3tmb299fSBpbnNpZGUgYSBwYXJ0aWFsLCB3aGljaCBjb3VsZCBiZSBlaXRoZXIgYSBzZWxmLWxvb2t1cFxuICAgKiAgIG9yIGEgbG9jYWwgdmFyaWFibGUgdGhhdCBpcyBpbi1zY29wZSBmb3IgdGhlIGNhbGxlci5cbiAgICpcbiAgICogRm9ybWF0OlxuICAgKiAgIChSZXNvbHZlTWF5YmVMb2NhbCBsb2NhbDojc3RyaW5nKVxuICAgKiBPcGVyYW5kIFN0YWNrOlxuICAgKiAgIC4uLiDihpJcbiAgICogICAuLi4sIFZlcnNpb25lZFBhdGhSZWZlcmVuY2VcbiAgICovXG4gIFJlc29sdmVNYXliZUxvY2FsLFxuXG4gIC8vLyBERUJVR0dFUlxuXG4gIC8qKlxuICAgKiBPcGVyYXRpb246IEFjdGl2YXRlIHRoZSBkZWJ1Z2dlclxuICAgKlxuICAgKiBGb3JtYXQ6XG4gICAqICAgKERlYnVnZ2VyIHN5bWJvbHM6I0FycmF5PHN0cmluZz4gZXZhbEluZm86I0FycmF5PG51bWJlcj4pXG4gICAqIE9wZXJhbmQgU3RhY2s6XG4gICAqICAgLi4uIOKGklxuICAgKiAgIC4uLlxuICAgKi9cbiAgRGVidWdnZXIsXG5cbiAgLyoqIFRoZSBzaXplIG9mIHRoZSBvcGNvZGUgbGlzdCAqL1xuICBTaXplLFxufVxuIl19
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3Bjb2Rlcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3BhY2thZ2VzL0BnbGltbWVyL3ZtL2xpYi9vcGNvZGVzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgY29uc3QgZW51bSBPcCB7XG4gIC8qXG4gICAgRG9jdW1lbnRhdGlvbiBUT0RPOlxuXG4gICAgRG9jdW1lbnQgdGhlIGxvY2FsIHZhcmlhYmxlIGxheW91dCBpbiB0aGUgc3RhY2tcbiAgICBkaWFncmFtIGJlZm9yZS1hbmQtYWZ0ZXIuXG5cbiAgICBEb2N1bWVudCB1cGRhdGluZyBvcGNvZGVzIGVtaXR0aW5nIGZyb20gdW5yZWFjaGFibGVcbiAgICBhcHBlbmQgb3Bjb2RlLlxuXG4gICAgRG9jdW1lbnQgdGhlIGVsZW1lbnQgc3RhY2ssIGJsb2NrIHN0YWNrIGFuZCBMaXN0XG4gICAgYmxvY2sgc3RhY2suXG4gICAqL1xuXG4gIC8qKlxuICAgKiBUaGlzIG9wY29kZSBzaG91bGQgbmV2ZXIgYmUgcmVhY2hlZC5cbiAgICovXG4gIEJ1ZyxcblxuICAvLy8gRVhQUkVTU0lPTlNcblxuICAvKipcbiAgICogT3BlcmF0aW9uOiBFdmFsdWF0ZSBhIEhlbHBlci5cbiAgICogRm9ybWF0OlxuICAgKiAgIChIZWxwZXIgaGVscGVyOiNGdW5jdGlvbilcbiAgICogT3BlcmFuZCBTdGFjazpcbiAgICogICAuLi4sIFtWZXJzaW9uZWRQYXRoUmVmZXJlbmNlIC4uLl0sIEFyZ3VtZW50cyDihpJcbiAgICogICAuLi4sIFZlcnNpb25lZFBhdGhSZWZlcmVuY2VcbiAgICovXG4gIEhlbHBlcixcblxuICAvKipcbiAgICogT3BlcmF0aW9uOlxuICAgKiAgIEJpbmQgdGhlIG5hbWVkIGFyZ3VtZW50cyBpbiB0aGUgQXJndW1lbnRzIHRvIHRoZSBzeW1ib2xzXG4gICAqICAgc3BlY2lmaWVkIGJ5IHRoZSBzeW1ib2wgdGFibGUgaW4gdGhlIGNvbXBvbmVudCBzdGF0ZSBhdCByZWdpc3Rlci5cbiAgICogRm9ybWF0OlxuICAgKiAgIChTZXROYW1lZFZhcmlhYmxlcyByZWdpc3Rlcjp1MzIpXG4gICAqIE9wZXJhbmQgU3RhY2s6XG4gICAqICAgLi4uLCBBcmd1bWVudHMg4oaSXG4gICAqICAgLi4uXG4gICAqL1xuICBTZXROYW1lZFZhcmlhYmxlcyxcblxuICAvKipcbiAgICogT3BlcmF0aW9uOlxuICAgKiAgIEJpbmQgdGhlIGJsb2NrcyBpbiB0aGUgQXJndW1lbnRzIHRvIHRoZSBzeW1ib2xzIHNwZWNpZmllZCBieSB0aGVcbiAgICogICBzeW1ib2wgdGFibGUgaW4gdGhlIGNvbXBvbmVudCBzdGF0ZSBhdCByZWdpc3Rlci5cbiAgICogRm9ybWF0OlxuICAgKiAgIChTZXRCbG9ja3MgcmVnaXN0ZXI6dTMyKVxuICAgKiBPcGVyYW5kIFN0YWNrOlxuICAgKiAgIC4uLiwgQXJndW1lbnRzIOKGklxuICAgKiAgIC4uLlxuICAgKi9cbiAgU2V0QmxvY2tzLFxuXG4gIC8qKlxuICAgKiBPcGVyYXRpb246XG4gICAqICAgQmluZCB0aGUgdmFyaWFibGUgcmVwcmVzZW50ZWQgYnkgYSBzeW1ib2wgZnJvbVxuICAgKiAgIHRoZSB2YWx1ZSBhdCB0aGUgdG9wIG9mIHRoZSBzdGFjay5cbiAgICogRm9ybWF0OlxuICAgKiAgIChTZXRWYXJpYWJsZSBzeW1ib2w6dTMyKVxuICAgKiBPcGVyYW5kIFN0YWNrOlxuICAgKiAgIC4uLiwgVmVyc2lvbmVkUGF0aFJlZmVyZW5jZSDihpJcbiAgICogICAuLi5cbiAgICovXG4gIFNldFZhcmlhYmxlLFxuXG4gIC8qKlxuICAgKiBPcGVyYXRpb246XG4gICAqICAgQmluZCB0aGUgYmxvY2sgYXQgdGhlIHRvcCBvZiB0aGUgc3RhY2suXG4gICAqIEZvcm1hdDpcbiAgICogICAoU2V0QmxvY2sgc3ltYm9sOnUzMilcbiAgICogT3BlcmFuZCBTdGFjazpcbiAgICogICAuLi4sIFN5bWJvbFRhYmxlLCBIYW5kbGUg4oaSXG4gICAqICAgLi4uXG4gICAqL1xuICBTZXRCbG9jayxcblxuICAvKipcbiAgICogT3BlcmF0aW9uOlxuICAgKiAgIFB1c2ggdGhlIGNvbnRlbnRzIG9mIHRoZSB2YXJpYWJsZSByZXByZXNlbnRlZCBieVxuICAgKiAgIGEgc3ltYm9sIChhIHBvc2l0aW9uYWwgb3IgbmFtZWQgYXJndW1lbnQpIG9udG9cbiAgICogICB0aGUgc3RhY2suXG4gICAqIEZvcm1hdDpcbiAgICogICAoUHVzaFN5bWJvbCBzeW1ib2w6dTMyKVxuICAgKiBPcGVyYW5kIFN0YWNrOlxuICAgKiAgIC4uLiDihpJcbiAgICogICAuLi4sIFZlcnNpb25lZFBhdGhSZWZlcmVuY2VcbiAgICovXG4gIEdldFZhcmlhYmxlLFxuXG4gIC8qKlxuICAgKiBPcGVyYXRpb246XG4gICAqICAgUG9wIGEgVmVyc2lvbmVkUGF0aFJlZmVyZW5jZSBmcm9tIHRoZSB0b3Agb2YgdGhlXG4gICAqICAgc3RhY2ssIGFuZCBwdXNoIGEgVmVyc2lvbmVkUGF0aFJlZmVyZW5jZSBjb25zdHJ1Y3RlZFxuICAgKiAgIGJ5IGAuZ2V0KHByb3BlcnR5KWAuXG4gICAqIEZvcm1hdDpcbiAgICogICAoR2V0UHJvcGVydHkgcHJvcGVydHk6I3N0cmluZylcbiAgICogT3BlcmFuZCBTdGFjazpcbiAgICogICAuLi4sIFZlcnNpb25lZFBhdGhSZWZlcmVuY2Ug4oaSXG4gICAqICAgLi4uLCBWZXJzaW9uZWRQYXRoUmVmZXJlbmNlXG4gICAqL1xuICBHZXRQcm9wZXJ0eSxcblxuICAvKipcbiAgICogT3BlcmF0aW9uOiBQdXNoIHRoZSBzcGVjaWZpZWQgYm91bmQgYmxvY2sgb250byB0aGUgc3RhY2suXG4gICAqIEZvcm1hdDpcbiAgICogICAoR2V0QmxvY2sgYmxvY2s6dTMyKVxuICAgKiBPcGVyYW5kIFN0YWNrOlxuICAgKiAgIC4uLiDihpJcbiAgICogICAuLi4sIElubGluZUJsb2NrXG4gICAqL1xuICBHZXRCbG9jayxcblxuICAvKipcbiAgICogT3BlcmF0aW9uOlxuICAgKiAgIFB1c2ggVFJVRSBvbnRvIHRoZSBzdGFjayBpZiB0aGUgc3BlY2lmaWVkIGJsb2NrXG4gICAqICAgaXMgYm91bmQgYW5kIEZBTFNFIGlmIGl0IGlzIG5vdC5cbiAgICogRm9ybWF0OlxuICAgKiAgIChIYXNCbG9jayBibG9jazp1MzIpXG4gICAqIE9wZXJhbmQgU3RhY2s6XG4gICAqICAgLi4uIOKGklxuICAgKiAgIC4uLiwgYm9vbGVhblxuICAgKi9cbiAgSGFzQmxvY2ssXG5cbiAgLyoqXG4gICAqIE9wZXJhdGlvbjpcbiAgICogICBQdXNoIFRSVUUgb250byB0aGUgc3RhY2sgaWYgdGhlIHNwZWNpZmllZCBibG9ja1xuICAgKiAgIGlzIGJvdW5kICphbmQqIGhhcyBhdCBsZWFzdCBvbmUgc3BlY2lmaWVkIGZvcm1hbFxuICAgKiAgIHBhcmFtZXRlciwgYW5kIEZBTFNFIG90aGVyd2lzZS5cbiAgICogRm9ybWF0OlxuICAgKiAgIChIYXNCbG9ja1BhcmFtcyBibG9jazp1MzIpXG4gICAqIE9wZXJhbmQgU3RhY2s6XG4gICAqICAgLi4uIOKGklxuICAgKiAgIC4uLiwgVmVyc2lvbmVkUGF0aFJlZmVyZW5jZSAoYm9vbGVhbilcbiAgICovXG4gIEhhc0Jsb2NrUGFyYW1zLFxuXG4gIC8qKlxuICAgKiBPcGVyYXRpb246XG4gICAqICAgUG9wIGNvdW50IGBWZXJzaW9uZWRQYXRoUmVmZXJlbmNlYHMgb2ZmIHRoZSBzdGFjayBhbmRcbiAgICogICBjb25zdHJ1Y3QgYSBuZXcgQ29uY2F0UmVmZXJlbmNlIGZyb20gdGhlbSAoaW4gcmV2ZXJzZVxuICAgKiAgIG9yZGVyKS5cbiAgICogRm9ybWF0OlxuICAgKiAgIChDb25jYXQgY291bnQ6dTMyKVxuICAgKiBPcGVyYW5kIFN0YWNrOlxuICAgKiAgIC4uLiwgVmVyc2lvbmVkUGF0aFJlZmVyZW5jZSwgW1ZlcnNpb25lZFBhdGhSZWZlcmVuY2UgLi4uXSDihpJcbiAgICogICAuLi4sIENvbmNhdFJlZmVyZW5jZVxuICAgKi9cbiAgQ29uY2F0LFxuXG4gIC8qKlxuICAgKiBPcGVyYXRpb246XG4gICAqICAgUHVzaCBhbiBPYmplY3QgY29uc3RhbnQgb250byB0aGUgc3RhY2sgdGhhdCBpcyBub3RcbiAgICogICBhIEphdmFTY3JpcHQgcHJpbWl0aXZlLlxuICAgKiBGb3JtYXQ6XG4gICAqICAgKFB1c2hDb25zdGFudCBjb25zdGFudDojT2JqZWN0KVxuICAgKiBPcGVyYW5kIFN0YWNrOlxuICAgKiAgIC4uLiDihpJcbiAgICogICAuLi4sIE9wYXF1ZVxuICAgKi9cbiAgQ29uc3RhbnQsXG5cbiAgLyoqXG4gICAqIE9wZXJhdGlvbjpcbiAgICogICBXcmFwIGEgSmF2YVNjcmlwdCBwcmltaXRpdmUgaW4gYSByZWZlcmVuY2UgYW5kIHB1c2ggaXRcbiAgICogICBvbnRvIHRoZSBzdGFjay5cbiAgICogRm9ybWF0OlxuICAgKiAgIChQdXNoUHJpbWl0aXZlIGNvbnN0YW50OiNQcmltaXRpdmUpXG4gICAqIE9wZXJhbmQgU3RhY2s6XG4gICAqICAgLi4uIOKGklxuICAgKiAgIC4uLiwgUHJpbWl0aXZlXG4gICAqIERlc2NyaXB0aW9uOlxuICAgKiAgIFRoZSB0d28gaGlnaCBiaXRzIG9mIHRoZSBjb25zdGFudCByZWZlcmVuY2UgZGVzY3JpYmVcbiAgICogICB0aGUga2luZCBvZiBwcmltaXRpdmU6XG4gICAqXG4gICAqICAgMDA6IG51bWJlclxuICAgKiAgIDAxOiBzdHJpbmdcbiAgICogICAxMDogdHJ1ZSB8IGZhbHNlIHwgbnVsbCB8IHVuZGVmaW5lZFxuICAgKi9cbiAgUHJpbWl0aXZlLFxuXG4gIC8qKlxuICAgKiBPcGVyYXRpb246IENvbnZlcnQgdGhlIHRvcCBvZiB0aGUgc3RhY2sgaW50byBhIHByaW1pdGl2ZSByZWZlcmVuY2UuXG4gICAqXG4gICAqIEZvcm1hdDpcbiAgICogICAoUHJpbWl0aXZlUmVmZXJlbmNlKVxuICAgKiBPcGVyYW5kIFN0YWNrOlxuICAgKiAgIC4uLiwgUHJpbWl0aXZlIOKGklxuICAgKiAgIC4uLiwgVmVyc2lvbmVkUGF0aFJlZmVyZW5jZTxQcmltaXRpdmU+XG4gICAqL1xuICBQcmltaXRpdmVSZWZlcmVuY2UsXG5cbiAgLyoqXG4gICAqIE9wZXJhdGlvbjogQ29udmVydCB0aGUgdG9wIG9mIHRoZSBzdGFjayBpbnRvIGEgbnVtYmVyLlxuICAgKlxuICAgKiBGb3JtYXQ6XG4gICAqICAgKFJlaWZ5VTMyKVxuICAgKiBPcGVyYW5kIFN0YWNrOlxuICAgKiAgIC4uLiwgVmVyc2lvbmVkUGF0aFJlZmVyZW5jZTx1MzI+IOKGklxuICAgKiAgIC4uLiwgVmVyc2lvbmVkUGF0aFJlZmVyZW5jZTx1MzI+LCB1MzJcbiAgICovXG4gIFJlaWZ5VTMyLFxuXG4gIC8qKlxuICAgKiBPcGVyYXRpb246IER1cGxpY2F0ZSBhbmQgcHVzaCBpdGVtIGZyb20gYW4gb2Zmc2V0IGluIHRoZSBzdGFjay5cbiAgICogRm9ybWF0OlxuICAgKiAgIChEdXAgcmVnaXN0ZXI6dTMyLCBvZmZzZXQ6dTMyKVxuICAgKiBPcGVyYW5kIFN0YWNrOlxuICAgKiAgIC4uLiwgT3BhcXVlIOKGklxuICAgKiAgIC4uLiwgT3BhcXVlLCBPcGFxdWVcbiAgICovXG4gIER1cCxcblxuICAvKipcbiAgICogT3BlcmF0aW9uOiBQb3AgTiBpdGVtcyBvZmYgdGhlIHN0YWNrIGFuZCB0aHJvdyBhd2F5IHRoZSB2YWx1ZS5cbiAgICogRm9ybWF0OlxuICAgKiAgIChQb3ApXG4gICAqIE9wZXJhbmQgU3RhY2s6XG4gICAqICAgLi4uLCBPcGFxdWUsIC4uLiwgT3BhcXVlIOKGklxuICAgKiAgIC4uLlxuICAgKi9cbiAgUG9wLFxuXG4gIC8qKlxuICAgKiBPcGVyYXRpb246IExvYWQgYSB2YWx1ZSBpbnRvIGEgcmVnaXN0ZXJcbiAgICogRm9ybWF0OlxuICAgKiAgIChMb2FkIHJlZ2lzdGVyOnUzMilcbiAgICogT3BlcmFuZCBTdGFjazpcbiAgICogICAuLi4sIE9wYXF1ZSDihpJcbiAgICogICAuLi5cbiAgICovXG4gIExvYWQsXG5cbiAgLyoqXG4gICAqIE9wZXJhdGlvbjogRmV0Y2ggYSB2YWx1ZSBmcm9tIGEgcmVnaXN0ZXJcbiAgICogRm9ybWF0OlxuICAgKiAgIChGZXRjaCByZWdpc3Rlcjp1MzIpXG4gICAqIE9wZXJhbmQgU3RhY2s6XG4gICAqICAgLi4uIOKGklxuICAgKiAgIC4uLiwgT3BhcXVlXG4gICAqL1xuICBGZXRjaCxcblxuICAvLy8gUFJFTFVERSAmIEVYSVRcblxuICAvKipcbiAgICogT3BlcmF0aW9uOiBQdXNoIGEgbmV3IHJvb3Qgc2NvcGUgb250byB0aGUgc2NvcGUgc3RhY2suXG4gICAqXG4gICAqIEZvcm1hdDpcbiAgICogICAoUm9vdFNjb3BlIHN5bWJvbHM6dTMyIGJpbmRDYWxsZXJTY29wZTpib29sKVxuICAgKiBPcGVyYW5kIFN0YWNrOlxuICAgKiAgIC4uLiDihpJcbiAgICogICAuLi5cbiAgICogRGVzY3JpcHRpb246XG4gICAqICAgQSByb290IHNjb3BlIGhhcyBubyBwYXJlbnQgc2NvcGUsIGFuZCB0aGVyZWZvcmUgaW5oZXJpdHMgbm8gbGV4aWNhbFxuICAgKiAgIHZhcmlhYmxlcy4gSWYgYGJpbmRDYWxsZXJTY29wZWAgaXMgYHRydWVgLCB0aGUgY3VycmVudCBzY29wZSByZW1lbWJlcnNcbiAgICogICB0aGUgY2FsbGVyIHNjb3BlIChmb3IgeWllbGRpbmcgYmxvY2tzKS5cbiAgICovXG4gIFJvb3RTY29wZSxcblxuICAvKipcbiAgICogT3BlcmF0aW9uOiBQdXNoIGEgbmV3IHJvb3Qgc2NvcGUgb250byB0aGUgc2NvcGUgc3RhY2suXG4gICAqXG4gICAqIEZvcm1hdDpcbiAgICogICAoVmlydHVhbFJvb3RTY29wZSByZWdpc3Rlcjp1MzIpXG4gICAqIE9wZXJhbmQgU3RhY2s6XG4gICAqICAgLi4uIOKGklxuICAgKiAgIC4uLlxuICAgKiBEZXNjcmlwdGlvbjpcbiAgICogICBUaGUgc3ltYm9sIGNvdW50IGlzIGRldGVybWluZWQgYnkgdGhlIGNvbXBvbmVudCBzdGF0ZSBpblxuICAgKiAgIHRoZSBzcGVjaWZpZWQgcmVnaXN0ZXIuXG4gICAqL1xuICBWaXJ0dWFsUm9vdFNjb3BlLFxuXG4gIC8qKlxuICAgKiBPcGVyYXRpb246IFB1c2ggYSBuZXcgY2hpbGQgc2NvcGUgb250byB0aGUgc2NvcGUgc3RhY2suXG4gICAqXG4gICAqIEZvcm1hdDpcbiAgICogICAoQ2hpbGRTY29wZSlcbiAgICogT3BlcmFuZCBTdGFjazpcbiAgICogICAuLi4g4oaSXG4gICAqICAgLi4uXG4gICAqIERlc2NyaXB0aW9uOlxuICAgKiAgIEEgY2hpbGQgc2NvcGUgaW5oZXJpdHMgZnJvbSB0aGUgY3VycmVudCBwYXJlbnQgc2NvcGUsIGFuZCB0aGVyZWZvcmVcbiAgICogICBzaGFyZXMgaXRzIGxleGljYWwgdmFyaWFibGVzLlxuICAgKi9cbiAgQ2hpbGRTY29wZSxcblxuICAvKipcbiAgICogT3BlcmF0aW9uOiBQb3AgdGhlIGN1cnJlbnQgc2NvcGUgZnJvbSB0aGUgc2NvcGUgc3RhY2suXG4gICAqIEZvcm1hdDpcbiAgICogICAoUG9wU2NvcGUpXG4gICAqIE9wZXJhbmQgU3RhY2s6XG4gICAqICAgLi4uIOKGklxuICAgKiAgIC4uLlxuICAgKi9cbiAgUG9wU2NvcGUsXG5cbiAgLyoqXG4gICAqIE9wZXJhdGlvbjogUmV0dXJuIHRvIHRoZSBwcmV2aW91cyBmcmFtZS5cbiAgICogRm9ybWF0OlxuICAgKiAgIChSZXR1cm4pXG4gICAqIE9wZXJhbmQgU3RhY2s6XG4gICAqICAgLi4uLCBhZGRyZXNzOm51bWJlciDihpJcbiAgICogICAuLi5cbiAgICovXG4gIFJldHVybixcblxuICAvKipcbiAgICogT3BlcmF0aW9uOiBSZXR1cm4gdG8gYSBwbGFjZSBpbiB0aGUgcHJvZ3JhbSBnaXZlbiBhbiBvZmZzZXRcbiAgICogRm9ybWF0OlxuICAgKiAgKFJldHVyblRvIG9mZnNldDppMzIpXG4gICAqIE9wZXJhbmQgU3RhY2s6XG4gICAqICAgIC4uLiDihpJcbiAgICovXG4gIFJldHVyblRvLFxuXG4gIC8vLyBIVE1MXG5cbiAgLyoqXG4gICAqIE9wZXJhdGlvbjogQXBwZW5kIGEgVGV4dCBub2RlIHdpdGggdmFsdWUgYGNvbnRlbnRzYFxuICAgKiBGb3JtYXQ6XG4gICAqICAgKFRleHQgY29udGVudHM6I3N0cmluZylcbiAgICogT3BlcmFuZCBTdGFjazpcbiAgICogICAuLi4g4oaSXG4gICAqICAgLi4uXG4gICAqL1xuICBUZXh0LFxuXG4gIC8qKlxuICAgKiBPcGVyYXRpb246IEFwcGVuZCBhIENvbW1lbnQgbm9kZSB3aXRoIHZhbHVlIGBjb250ZW50c2BcbiAgICogRm9ybWF0OlxuICAgKiAgIChDb21tZW50IGNvbnRlbnRzOiNzdHJpbmcpXG4gICAqIE9wZXJhbmQgU3RhY2s6XG4gICAqICAgLi4uIOKGklxuICAgKiAgIC4uLlxuICAgKi9cbiAgQ29tbWVudCxcblxuICAvKipcbiAgICogT3BlcmF0aW9uOiBBcHBlbmQgY29udGVudCBhcyBIVE1MLlxuICAgKiBGb3JtYXQ6XG4gICAqICAgKEFwcGVuZEhUTUwpXG4gICAqIE9wZXJhbmQgU3RhY2s6XG4gICAqICAgLi4uLCBWZXJzaW9uZWRQYXRoUmVmZXJlbmNlPHN0cmluZz4g4oaSXG4gICAqICAgLi4uXG4gICAqL1xuICBBcHBlbmRIVE1MLFxuXG4gIC8qKlxuICAgKiBPcGVyYXRpb246IEFwcGVuZCBTYWZlSFRNTCBhcyBIVE1MLlxuICAgKiBGb3JtYXQ6XG4gICAqICAgKEFwcGVuZFNhZmVIVE1MKVxuICAgKiBPcGVyYW5kIFN0YWNrOlxuICAgKiAgIC4uLiwgVmVyc2lvbmVkUGF0aFJlZmVyZW5jZTxTYWZlSFRNTD4g4oaSXG4gICAqICAgLi4uXG4gICAqL1xuICBBcHBlbmRTYWZlSFRNTCxcblxuICAvKipcbiAgICogT3BlcmF0aW9uOiBBcHBlbmQgRG9jdW1lbnRGcmFnbWVudC5cbiAgICogRm9ybWF0OlxuICAgKiAgIChBcHBlbmRGcmFnbWVudClcbiAgICogT3BlcmFuZCBTdGFjazpcbiAgICogICAuLi4sIFZlcnNpb25lZFBhdGhSZWZlcmVuY2U8RG9jdW1lbnRGcmFnbWVudD4g4oaSXG4gICAqICAgLi4uXG4gICAqL1xuICBBcHBlbmREb2N1bWVudEZyYWdtZW50LFxuXG4gIC8qKlxuICAgKiBPcGVyYXRpb246IEFwcGVuZCBOb2RlLlxuICAgKiBGb3JtYXQ6XG4gICAqICAgKEFwcGVuZEZyYWdtZW50KVxuICAgKiBPcGVyYW5kIFN0YWNrOlxuICAgKiAgIC4uLiwgVmVyc2lvbmVkUGF0aFJlZmVyZW5jZTxOb2RlPiDihpJcbiAgICogICAuLi5cbiAgICovXG4gIEFwcGVuZE5vZGUsXG5cbiAgLyoqXG4gICAqIE9wZXJhdGlvbjogQXBwZW5kIGNvbnRlbnQgYXMgdGV4dC5cbiAgICogRm9ybWF0OlxuICAgKiAgIChBcHBlbmRUZXh0KVxuICAgKiBPcGVyYW5kIFN0YWNrOlxuICAgKiAgIC4uLiwgVmVyc2lvbmVkUGF0aFJlZmVyZW5jZTxzdHJpbmc+IOKGklxuICAgKiAgIC4uLlxuICAgKi9cbiAgQXBwZW5kVGV4dCxcblxuICAvKipcbiAgICogT3BlcmF0aW9uOiBPcGVuIGEgbmV3IEVsZW1lbnQgbmFtZWQgYHRhZ2AuXG4gICAqIEZvcm1hdDpcbiAgICogICAoT3BlbkVsZW1lbnQgdGFnOiNzdHJpbmcpXG4gICAqIE9wZXJhbmQgU3RhY2s6XG4gICAqICAgLi4uIOKGklxuICAgKiAgIC4uLlxuICAgKi9cbiAgT3BlbkVsZW1lbnQsXG5cbiAgLyoqXG4gICAqIE9wZXJhdGlvbjpcbiAgICogICBPcGVuIGEgbmV3IEVsZW1lbnQgd2l0aCBhIG5hbWUgb24gdGhlIHN0YWNrIGFuZCB3aXRoIHNwZWNpYWxcbiAgICogICBvcGVyYXRpb25zIHByb3ZpZGVkIG9uIHRoZSBzdGFjay5cbiAgICogRm9ybWF0OlxuICAgKiAgIChPcGVuRHluYW1pY0VsZW1lbnQpXG4gICAqIE9wZXJhbmQgU3RhY2s6XG4gICAqICAgLi4uLCBzdHJpbmcsIEVsZW1lbnRPcGVyYXRpb25zIOKGklxuICAgKiAgIC4uLlxuICAgKi9cbiAgT3BlbkR5bmFtaWNFbGVtZW50LFxuXG4gIC8qKlxuICAgKiBPcGVyYXRpb246IEFkZCBhbiBhdHRyaWJ1dGUgdG8gdGhlIGN1cnJlbnQgRWxlbWVudC5cbiAgICogRm9ybWF0OlxuICAgKiAgIChTdGF0aWNBdHRyIG5hbWU6I3N0cmluZyB2YWx1ZTojc3RyaW5nIG5hbWVzcGFjZTpPcHRpb248I3N0cmluZz4pXG4gICAqIE9wZXJhbmQgU3RhY2s6XG4gICAqICAgLi4uIOKGklxuICAgKiAgIC4uLlxuICAgKi9cbiAgU3RhdGljQXR0cixcblxuICAvKipcbiAgICogT3BlcmF0aW9uOlxuICAgKiAgIEFkZCBhbiBhdHRyaWJ1dGUgdG8gdGhlIGN1cnJlbnQgZWxlbWVudCB1c2luZyB0aGUgdmFsdWVcbiAgICogICBhdCB0aGUgdG9wIG9mIHRoZSBzdGFjay5cbiAgICpcbiAgICogRm9ybWF0OlxuICAgKiAgIChEeW5hbWljQXR0ciBuYW1lOiNzdHJpbmcgdHJ1c3Rpbmc6Ym9vbGVhbiBuYW1lc3BhY2U6T3B0aW9uPCNzdHJpbmc+KVxuICAgKiBPcGVyYW5kIFN0YWNrOlxuICAgKiAgIC4uLiwgVmVyc2lvbmVkUGF0aFJlZmVyZW5jZSDihpJcbiAgICogICAuLi5cbiAgICogRGVzY3JpcHRpb246XG4gICAqICAgSWYgYHRydXN0aW5nYCBpcyBmYWxzZSwgdGhlIGhvc3QgbWF5IHNhbml0aXplIHRoZSBhdHRyaWJ1dGVcbiAgICogICBiYXNlZCB1cG9uIGtub3duIHJpc2tzLlxuICAgKi9cbiAgRHluYW1pY0F0dHIsXG5cbiAgLyoqXG4gICAqIE9wZXJhdGlvbjpcbiAgICogICBBZGQgYW4gYXR0cmlidXRlIHRvIHRoZSBjdXJyZW50IGVsZW1lbnQgdXNpbmcgdGhlIHZhbHVlXG4gICAqICAgYXQgdGhlIHRvcCBvZiB0aGUgc3RhY2suXG4gICAqXG4gICAqIEZvcm1hdDpcbiAgICogICAoQ29tcG9uZW50QXRyIG5hbWU6I3N0cmluZyB0cnVzdGluZzpib29sZWFuIG5hbWVzcGFjZTpPcHRpb248I3N0cmluZz4pXG4gICAqIE9wZXJhbmQgU3RhY2s6XG4gICAqICAgLi4uLCBWZXJzaW9uZWRQYXRoUmVmZXJlbmNlIOKGklxuICAgKiAgIC4uLlxuICAgKi9cbiAgQ29tcG9uZW50QXR0cixcblxuICAvKipcbiAgICogT3BlcmF0aW9uOiBGaW5pc2ggc2V0dGluZyBhdHRyaWJ1dGVzIG9uIHRoZSBjdXJyZW50IGVsZW1lbnQuXG4gICAqXG4gICAqIEZvcm1hdDpcbiAgICogICAoRmx1c2hFbGVtZW50KVxuICAgKiBPcGVyYW5kIFN0YWNrOlxuICAgKiAgIC4uLiDihpJcbiAgICogICAuLi5cbiAgICovXG4gIEZsdXNoRWxlbWVudCxcblxuICAvKipcbiAgICogT3BlcmF0aW9uOiBDbG9zZSB0aGUgY3VycmVudCBlbGVtZW50LlxuICAgKlxuICAgKiBGb3JtYXQ6XG4gICAqICAgKENsb3NlRWxlbWVudClcbiAgICogT3BlcmFuZCBTdGFjazpcbiAgICogICAuLi4g4oaSXG4gICAqICAgLi4uXG4gICAqL1xuICBDbG9zZUVsZW1lbnQsXG5cbiAgLy8vIE1PRElGSUVSXG4gIE1vZGlmaWVyLCAvLyAoQ29uc3RhbnRTdHJpbmcsIENvbnN0YW50T3RoZXI8TW9kaWZpZXJNYW5hZ2VyPiwgQ29uc3RhbnRFeHByZXNzaW9uKVxuXG4gIC8vLyBXT1JNSE9MRVxuICBQdXNoUmVtb3RlRWxlbWVudCwgLy8gKClcbiAgUG9wUmVtb3RlRWxlbWVudCwgLy8gKClcblxuICAvLy8gRFlOQU1JQyBTQ09QRVxuXG4gIC8qKlxuICAgKiBPcGVyYXRpb246IEJpbmQgc3RhY2sgdmFsdWVzIGFzIGR5bmFtaWMgdmFyaWFibGVzLlxuICAgKiBGb3JtYXQ6XG4gICAqICAgKEJpbmREeW5hbWljU2NvcGUgbmFtZXM6I0FycmF5PCNzdHJpbmc+KVxuICAgKiBPcGVyYW5kIFN0YWNrOlxuICAgKiAgIC4uLiwgVmVyc2lvbmVkUGF0aFJlZmVyZW5jZSwgW1ZlcnNpb25lZFBhdGhSZWZlcmVuY2UgLi4uXSDihpJcbiAgICogICAuLi5cbiAgICogRGVzY3JpcHRpb246XG4gICAqICAgVGhpcyBpcyB1c2VkIHRvIGV4cG9zZSBgLXdpdGgtZHluYW1pYy12YXJzYCwgYW5kIGlzIGFcbiAgICogICBuaWNoZSBmZWF0dXJlLlxuICAgKi9cbiAgQmluZER5bmFtaWNTY29wZSxcblxuICBQdXNoRHluYW1pY1Njb3BlLCAvLyAoKVxuICBQb3BEeW5hbWljU2NvcGUsIC8vICgpXG5cbiAgLy8vIFZNXG5cbiAgLyoqXG4gICAqIE9wZXJhdGlvbjogQ29tcGlsZSB0aGUgSW5saW5lQmxvY2sgYXQgdGhlIHRvcCBvZiB0aGUgc3RhY2suXG4gICAqIEZvcm1hdDpcbiAgICogICAoQ29tcGlsZUJsb2NrKVxuICAgKiBPcGVyYW5kIFN0YWNrOlxuICAgKiAgIC4uLiwgQ29tcGlsYWJsZUJsb2NrIOKGklxuICAgKiAgIC4uLiwgSGFuZGxlXG4gICAqL1xuICBDb21waWxlQmxvY2ssXG5cbiAgLyoqXG4gICAqIE9wZXJhdGlvbjogUHVzaCBhIHNjb3BlIG9udG8gdGhlIHN0YWNrLlxuICAgKiBGb3JtYXQ6XG4gICAqICAgKFB1c2hCbG9ja1Njb3BlICNTY29wZSlcbiAgICogT3BlcmFuZCBTdGFjazpcbiAgICogICAuLi4sIOKGklxuICAgKiAgIC4uLiwgU2NvcGVcbiAgICovXG4gIFB1c2hCbG9ja1Njb3BlLFxuXG4gIC8qKlxuICAgKiBPcGVyYXRpb246IFB1c2ggYSBzeW1ib2wgdGFibGUgb250byB0aGUgc3RhY2suXG4gICAqIEZvcm1hdDpcbiAgICogICAoUHVzaFN5bWJvbFRhYmxlICNTeW1ib2xUYWJsZSlcbiAgICogT3BlcmFuZCBTdGFjazpcbiAgICogICAuLi4sIOKGklxuICAgKiAgIC4uLiwgU3ltYm9sVGFibGVcbiAgICovXG4gIFB1c2hTeW1ib2xUYWJsZSxcblxuICAvKipcbiAgICogT3BlcmF0aW9uOiBFdmFsdWF0ZSB0aGUgaGFuZGxlIGF0IHRoZSB0b3Agb2YgdGhlIHN0YWNrLlxuICAgKiBGb3JtYXQ6XG4gICAqICAgKEludm9rZVZpcnR1YWwpXG4gICAqIE9wZXJhbmQgU3RhY2s6XG4gICAqICAgLi4uLCBIYW5kbGUsIOKGklxuICAgKiAgIC4uLlxuICAgKi9cbiAgSW52b2tlVmlydHVhbCxcblxuICAvKipcbiAgICogT3BlcmF0aW9uOiBFdmFsdWF0ZSB0aGUgaGFuZGxlLlxuICAgKiBGb3JtYXQ6XG4gICAqICAgKEludm9rZVN0YXRpYyBoYW5kbGU6dTMyKVxuICAgKiBPcGVyYW5kIFN0YWNrOlxuICAgKiAgIC4uLiDihpJcbiAgICogICAuLi5cbiAgICovXG4gIEludm9rZVN0YXRpYyxcblxuICAvKipcbiAgICogT3BlcmF0aW9uOiBZaWVsZCB0byBhIGJsb2NrLlxuICAgKiBGb3JtYXQ6XG4gICAqICAgKEludm9rZVlpZWxkKVxuICAgKiBPcGVyYW5kIFN0YWNrOlxuICAgKiAgIC4uLiwgW1ZlcnNpb25lZFBhdGhSZWZlcmVuY2UgLi4uXSwgQXJndW1lbnRzLCBTeW1ib2xUYWJsZSwgSGFuZGxlIOKGklxuICAgKiAgIC4uLlxuICAgKi9cbiAgSW52b2tlWWllbGQsXG5cbiAgLyoqXG4gICAqIE9wZXJhdGlvbjogSnVtcCB0byB0aGUgc3BlY2lmaWVkIG9mZnNldC5cbiAgICpcbiAgICogRm9ybWF0OlxuICAgKiAgIChKdW1wIHRvOnUzMilcbiAgICogT3BlcmFuZCBTdGFjazpcbiAgICogICAuLi4g4oaSXG4gICAqICAgLi4uXG4gICAqL1xuICBKdW1wLFxuXG4gIC8qKlxuICAgKiBPcGVyYXRpb246XG4gICAqICAgSnVtcCB0byB0aGUgc3BlY2lmaWVkIG9mZnNldCBpZiB0aGUgdmFsdWUgYXRcbiAgICogICB0aGUgdG9wIG9mIHRoZSBzdGFjayBpcyB0cnVlLlxuICAgKlxuICAgKiBGb3JtYXQ6XG4gICAqICAgKEp1bXBJZiB0bzp1MzIpXG4gICAqIE9wZXJhbmQgU3RhY2s6XG4gICAqICAgLi4uLCBWZXJzaW9uZWRQYXRoUmVmZXJlbmNlIOKGklxuICAgKiAgIC4uLlxuICAgKi9cbiAgSnVtcElmLFxuXG4gIC8qKlxuICAgKiBPcGVyYXRpb246XG4gICAqICAgSnVtcCB0byB0aGUgc3BlY2lmaWVkIG9mZnNldCBpZiB0aGUgdmFsdWUgYXRcbiAgICogICB0aGUgdG9wIG9mIHRoZSBzdGFjayBpcyBmYWxzZS5cbiAgICpcbiAgICogRm9ybWF0OlxuICAgKiAgIChKdW1wVW5sZXNzIHRvOnUzMilcbiAgICogT3BlcmFuZCBTdGFjazpcbiAgICogICAuLi4sIFZlcnNpb25lZFBhdGhSZWZlcmVuY2Ug4oaSXG4gICAqICAgLi4uXG4gICAqL1xuICBKdW1wVW5sZXNzLFxuXG4gIC8qKlxuICAgKiBPcGVyYXRpb246XG4gICAqICAgSnVtcCB0byB0aGUgc3BlY2lmaWVkIG9mZnNldCBpZiB0aGUgdmFsdWUgYXRcbiAgICogICB0aGUgdG9wIG9mIHRoZSBzdGFjayBpcyB0aGUgc2FtZSBhcyB0aGVcbiAgICogICBjb21wYXJpc29uLlxuICAgKlxuICAgKiBGb3JtYXQ6XG4gICAqICAgKEp1bXBFcSB0bzppMzIgY29tcGFyaXNvbjppMzIpXG4gICAqIE9wZXJhbmQgU3RhY2s6XG4gICAqICAgLi4uLCB1MzIg4oaSXG4gICAqICAgLi4uLCB1MzJcbiAgICovXG4gIEp1bXBFcSxcblxuICAvKipcbiAgICogT3BlcmF0aW9uOlxuICAgKiAgIFZhbGlkYXRlIHRoYXQgdGhlIHZhbHVlIGF0IHRoZSB0b3Agb2YgdGhlIHN0YWNrXG4gICAqICAgaGFzbid0IGNoYW5nZWQuXG4gICAqXG4gICAqIEZvcm1hdDpcbiAgICogICAoQXNzZXJ0U2FtZSlcbiAgICogT3BlcmFuZCBTdGFjazpcbiAgICogICAuLi4sIFZlcnNpb25lZFBhdGhSZWZlcmVuY2U8dTMyPiDihpJcbiAgICogICAuLi4sIFZlcnNpb25lZFBhdGhSZWZlcmVuY2U8dTMyPlxuICAgKi9cbiAgQXNzZXJ0U2FtZSxcblxuICAvKipcbiAgICogT3BlcmF0aW9uOiBQdXNoIGEgc3RhY2sgZnJhbWVcbiAgICpcbiAgICogRm9ybWF0OlxuICAgKiAgIChQdXNoRnJhbWUpXG4gICAqIE9wZXJhbmQgU3RhY2s6XG4gICAqICAgLi4uIOKGklxuICAgKiAgICRyYSwgJGZwXG4gICAqL1xuICBQdXNoRnJhbWUsXG5cbiAgLyoqXG4gICAqIE9wZXJhdGlvbjogUG9wIGEgc3RhY2sgZnJhbWVcbiAgICpcbiAgICogRm9ybWF0OlxuICAgKiAgIChQdXNoRnJhbWUpXG4gICAqIE9wZXJhbmQgU3RhY2s6XG4gICAqICAgJHJhLCAkZnAg4oaSXG4gICAqICAgLi4uXG4gICAqL1xuICBQb3BGcmFtZSxcblxuICAvKipcbiAgICogT3BlcmF0aW9uOiBQdXNoIGEgc21hbGwgc3RhY2sgZnJhbWVcbiAgICpcbiAgICogRm9ybWF0OlxuICAgKiAgIChQdXNoU21hbGxGcmFtZSlcbiAgICogT3BlcmFuZCBTdGFjazpcbiAgICogICAuLi4g4oaSXG4gICAqICAgJGZwXG4gICAqL1xuICBQdXNoU21hbGxGcmFtZSxcblxuICAvKipcbiAgICogT3BlcmF0aW9uOiBQb3AgYSBzdGFjayBmcmFtZVxuICAgKlxuICAgKiBGb3JtYXQ6XG4gICAqICAgKFBvcFNtYWxsRnJhbWUpXG4gICAqIE9wZXJhbmQgU3RhY2s6XG4gICAqICAgJGZwIOKGklxuICAgKiAgIC4uLlxuICAgKi9cbiAgUG9wU21hbGxGcmFtZSxcblxuICAvKipcbiAgICogT3BlcmF0aW9uOlxuICAgKiAgIFN0YXJ0IHRyYWNraW5nIGEgbmV3IG91dHB1dCBibG9jayB0aGF0IGNvdWxkIGNoYW5nZVxuICAgKiAgIGlmIG9uZSBvZiBpdHMgaW5wdXRzIGNoYW5nZXMuXG4gICAqXG4gICAqIEZvcm1hdDpcbiAgICogICAoRW50ZXIgYXJnczp1MzIpXG4gICAqIE9wZXJhbmQgU3RhY2s6XG4gICAqICAgLi4uIOKGklxuICAgKiAgIC4uLlxuICAgKiBEZXNjcmlwdGlvbjpcbiAgICogICBTb29uIGFmdGVyIHRoaXMgb3Bjb2RlLCBvbmUgb2YgSnVtcCwgSnVtcElmLFxuICAgKiAgIEp1bXBVbmxlc3MsIG9yIEp1bXBFcSB3aWxsIHByb2R1Y2UgYW4gdXBkYXRpbmdcbiAgICogICBhc3NlcnRpb24uIElmIHRoYXQgYXNzZXJ0aW9uIGZhaWxzLCB0aGUgYXBwZW5kaW5nXG4gICAqICAgVk0gd2lsbCBiZSByZS1lbnRlcmVkLCBhbmQgdGhlIGluc3RydWN0aW9ucyBmcm9tIGBmcm9tYFxuICAgKiAgIHRvIGB0b2Agd2lsbCBiZSBleGVjdXRlZC5cbiAgICpcbiAgICogICBUT0RPOiBTYXZlIGFuZCByZXN0b3JlLlxuICAgKi9cbiAgRW50ZXIsXG5cbiAgLyoqXG4gICAqIE9wZXJhdGlvbjpcbiAgICogICBGaW5pc2ggdHJhY2tpbmcgdGhlIGN1cnJlbnQgYmxvY2suXG4gICAqXG4gICAqIEZvcm1hdDpcbiAgICogICAoRXhpdClcbiAgICogT3BlcmFuZCBTdGFjazpcbiAgICogICAuLi4g4oaSXG4gICAqICAgLi4uXG4gICAqIERlc2NyaXB0aW9uOlxuICAgKiAgIFRoaXMgZmluYWxpemVzIHRoZSB2YWxpZGF0b3JzIHRoYXQgdGhlIHVwZGF0aW5nXG4gICAqICAgYmxvY2sgbXVzdCBjaGVjayB0byBkZXRlcm1pbmUgd2hldGhlciBpdCdzIHNhZmUgdG9cbiAgICogICBza2lwIHJ1bm5pbmcgdGhlIGNvbnRlbnRzLlxuICAgKi9cbiAgRXhpdCxcblxuICAvKipcbiAgICogT3BlcmF0aW9uOiBDb252ZXJ0IHRoZSB0b3Agb2YgdGhlIHN0YWNrIGludG8gYSBib29sZWFuIHJlZmVyZW5jZS5cbiAgICpcbiAgICogRm9ybWF0OlxuICAgKiAgIChUb0Jvb2xlYW4pXG4gICAqIE9wZXJhbmQgU3RhY2s6XG4gICAqICAgLi4uLCBWZXJzaW9uZWRQYXRoUmVmZXJlbmNlPE9wYXF1ZT4g4oaSXG4gICAqICAgLi4uLCBWZXJzaW9uZWRQYXRoUmVmZXJlbmNlPGJvb2w+XG4gICAqL1xuICBUb0Jvb2xlYW4sXG5cbiAgLy8vIExJU1RTXG5cbiAgLyoqXG4gICAqIE9wZXJhdGlvbjogRW50ZXIgYSBsaXN0LlxuICAgKlxuICAgKiBGb3JtYXQ6XG4gICAqICAgKEVudGVyTGlzdCBhZGRyZXNzOnUzMilcbiAgICogT3BlcmFuZCBTdGFjazpcbiAgICogICAuLi4sIEl0ZXJhdG9yIOKGklxuICAgKiAgIC4uLlxuICAgKi9cbiAgRW50ZXJMaXN0LFxuXG4gIC8qKlxuICAgKiBPcGVyYXRpb246IEV4aXQgdGhlIGN1cnJlbnQgbGlzdC5cbiAgICpcbiAgICogRm9ybWF0OlxuICAgKiAgIChFeGl0TGlzdClcbiAgICogT3BlcmFuZCBTdGFjazpcbiAgICogICAuLi4g4oaSXG4gICAqICAgLi4uXG4gICAqL1xuICBFeGl0TGlzdCxcblxuICAvKipcbiAgICogT3BlcmF0aW9uOlxuICAgKiAgIENvbnZlcnQgYW4gb3BlcmFuZCBhbmQga2V5IGludG8gYW4gaXRlcmF0b3IgYW5kXG4gICAqICAgcHJlc2VuY2UgcmVmZXJlbmNlLlxuICAgKlxuICAgKiBGb3JtYXQ6XG4gICAqICAgKFB1dEl0ZXJhdG9yKVxuICAgKiBPcGVyYW5kIFN0YWNrOlxuICAgKiAgIC4uLiwga2V5OnN0cmluZywgbGlzdDpWZXJzaW9uZWRQYXRoUmVmZXJlbmNlIOKGklxuICAgKiAgIC4uLiwgaXRlcmF0b3I6UmVmZXJlbmNlSXRlcmF0b3IsIHByZXNlbnQ6UHJlc2VuY2VSZWZlcmVuY2VcbiAgICovXG4gIFB1dEl0ZXJhdG9yLFxuXG4gIC8qKlxuICAgKiBPcGVyYXRpb246XG4gICAqICAgU2V0IHVwIHRoZSBzdGFjayBmb3IgaXRlcmF0aW5nIGZvciBhIGdpdmVuIGtleSxcbiAgICogICBvciBqdW1wIHRvIGBlbmRgIGlmIHRoZXJlIGlzIG5vdGhpbmcgbGVmdCB0b1xuICAgKiAgIGl0ZXJhdGUuXG4gICAqXG4gICAqIEZvcm1hdDpcbiAgICogICAoSXRlcmF0ZSBlbmQ6dTMyKVxuICAgKiBPcGVyYW5kIFN0YWNrOlxuICAgKiAgIEZvcm0gMTogKHNvbWV0aGluZyB0byBpdGVyYXRlKVxuICAgKiAgIC4uLiDihpJcbiAgICogICAuLi4sIFZlcnNpb25lZFBhdGhSZWZlcmVuY2UsIFZlcnNpb25lZFBhdGhSZWZlcmVuY2UsIHN0cmluZ1xuICAgKiAgIEZvcm0gMjogKG5vdGhpbmcgbGVmdCB0byBpdGVyYXRlKVxuICAgKiAgIC4uLiDihpJcbiAgICogICAuLi5cbiAgICogRGVzY3JpcHRpb246XG4gICAqICAgSW4gRm9ybSAxLCB0aGUgc3RhY2sgd2lsbCBoYXZlIChpbiByZXZlcnNlIG9yZGVyKTpcbiAgICpcbiAgICogICAtIHRoZSBrZXksIGFzIGEgc3RyaW5nXG4gICAqICAgLSB0aGUgY3VycmVudCBpdGVyYXRlZCB2YWx1ZVxuICAgKiAgIC0gdGhlIG1lbW9pemVkIGl0ZXJhdGVkIHZhbHVlXG4gICAqL1xuICBJdGVyYXRlLFxuXG4gIC8vLyBDT01QT05FTlRTXG5cbiAgLyoqXG4gICAqIE9wZXJhdGlvbjogVGVzdCB3aGV0aGVyIGEgcmVmZXJlbmNlIGNvbnRhaW5zIGEgY29tcG9uZW50IGRlZmluaXRpb24uXG4gICAqXG4gICAqIEZvcm1hdDpcbiAgICogICAoTWFpbiBzdGF0ZTpyZWdpc3RlcilcbiAgICogT3BlcmFuZCBTdGFjazpcbiAgICogICAuLi4sIEludm9jYXRpb24sIENvbXBvbmVudERlZmluaXRpb24g4oaSXG4gICAqICAgLi4uXG4gICAqL1xuICBNYWluLFxuXG4gIC8qKlxuICAgKiBPcGVyYXRpb246IFRlc3Qgd2hldGhlciBhIHJlZmVyZW5jZSBjb250YWlucyBhIGNvbXBvbmVudCBkZWZpbml0aW9uLlxuICAgKlxuICAgKiBGb3JtYXQ6XG4gICAqICAgKElzQ29tcG9uZW50KVxuICAgKiBPcGVyYW5kIFN0YWNrOlxuICAgKiAgIC4uLiwgVmVyc2lvbmVkUGF0aFJlZmVyZW5jZTxPcGFxdWU+IOKGklxuICAgKiAgIC4uLiwgVmVyc2lvbmVkUGF0aFJlZmVyZW5jZTxib29sZWFuPlxuICAgKi9cbiAgSXNDb21wb25lbnQsXG5cbiAgLyoqXG4gICAqIE9wZXJhdGlvbjogUHVzaCB0aGUgY29udGVudCB0eXBlIG9udG8gdGhlIHN0YWNrLlxuICAgKlxuICAgKiBGb3JtYXQ6XG4gICAqICAgKENvbnRlbnRUeXBlKVxuICAgKiBPcGVyYW5kIFN0YWNrOlxuICAgKiAgIC4uLiwgVmVyc2lvbmVkUGF0aFJlZmVyZW5jZTxPcGFxdWU+IOKGklxuICAgKiAgIC4uLiwgVmVyc2lvbmVkUGF0aFJlZmVyZW5jZTxPcGFxdWU+LCBWZXJzaW9uZWRQYXRoUmVmZXJlbmNlPENvbnRlbnRUeXBlPlxuICAgKi9cbiAgQ29udGVudFR5cGUsXG5cbiAgLyoqXG4gICAqIE9wZXJhdGlvbjogQ3VycnkgYSBjb21wb25lbnQgZGVmaW5pdGlvbiBmb3IgYSBsYXRlciBpbnZvY2F0aW9uLlxuICAgKlxuICAgKiBGb3JtYXQ6XG4gICAqICAgKEN1cnJ5Q29tcG9uZW50IHRlbXBsYXRlTWV0YTojTG9jYXRvcilcbiAgICogT3BlcmFuZCBTdGFjazpcbiAgICogICAuLi4sIFZlcnNpb25lZFBhdGhSZWZlcmVuY2UsIFtWZXJzaW9uZWRQYXRoUmVmZXJlbmNlIC4uLl0sIEFyZ3VtZW50cyDihpJcbiAgICogICAuLi4sIHsgVmVyc2lvbmVkUGF0aFJlZmVyZW5jZSwgTG9jYXRvciwgQ2FwdHVyZWRBcmd1bWVudHMgfVxuICAgKi9cbiAgQ3VycnlDb21wb25lbnQsXG5cbiAgLyoqXG4gICAqIE9wZXJhdGlvbjogUHVzaCBhbiBhcHByb3ByaWF0ZSBjb21wb25lbnQgbWFuYWdlciBvbnRvIHRoZSBzdGFjay5cbiAgICpcbiAgICogRm9ybWF0OlxuICAgKiAgIChQdXNoQ29tcG9uZW50TWFuYWdlciAjQ29tcG9uZW50U3BlYylcbiAgICogT3BlcmFuZCBTdGFjazpcbiAgICogICAuLi4g4oaSXG4gICAqICAgLi4uLCB7IENvbXBvbmVudERlZmluaXRpb24sIENvbXBvbmVudE1hbmFnZXIgfVxuICAgKi9cbiAgUHVzaENvbXBvbmVudERlZmluaXRpb24sXG5cbiAgLyoqXG4gICAqIE9wZXJhdGlvbjpcbiAgICogICBQdXNoZXMgdGhlIENvbXBvbmVudEluc3RhbmNlIG9udG8gdGhlIHN0YWNrIHRoYXQgaXNcbiAgICogICB1c2VkIGR1cmluZyB0aGUgaW52b2tlLlxuICAgKlxuICAgKiBGb3JtYXQ6XG4gICAqICAgKFB1c2hEeW5hbWljQ29tcG9uZW50SW5zdGFuY2UpXG4gICAqIE9wZXJhbmQgU3RhY2s6XG4gICAqICAgLi4uLCBDb21wb25lbnREZWZpbml0aW9uIOKGklxuICAgKiAgIC4uLiwgeyBDb21wb25lbnREZWZpbml0aW9uLCBtYW5hZ2VyOiBudWxsLCBsYXlvdXQ6IG51bGwsIHN0YXRlOiBudWxsLCBoYW5kbGU6IG51bGwsIHRhYmxlOiBudWxsIH1cbiAgICovXG5cbiAgUHVzaER5bmFtaWNDb21wb25lbnRJbnN0YW5jZSxcblxuICAvKipcbiAgICogT3BlcmF0aW9uOlxuICAgKiAgIFB1c2hlcyBhIGN1cnJpZWQgY29tcG9uZW50IGRlZmluaXRpb24gb24gdG8gdGhlIHN0YWNrXG4gICAqXG4gICAqIEZvcm1hdDpcbiAgICogICAoUHVzaEN1cnJpZWRDb21wb25lbnQpXG4gICAqIE9wZXJhbmQgU3RhY2s6XG4gICAqICAgLi4uLCBWZXJzaW9uZWRQYXRoUmVmZXJlbmNlPE9wYXF1ZT4g4oaSXG4gICAqICAgLi4uLCBDb21wb25lbnREZWZpbml0aW9uXG4gICAqL1xuICBQdXNoQ3VycmllZENvbXBvbmVudCxcblxuICAvKipcbiAgICogT3BlcmF0aW9uOlxuICAgKiAgIFB1c2ggYSByZXNvbHZlZCBjb21wb25lbnQgZGVmaW5pdGlvbiBvbnRvIHRoZSBzdGFja1xuICAgKlxuICAgKiBGb3JtYXQ6XG4gICAqICAgKFJlc29sdmVEeW5hbWljQ29tcG9uZW50IHRlbXBsYXRlTWV0YTojTG9jYXRvcilcbiAgICogT3BlcmFuZCBTdGFjazpcbiAgICogICAuLi4sIFZlcnNpb25lZFBhdGhSZWZlcmVuY2U8T3BhcXVlPiDihpJcbiAgICogICAuLi4sIENvbXBvbmVudERlZmluaXRpb25cbiAgICovXG4gIFJlc29sdmVEeW5hbWljQ29tcG9uZW50LFxuXG4gIC8qKlxuICAgKiBPcGVyYXRpb246IFB1c2ggYSB1c2VyIHJlcHJlc2VudGF0aW9uIG9mIGFyZ3Mgb250byB0aGUgc3RhY2suXG4gICAqXG4gICAqIEZvcm1hdDpcbiAgICogICAoUHVzaEFyZ3MgbmFtZXM6I0FycmF5PCNzdHJpbmc+IHBvc2l0aW9uYWxDb3VudDp1MzIgc3ludGhldGljOiNib29sZWFuKVxuICAgKlxuICAgKiBPcGVyYW5kIFN0YWNrOlxuICAgKiAgIC4uLiwgW1ZlcnNpb25lZFBhdGhSZWZlcmVuY2UgLi4uXSAg4oaSXG4gICAqICAgLi4uLCBbVmVyc2lvbmVkUGF0aFJlZmVyZW5jZSAuLi5dLCBBcmd1bWVudHNcbiAgICpcbiAgICogRGVzY3JpcHRpb246XG4gICAqICAgVGhpcyBhcmd1bWVudHMgb2JqZWN0IGlzIG9ubHkgbmVjZXNzYXJ5IHdoZW4gY2FsbGluZyBpbnRvXG4gICAqICAgdXNlci1zcGVjaWZpZWQgaG9va3MuIEl0IGlzIG1lYW50IHRvIGJlIGltcGxlbWVudGVkIGFzIGFcbiAgICogICB0cmFuc2llbnQgcHJveHkgdGhhdCByZWFkcyBpbnRvIHRoZSBzdGFjayBhcyBuZWVkZWQuXG4gICAqICAgSG9sZGluZyBvbnRvIHRoZSBBcmd1bWVudHMgYWZ0ZXIgdGhlIGNhbGwgaGFzIGNvbXBsZXRlZCBpc1xuICAgKiAgIGlsbGVnYWwuXG4gICAqL1xuICBQdXNoQXJncyxcblxuICAvKipcbiAgICogT3BlcmF0aW9uOiBQdXNoIGVtcHR5IGFyZ3Mgb250byB0aGUgc3RhY2tcbiAgICpcbiAgICogRm9ybWF0OlxuICAgKiAgIChFbXB0eUFyZ3MpXG4gICAqXG4gICAqIE9wZXJhbmRTdGFjazpcbiAgICogICAuLi4g4oaSXG4gICAqICAgLi4uLCBBcmd1bWVudHNcbiAgICovXG4gIFB1c2hFbXB0eUFyZ3MsXG5cbiAgLyoqXG4gICAqIE9wZXJhdGlvbjogUG9wcyBBcmd1bWVudHMgZnJvbSB0aGUgc3RhY2sgYW5kIGNsZWFycyB0aGUgbmV4dCBOIGFyZ3MuXG4gICAqXG4gICAqIEZvcm1hdDpcbiAgICogICAoUG9wQXJncylcbiAgICpcbiAgICogT3BlcmFuZCBTdGFjazpcbiAgICogICAuLi4sIFtWZXJzaW9uZWRQYXRoUmVmZXJlbmNlIC4uLl0sIEFyZ3VtZW50cyAg4oaSXG4gICAqICAgLi4uXG4gICAqXG4gICAqIERlc2NyaXB0aW9uOlxuICAgKiBUaGUgYXJndW1lbnRzIG9iamVjdCBjb250YWlucyB0aGUgaW5mb3JtYXRpb24gb2YgaG93IG1hbnkgdXNlclxuICAgKiBzdXBwbGllZCBhcmdzIHRoZSBjb21wb25lbnQgd2FzIGludm9rZWQgd2l0aC4gVG8gY2xlYXIgdGhlbSBmcm9tXG4gICAqIHRoZSBzdGFjayB3ZSBtdXN0IHBvcCBpdCBmcm9tIHRoZSBzdGFjayBhbmQgY2FsbCBgY2xlYXJgIG9uIGl0XG4gICAqIHRvIHJlbW92ZSB0aGUgYXJndW1lbnQgdmFsdWVzIGZyb20gdGhlIHN0YWNrLlxuICAgKi9cbiAgUG9wQXJncyxcblxuICAvKipcbiAgICogT3BlcmF0aW9uOiAuLi5cbiAgICogRm9ybWF0OlxuICAgKiAgIChQcmVwYXJlQXJncyBzdGF0ZTpyZWdpc3RlcilcbiAgICogT3BlcmFuZCBTdGFjazpcbiAgICogICAuLi4g4oaSXG4gICAqICAgLi4uXG4gICAqL1xuICBQcmVwYXJlQXJncyxcblxuICAvKipcbiAgICogT3BlcmF0aW9uOiBSZXBsYWNlcyBBcmd1bWVudHMgb24gdGhlIHN0YWNrIHdpdGggQ2FwdHVyZWRBcmd1bWVudHNcbiAgICogRm9ybWF0OlxuICAgKiAgIChDYXB0dXJlQXJncylcbiAgICpcbiAgICogT3BlcmFuZCBTdGFjazpcbiAgICogICAuLi4sIEFyZ3VtZW50cyAg4oaSXG4gICAqICAgLi4uLCBDYXB0dXJlZEFyZ3VtZW50c1xuICAgKlxuICAgKiBEZXNjcmlwdGlvbjpcbiAgICogVGhlIEFyZ3VtZW50cyBvYmplY3QgaXMgbXV0YXRlZCBpbiBwbGFjZSBiZWNhdXNlIGl0IGlzIHVzdWFsbHkgY29uc3VtZWQgaW1tZWRpYXRlbHlcbiAgICogYWZ0ZXIgYmVpbmcgcHVzaGVkIG9uIHRvIHRoZSBzdGFjay4gSW4gc29tZSBzaXR1YXRpb25zLCBzdWNoIGFzIHdpdGggY3VycmllZCBjb21wb25lbnRzLFxuICAgKiBpbmZvcm1hdGlvbiBhYm91dCBtb3JlIHRoYW4gb25lIEFyZ3VtZW50IG1heSBuZWVkIHRvIGV4aXN0IG9uIHRoZSBzdGFjayBhdCBvbmNlLiBJbiB0aG9zZVxuICAgKiBjYXNlcywgdGhlIENhcHR1cmVBcmdzIGluc3RydWN0aW9uIHBvcHMgYW4gQXJndW1lbnRzIG9iamVjdCBvZmYgdGhlIHN0YWNrIGFuZCByZXBsYWNlcyBpdFxuICAgKiB3aXRoIHRoZSBpbW11dGFibGUgQ2FwdHVyZWRBcmdzIHNuYXBzaG90LlxuICAgKi9cbiAgQ2FwdHVyZUFyZ3MsXG5cbiAgLyoqXG4gICAqIE9wZXJhdGlvbjogQ3JlYXRlIHRoZSBjb21wb25lbnQgYW5kIHB1c2ggaXQgb250byB0aGUgc3RhY2suXG4gICAqIEZvcm1hdDpcbiAgICogICAoQ3JlYXRlQ29tcG9uZW50IGZsYWdzOnUzMiBzdGF0ZTpyZWdpc3RlcilcbiAgICogICAuLi4g4oaSXG4gICAqICAgLi4uXG4gICAqIERlc2NyaXB0aW9uOlxuICAgKiBPcGVyYW5kIFN0YWNrOlxuICAgKiAgIEZsYWdzOlxuICAgKlxuICAgKiAgICogMGIwMDE6IEhhcyBhIGRlZmF1bHQgYmxvY2tcbiAgICogICAqIDBiMDEwOiBIYXMgYW4gaW52ZXJzZSBibG9ja1xuICAgKi9cbiAgQ3JlYXRlQ29tcG9uZW50LFxuXG4gIC8qKlxuICAgKiBPcGVyYXRpb246IFJlZ2lzdGVyIGEgZGVzdHJ1Y3RvciBmb3IgdGhlIGN1cnJlbnQgY29tcG9uZW50XG4gICAqXG4gICAqIEZvcm1hdDpcbiAgICogICAoUmVnaXN0ZXJDb21wb25lbnREZXN0cnVjdG9yIHN0YXRlOnJlZ2lzdGVyKVxuICAgKiBPcGVyYW5kIFN0YWNrOlxuICAgKiAgIC4uLiDihpJcbiAgICogICAuLi5cbiAgICovXG4gIFJlZ2lzdGVyQ29tcG9uZW50RGVzdHJ1Y3RvcixcblxuICAvKipcbiAgICogT3BlcmF0aW9uOiBQdXNoIGEgbmV3IEVsZW1lbnRPcGVyYXRpb25zIGZvciB0aGUgY3VycmVudCBjb21wb25lbnQuXG4gICAqXG4gICAqIEZvcm1hdDpcbiAgICogICAoUHV0Q29tcG9uZW50T3BlcmF0aW9ucylcbiAgICogT3BlcmFuZCBTdGFjazpcbiAgICogICAuLi4g4oaSXG4gICAqICAgLi4uXG4gICAqL1xuICBQdXRDb21wb25lbnRPcGVyYXRpb25zLFxuXG4gIC8qKlxuICAgKiBPcGVyYXRpb246IFB1c2ggdGhlIGNvbXBvbmVudCdzIGBzZWxmYCBvbnRvIHRoZSBzdGFjay5cbiAgICpcbiAgICogRm9ybWF0OlxuICAgKiAgIChHZXRDb21wb25lbnRTZWxmIHN0YXRlOnJlZ2lzdGVyKVxuICAgKiBPcGVyYW5kIFN0YWNrOlxuICAgKiAgIC4uLiDihpJcbiAgICogICAuLi4sIFZlcnNpb25lZFBhdGhSZWZlcmVuY2VcbiAgICovXG4gIEdldENvbXBvbmVudFNlbGYsXG5cbiAgLyoqXG4gICAqIE9wZXJhdGlvbjogUHVzaCB0aGUgY29tcG9uZW50J3MgYHRhZ05hbWVgIG9udG8gdGhlIHN0YWNrLlxuICAgKlxuICAgKiBGb3JtYXQ6XG4gICAqICAgKEdldENvbXBvbmVudFRhZ05hbWUgc3RhdGU6cmVnaXN0ZXIpXG4gICAqIE9wZXJhbmQgU3RhY2s6XG4gICAqICAgLi4uIOKGklxuICAgKiAgIC4uLiwgT3B0aW9uPHN0cmluZz5cbiAgICovXG4gIEdldENvbXBvbmVudFRhZ05hbWUsXG5cbiAgLyoqXG4gICAqIE9wZXJhdGlvbjogR2V0IHRoZSBjb21wb25lbnQgbGF5b3V0IGZyb20gdGhlIG1hbmFnZXIuXG4gICAqXG4gICAqIEZvcm1hdDpcbiAgICogICAoR2V0Q29tcG9uZW50TGF5b3V0IHN0YXRlOnJlZ2lzdGVyKVxuICAgKiBPcGVyYW5kIFN0YWNrOlxuICAgKiAgIC4uLiDihpJcbiAgICogICAuLi4sIFByb2dyYW1TeW1ib2xUYWJsZSwgSGFuZGxlXG4gICAqL1xuICBHZXRDb21wb25lbnRMYXlvdXQsXG5cbiAgLyoqXG4gICAqIE9wZXJhdGlvbjogUG9wdWxhdGUgdGhlIGV2YWwgbG9va3VwIGlmIG5lY2Vzc2FyeS5cbiAgICpcbiAgICogRm9ybWF0OlxuICAgKiAgIChTZXR1cEZvckV2YWwgc3RhdGU6cmVnaXN0ZXIpXG4gICAqIE9wZXJhbmQgU3RhY2s6XG4gICAqICAgLi4uIOKGklxuICAgKiAgIC4uLlxuICAgKi9cbiAgU2V0dXBGb3JFdmFsLFxuXG4gIC8qKlxuICAgKiBPcGVyYXRpb246IFBvcHVsYXRlIHRoZSBldmFsIGxvb2t1cCBpZiBuZWNlc3NhcnkuXG4gICAqXG4gICAqIEZvcm1hdDpcbiAgICogICAoU2V0dXBGb3JFdmFsIHN0YXRlOnJlZ2lzdGVyKVxuICAgKiBPcGVyYW5kIFN0YWNrOlxuICAgKiAgIC4uLiDihpJcbiAgICogICAuLi5cbiAgICovXG4gIEJpbmRFdmFsU2NvcGUsXG5cbiAgLyoqXG4gICAqIE9wZXJhdGlvbjpcbiAgICogICBQb3B1bGF0ZSB0aGUgc3RhdGUgcmVnaXN0ZXIgd2l0aCB0aGUgbGF5b3V0IGN1cnJlbnRseVxuICAgKiAgIG9uIHRoZSBzdGFjay5cbiAgICpcbiAgICogRm9ybWF0OlxuICAgKiAgIChQb3B1bGF0ZUxheW91dCBzdGF0ZTpyZWdpc3RlcilcbiAgICogT3BlcmFuZCBTdGFjazpcbiAgICogICAuLi4sIFByb2dyYW1TeW1ib2xUYWJsZSwgSGFuZGxlIOKGklxuICAgKiAgIC4uLlxuICAgKi9cbiAgUG9wdWxhdGVMYXlvdXQsXG5cbiAgLyoqXG4gICAqIE9wZXJhdGlvbjogSW52b2tlIHRoZSBsYXlvdXQgcmV0dXJuZWQgYnkgdGhlIG1hbmFnZXIuXG4gICAqXG4gICAqIEZvcm1hdDpcbiAgICogICAoSW52b2tlQ29tcG9uZW50TGF5b3V0IHN0YXRlOnJlZ2lzdGVyKVxuICAgKiBPcGVyYW5kIFN0YWNrOlxuICAgKiAgIC4uLiDihpJcbiAgICogICAuLi5cbiAgICovXG4gIEludm9rZUNvbXBvbmVudExheW91dCxcblxuICAvKipcbiAgICogT3BlcmF0aW9uOiBCZWdpbiBhIG5ldyBjYWNoZSBncm91cFxuICAgKlxuICAgKiBGb3JtYXQ6XG4gICAqICAgKEJlZ2luQ29tcG9uZW50VHJhbnNhY3Rpb24pXG4gICAqIE9wZXJhbmQgU3RhY2s6XG4gICAqICAgLi4uLCBDb21wb25lbnRNYW5hZ2VyPFQ+LCBUIOKGklxuICAgKiAgIC4uLiwgQ29tcG9uZW50TWFuYWdlcjxUPiwgVFxuICAgKi9cbiAgQmVnaW5Db21wb25lbnRUcmFuc2FjdGlvbixcblxuICAvKipcbiAgICogT3BlcmF0aW9uOiBDb21taXQgdGhlIGN1cnJlbnQgY2FjaGUgZ3JvdXBcbiAgICpcbiAgICogRm9ybWF0OlxuICAgKiAgIChDb21taXRDb21wb25lbnRUcmFuc2FjdGlvbilcbiAgICogT3BlcmFuZCBTdGFjazpcbiAgICogICAuLi4g4oaSXG4gICAqICAgLi4uXG4gICAqL1xuICBDb21taXRDb21wb25lbnRUcmFuc2FjdGlvbixcblxuICAvKipcbiAgICogT3BlcmF0aW9uOiBJbnZva2UgZGlkQ3JlYXRlRWxlbWVudCBvbiB0aGUgY3VycmVudCBjb21wb25lbnQgbWFuYWdlclxuICAgKlxuICAgKiBGb3JtYXQ6XG4gICAqICAgKERpZENyZWF0ZUVsZW1lbnQgc3RhdGU6cmVnaXN0ZXIpXG4gICAqIE9wZXJhbmQgU3RhY2s6XG4gICAqICAgLi4uIOKGklxuICAgKiAgIC4uLlxuICAgKi9cbiAgRGlkQ3JlYXRlRWxlbWVudCxcblxuICAvKipcbiAgICogT3BlcmF0aW9uOiBJbnZva2UgZGlkUmVuZGVyTGF5b3V0IG9uIHRoZSBjdXJyZW50IGNvbXBvbmVudCBtYW5hZ2VyXG4gICAqXG4gICAqIEZvcm1hdDpcbiAgICogICAoRGlkUmVuZGVyTGF5b3V0IHN0YXRlOnJlZ2lzdGVyKVxuICAgKiBPcGVyYW5kIFN0YWNrOlxuICAgKiAgIC4uLiwg4oaSXG4gICAqICAgLi4uXG4gICAqL1xuICBEaWRSZW5kZXJMYXlvdXQsXG5cbiAgLy8vIFBBUlRJQUxTXG5cbiAgLyoqXG4gICAqIE9wZXJhdGlvbjogTG9va3VwIGFuZCBpbnZva2UgYSBwYXJ0aWFsIHRlbXBsYXRlLlxuICAgKlxuICAgKiBGb3JtYXQ6XG4gICAqICAgKEludm9rZVBhcnRpYWwgdGVtcGxhdGVNZXRhOiNMb2NhdG9yIHN5bWJvbHM6I0FycmF5PCNzdHJpbmc+IGV2YWxJbmZvOiNBcnJheTxudW1iZXI+KVxuICAgKiBPcGVyYW5kIFN0YWNrOlxuICAgKiAgIC4uLiwgVmVyc2lvbmVkUGF0aFJlZmVyZW5jZTxzdHJpbmc+IOKGklxuICAgKiAgIC4uLlxuICAgKi9cbiAgSW52b2tlUGFydGlhbCxcblxuICAvKipcbiAgICogT3BlcmF0aW9uOlxuICAgKiAgIFJlc29sdmUge3tmb299fSBpbnNpZGUgYSBwYXJ0aWFsLCB3aGljaCBjb3VsZCBiZSBlaXRoZXIgYSBzZWxmLWxvb2t1cFxuICAgKiAgIG9yIGEgbG9jYWwgdmFyaWFibGUgdGhhdCBpcyBpbi1zY29wZSBmb3IgdGhlIGNhbGxlci5cbiAgICpcbiAgICogRm9ybWF0OlxuICAgKiAgIChSZXNvbHZlTWF5YmVMb2NhbCBsb2NhbDojc3RyaW5nKVxuICAgKiBPcGVyYW5kIFN0YWNrOlxuICAgKiAgIC4uLiDihpJcbiAgICogICAuLi4sIFZlcnNpb25lZFBhdGhSZWZlcmVuY2VcbiAgICovXG4gIFJlc29sdmVNYXliZUxvY2FsLFxuXG4gIC8vLyBERUJVR0dFUlxuXG4gIC8qKlxuICAgKiBPcGVyYXRpb246IEFjdGl2YXRlIHRoZSBkZWJ1Z2dlclxuICAgKlxuICAgKiBGb3JtYXQ6XG4gICAqICAgKERlYnVnZ2VyIHN5bWJvbHM6I0FycmF5PHN0cmluZz4gZXZhbEluZm86I0FycmF5PG51bWJlcj4pXG4gICAqIE9wZXJhbmQgU3RhY2s6XG4gICAqICAgLi4uIOKGklxuICAgKiAgIC4uLlxuICAgKi9cbiAgRGVidWdnZXIsXG5cbiAgLyoqIFRoZSBzaXplIG9mIHRoZSBvcGNvZGUgbGlzdCAqL1xuICBTaXplLFxufVxuIl19

@@ -887,3 +887,3 @@ export declare const enum Op {

/**
* Operation: Push the component's `self` onto the stack.
* Operation: Push the component's `tagName` onto the stack.
*

@@ -890,0 +890,0 @@ * Format:

{
"name": "@glimmer/vm",
"version": "0.34.8",
"version": "0.35.0",
"repository": "https://github.com/glimmerjs/glimmer-vm/tree/master/packages/@glimmer/vm",
"dependencies": {
"@glimmer/util": "^0.34.8",
"@glimmer/interfaces": "^0.34.8",
"@glimmer/program": "^0.34.8"
"@glimmer/util": "^0.35.0",
"@glimmer/interfaces": "^0.35.0",
"@glimmer/program": "^0.35.0"
},
"devDependencies": {
"@glimmer/debug": "^0.34.8",
"@glimmer/debug": "^0.35.0",
"@types/qunit": "^2.0.31",

@@ -13,0 +13,0 @@ "typescript": "^2.8.3"

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