ngx-extended-pdf-viewer
Version:
Embedding PDF files in your Angular application. Highly configurable viewer including the toolbar, sidebar, and all the features you're used to.
2 lines • 53.1 kB
JavaScript
export {};
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGRmLXZpZXdlci1hcHBsaWNhdGlvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1leHRlbmRlZC1wZGYtdmlld2VyL3NyYy9saWIvb3B0aW9ucy9wZGYtdmlld2VyLWFwcGxpY2F0aW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJTmd4Q29uc29sZSB9IGZyb20gJy4vbmd4LWNvbnNvbGUnO1xuaW1wb3J0IHsgT3B0aW9uYWxDb250ZW50Q29uZmlnIH0gZnJvbSAnLi9vcHRpb25hbF9jb250ZW50X2NvbmZpZyc7XG5pbXBvcnQgeyBQYXNzd29yZFByb21wdCB9IGZyb20gJy4vcGFzc3dvcmQtcHJvbXB0JztcbmltcG9ydCB7IEFubm90YXRpb25TdG9yYWdlLCBQcmludEFubm90YXRpb25TdG9yYWdlIH0gZnJvbSAnLi9wZGYtYW5ub3RhdGlvbi1zdG9yYWdlJztcbmltcG9ydCB7IElFdmVudEJ1cyB9IGZyb20gJy4vcGRmLWV2ZW50LWJ1cyc7XG5pbXBvcnQgeyBQYWdlVmlld3BvcnQgfSBmcm9tICcuL3BkZi1wYWdlLXZpZXctcG9ydCc7XG5pbXBvcnQgeyBQREZQcmludFNlcnZpY2UgfSBmcm9tICcuL3BkZi1wcmludC1zZXJ2aWNlJztcbmltcG9ydCB7IElQREZWaWV3ZXIgfSBmcm9tICcuL3BkZi12aWV3ZXInO1xuaW1wb3J0IHsgSVBERlZpZXdlckFwcENvbmZpZyB9IGZyb20gJy4vcGRmLXZpZXdlci1hcHAtY29uZmlnJztcbmltcG9ydCB7IFNlcnZpY2VXb3JrZXJPcHRpb25zVHlwZSB9IGZyb20gJy4vc2VydmljZS13b3JrZXItb3B0aW9ucyc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgSVdlYkwxMG4ge1xuICB0cmFuc2xhdGUoZWxlbWVudDogSFRNTEVsZW1lbnQgfCBudWxsKTogUHJvbWlzZTx2b2lkPjtcbiAgZ2V0KGtleTogc3RyaW5nLCBhcmdzOiBhbnksIGZhbGxiYWNrU3RyaW5nOiBzdHJpbmcpOiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgVmlld0hpc3Rvcnkge1xuICBnZXQobmFtZTogc3RyaW5nLCBkZWZhdWx0VmFsdWU/OiBzdHJpbmcpOiBQcm9taXNlPHN0cmluZz47XG59XG5cbi8qKlxuICogUGFnZSB0ZXh0IGNvbnRlbnQuXG4gKi9cbmV4cG9ydCB0eXBlIFRleHRDb250ZW50ID0ge1xuICAvKipcbiAgICogLSBBcnJheSBvZlxuICAgKiB7QGxpbmsgVGV4dEl0ZW0gfSBhbmQge0BsaW5rIFRleHRNYXJrZWRDb250ZW50IH0gb2JqZWN0cy4gVGV4dE1hcmtlZENvbnRlbnRcbiAgICogaXRlbXMgYXJlIGluY2x1ZGVkIHdoZW4gaW5jbHVkZU1hcmtlZENvbnRlbnQgaXMgdHJ1ZS5cbiAgICovXG4gIGl0ZW1zOiBBcnJheTxUZXh0SXRlbSB8IFRleHRNYXJrZWRDb250ZW50Pjtcbn07XG5cbmV4cG9ydCBpbnRlcmZhY2UgUERGRmluZFBhcmFtZXRlcnMge1xuICBjYXNlU2Vuc2l0aXZlPzogYm9vbGVhbjtcbiAgZW50aXJlV29yZD86IGJvb2xlYW47XG4gIGZpbmRQcmV2aW91czogYm9vbGVhbjtcbiAgaGlnaGxpZ2h0QWxsPzogYm9vbGVhbjtcbiAgbWF0Y2hEaWFjcml0aWNzPzogYm9vbGVhbjtcbiAgZmluZE11bHRpcGxlPzogYm9vbGVhbjtcbiAgbWF0Y2hSZWdFeHA/OiBib29sZWFuO1xuICBxdWVyeTogc3RyaW5nIHwgc3RyaW5nW10gfCBSZWdFeHA7XG4gIHNvdXJjZTogYW55O1xuICB0eXBlOiAnaGlnaGxpZ2h0YWxsY2hhbmdlJyB8ICdmaW5kJyB8ICdhZ2FpbicgfCAnZmluZGFnYWluJzsgLy8gIHwgJ2ZpbmRiYXJoaWdobGlnaHQnIHwgJ3Njcm9sbCcsXG4gIGRvbnRTY3JvbGxJbnRvVmlldz86IGJvb2xlYW47XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgUERGRmluZENvbnRyb2xsZXIge1xuICAvKipcbiAgICogQHBhcmFtIHtQREZGaW5kQ29udHJvbGxlck9wdGlvbnN9IG9wdGlvbnNcbiAgICovXG4gIF9saW5rU2VydmljZTogYW55OyAvLyBpbXBvcnQoXCIuL2ludGVyZmFjZXNcIikuSVBERkxpbmtTZXJ2aWNlO1xuICBfZXZlbnRCdXM6IGFueTsgLy8gaW1wb3J0KFwiLi9ldmVudF91dGlsc1wiKS5FdmVudEJ1cztcbiAgX3BhZ2VWaWV3TW9kZTogYW55O1xuICAvKipcbiAgICogQ2FsbGJhY2sgdXNlZCB0byBjaGVjayBpZiBhIGBwYWdlTnVtYmVyYCBpcyBjdXJyZW50bHkgdmlzaWJsZS5cbiAgICogQHR5cGUge2Z1bmN0aW9ufVxuICAgKi9cbiAgb25Jc1BhZ2VWaXNpYmxlOiBGdW5jdGlvbjtcbiAgZ2V0IGhpZ2hsaWdodE1hdGNoZXMoKTogYm9vbGVhbiB8IHVuZGVmaW5lZDtcbiAgZ2V0IHBhZ2VNYXRjaGVzKCk6IGFueVtdIHwgdW5kZWZpbmVkO1xuICBnZXQgcGFnZU1hdGNoZXNMZW5ndGgoKTogYW55W10gfCB1bmRlZmluZWQ7XG4gIGdldCBzZWxlY3RlZCgpOlxuICAgIHwge1xuICAgICAgICBwYWdlSWR4OiBudW1iZXI7XG4gICAgICAgIG1hdGNoSWR4OiBudW1iZXI7XG4gICAgICB9XG4gICAgfCB1bmRlZmluZWQ7XG4gIGdldCBzdGF0ZSgpOiBQREZGaW5kUGFyYW1ldGVycyB8IHVuZGVmaW5lZDtcbiAgLyoqXG4gICAqIFNldCBhIHJlZmVyZW5jZSB0byB0aGUgUERGIGRvY3VtZW50IGluIG9yZGVyIHRvIHNlYXJjaCBpdC5cbiAgICogTm90ZSB0aGF0IHNlYXJjaGluZyBpcyBub3QgcG9zc2libGUgaWYgdGhpcyBtZXRob2QgaXMgbm90IGNhbGxlZC5cbiAgICpcbiAgICogQHBhcmFtIHtQREZEb2N1bWVudFByb3h5fSBwZGZEb2N1bWVudCAtIFRoZSBQREYgZG9jdW1lbnQgdG8gc2VhcmNoLlxuICAgKi9cbiAgc2V0RG9jdW1lbnQocGRmRG9jdW1lbnQ6IFBERkRvY3VtZW50UHJveHkpOiB2b2lkO1xuICBfcGRmRG9jdW1lbnQ6IFBERkRvY3VtZW50UHJveHkgfCBudWxsIHwgdW5kZWZpbmVkO1xuICBfZGlydHlNYXRjaDogYm9vbGVhbiB8IHVuZGVmaW5lZDtcbiAgX2ZpbmRUaW1lb3V0OiBhbnk7XG4gIF9oaWdobGlnaHRNYXRjaGVzOiBib29sZWFuIHwgdW5kZWZpbmVkO1xuICAvKipcbiAgICogQHR5cGVkZWYge09iamVjdH0gUERGRmluZENvbnRyb2xsZXJTY3JvbGxNYXRjaEludG9WaWV3UGFyYW1zXG4gICAqIEBwcm9wZXJ0eSB7SFRNTEVsZW1lbnR9IGVsZW1lbnRcbiAgICogQHByb3BlcnR5IHtudW1iZXJ9IHNlbGVjdGVkTGVmdFxuICAgKiBAcHJvcGVydHkge251bWJlcn0gcGFnZUluZGV4XG4gICAqIEBwcm9wZXJ0eSB7bnVtYmVyfSBtYXRjaEluZGV4XG4gICAqL1xuICAvKipcbiAgICogU2Nyb2xsIHRoZSBjdXJyZW50IG1hdGNoIGludG8gdmlldy5cbiAgICogQHBhcmFtIHtQREZGaW5kQ29udHJvbGxlclNjcm9sbE1hdGNoSW50b1ZpZXdQYXJhbXN9XG4gICAqL1xuICBzY3JvbGxNYXRjaEludG9WaWV3KHtcbiAgICBlbGVtZW50LFxuICAgIHNlbGVjdGVkTGVmdCxcbiAgICBwYWdlSW5kZXgsXG4gICAgbWF0Y2hJbmRleCxcbiAgfToge1xuICAgIGVsZW1lbnQ6IEhUTUxFbGVtZW50O1xuICAgIHNlbGVjdGVkTGVmdDogbnVtYmVyO1xuICAgIHBhZ2VJbmRleDogbnVtYmVyO1xuICAgIG1hdGNoSW5kZXg6IG51bWJlcjtcbiAgfSk6IHZvaWQ7XG4gIF9zY3JvbGxNYXRjaGVzOiBib29sZWFuIHwgdW5kZWZpbmVkO1xuICBfcGFnZU1hdGNoZXM6IGFueVtdIHwgdW5kZWZpbmVkO1xuICBfcGFnZU1hdGNoZXNMZW5ndGg6IGFueVtdIHwgdW5kZWZpbmVkO1xuICBfc2VsZWN0ZWQ6XG4gICAgfCB7XG4gICAgICAgIHBhZ2VJZHg6IG51bWJlcjtcbiAgICAgICAgbWF0Y2hJZHg6IG51bWJlcjtcbiAgICAgIH1cbiAgICB8IHVuZGVmaW5lZDtcbiAgX29mZnNldDpcbiAgICB8IHtcbiAgICAgICAgcGFnZUlkeDogbnVsbDtcbiAgICAgICAgbWF0Y2hJZHg6IG51bGw7XG4gICAgICAgIHdyYXBwZWQ6IGJvb2xlYW47XG4gICAgICB9XG4gICAgfCB1bmRlZmluZWQ7XG4gIF9leHRyYWN0VGV4dFByb21pc2VzOiBhbnlbXSB8IHVuZGVmaW5lZDtcbiAgX3BhZ2VDb250ZW50czogYW55W10gfCB1bmRlZmluZWQ7XG4gIF9wYWdlRGlmZnM6IGFueVtdIHwgdW5kZWZpbmVkO1xuICBfaGFzRGlhY3JpdGljczogYW55W10gfCB1bmRlZmluZWQ7XG4gIF9tYXRjaGVzQ291bnRUb3RhbDogbnVtYmVyIHwgdW5kZWZpbmVkO1xuICBfcGFnZXNUb1NlYXJjaDogbnVtYmVyIHwgbnVsbCB8IHVuZGVmaW5lZDtcbiAgX3BlbmRpbmdGaW5kTWF0Y2hlczogU2V0PGFueT4gfCB1bmRlZmluZWQ7XG4gIF9yZXN1bWVQYWdlSWR4OiBhbnk7XG4gIF9maXJzdFBhZ2VDYXBhYmlsaXR5OiBhbnk7XG4gIF9yYXdRdWVyeTogYW55O1xuICBfY2FsY3VsYXRlUmVnRXhwTWF0Y2gocXVlcnk6IGFueSwgZW50aXJlV29yZDogYW55LCBwYWdlSW5kZXg6IGFueSwgcGFnZUNvbnRlbnQ6IGFueSk6IHZvaWQ7XG4gIF9jb252ZXJ0VG9SZWdFeHBTdHJpbmcocXVlcnk6IGFueSwgaGFzRGlhY3JpdGljczogYW55KTogYW55W107XG4gIF9jYWxjdWxhdGVNYXRjaChwYWdlSW5kZXg6IGFueSk6IHZvaWQ7XG5cbiAgbmd4RmluZChQREZGaW5kUGFyYW1ldGVyczogUERGRmluZFBhcmFtZXRlcnMpOiBBcnJheTxQcm9taXNlPGFueT4+O1xuXG4gIG5neEZpbmROZXh0KCk6IHZvaWQ7XG4gIG5neEZpbmRQcmV2aW91cygpOiB2b2lkO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIE1ldGFkYXRhIHtcbiAgZ2V0UmF3KCk6IGFueTtcbiAgZ2V0KG5hbWU6IGFueSk6IGFueTtcbiAgZ2V0QWxsKCk6IGFueTtcbiAgaGFzKG5hbWU6IGFueSk6IGFueTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBNZXNzYWdlSGFuZGxlciB7XG4gIHNvdXJjZU5hbWU6IGFueTtcbiAgdGFyZ2V0TmFtZTogYW55O1xuICBjb21PYmo6IGFueTtcbiAgY2FsbGJhY2tJZDogbnVtYmVyO1xuICBzdHJlYW1JZDogbnVtYmVyO1xuICBzdHJlYW1TaW5rczogYW55O1xuICBzdHJlYW1Db250cm9sbGVyczogYW55O1xuICBjYWxsYmFja0NhcGFiaWxpdGllczogYW55O1xuICBhY3Rpb25IYW5kbGVyOiBhbnk7XG4gIG9uKGFjdGlvbk5hbWU6IGFueSwgaGFuZGxlcjogYW55KTogdm9pZDtcbiAgLyoqXG4gICAqIFNlbmRzIGEgbWVzc2FnZSB0byB0aGUgY29tT2JqIHRvIGludm9rZSB0aGUgYWN0aW9uIHdpdGggdGhlIHN1cHBsaWVkIGRhdGEuXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBhY3Rpb25OYW1lIC0gQWN0aW9uIHRvIGNhbGwuXG4gICAqIEBwYXJhbSB7SlNPTn0gZGF0YSAtIEpTT04gZGF0YSB0byBzZW5kLlxuICAgKiBAcGFyYW0ge0FycmF5fSBbdHJhbnNmZXJzXSAtIExpc3Qgb2YgdHJhbnNmZXJzL0FycmF5QnVmZmVycy5cbiAgICovXG4gIHNlbmQoYWN0aW9uTmFtZTogc3RyaW5nLCBkYXRhOiBKU09OLCB0cmFuc2ZlcnM6IGFueVtdIHwgdW5kZWZpbmVkKTogdm9pZDtcbiAgLyoqXG4gICAqIFNlbmRzIGEgbWVzc2FnZSB0byB0aGUgY29tT2JqIHRvIGludm9rZSB0aGUgYWN0aW9uIHdpdGggdGhlIHN1cHBsaWVkIGRhdGEuXG4gICAqIEV4cGVjdHMgdGhhdCB0aGUgb3RoZXIgc2lkZSB3aWxsIGNhbGxiYWNrIHdpdGggdGhlIHJlc3BvbnNlLlxuICAgKiBAcGFyYW0ge3N0cmluZ30gYWN0aW9uTmFtZSAtIEFjdGlvbiB0byBjYWxsLlxuICAgKiBAcGFyYW0ge0pTT059IGRhdGEgLSBKU09OIGRhdGEgdG8gc2VuZC5cbiAgICogQHBhcmFtIHtBcnJheX0gW3RyYW5zZmVyc10gLSBMaXN0IG9mIHRyYW5zZmVycy9BcnJheUJ1ZmZlcnMuXG4gICAqIEByZXR1cm5zIHtQcm9taXNlfSBQcm9taXNlIHRvIGJlIHJlc29sdmVkIHdpdGggcmVzcG9uc2UgZGF0YS5cbiAgICovXG4gIHNlbmRXaXRoUHJvbWlzZShhY3Rpb25OYW1lOiBzdHJpbmcsIGRhdGE6IEpTT04sIHRyYW5zZmVyczogYW55W10gfCB1bmRlZmluZWQpOiBQcm9taXNlPGFueT47XG4gIC8qKlxuICAgKiBTZW5kcyBhIG1lc3NhZ2UgdG8gdGhlIGNvbU9iaiB0byBpbnZva2UgdGhlIGFjdGlvbiB3aXRoIHRoZSBzdXBwbGllZCBkYXRhLlxuICAgKiBFeHBlY3QgdGhhdCB0aGUgb3RoZXIgc2lkZSB3aWxsIGNhbGxiYWNrIHRvIHNpZ25hbCAnc3RhcnRfY29tcGxldGUnLlxuICAgKiBAcGFyYW0ge3N0cmluZ30gYWN0aW9uTmFtZSAtIEFjdGlvbiB0byBjYWxsLlxuICAgKiBAcGFyYW0ge0pTT059IGRhdGEgLSBKU09OIGRhdGEgdG8gc2VuZC5cbiAgICogQHBhcmFtIHtPYmplY3R9IHF1ZXVlaW5nU3RyYXRlZ3kgLSBTdHJhdGVneSB0byBzaWduYWwgYmFja3ByZXNzdXJlIGJhc2VkIG9uXG4gICAqICAgICAgICAgICAgICAgICBpbnRlcm5hbCBxdWV1ZS5cbiAgICogQHBhcmFtIHtBcnJheX0gW3RyYW5zZmVyc10gLSBMaXN0IG9mIHRyYW5zZmVycy9BcnJheUJ1ZmZlcnMuXG4gICAqIEByZXR1cm5zIHtSZWFkYWJsZVN0cmVhbX0gUmVhZGFibGVTdHJlYW0gdG8gcmVhZCBkYXRhIGluIGNodW5rcy5cbiAgICovXG4gIHNlbmRXaXRoU3RyZWFtKGFjdGlvbk5hbWU6IHN0cmluZywgZGF0YTogSlNPTiwgcXVldWVpbmdTdHJhdGVneTogT2JqZWN0LCB0cmFuc2ZlcnM6IGFueVtdIHwgdW5kZWZpbmVkKTogUmVhZGFibGVTdHJlYW07XG5cbiAgZGVzdHJveSgpOiB2b2lkO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFBERldvcmtlciB7XG4gIG5hbWU6IGFueTtcbiAgZGVzdHJveWVkOiBib29sZWFuO1xuICB2ZXJib3NpdHk6IG51bWJlcjtcblxuICAvKipcbiAgICogUHJvbWlzZSBmb3Igd29ya2VyIGluaXRpYWxpemF0aW9uIGNvbXBsZXRpb24uXG4gICAqIEB0eXBlIHtQcm9taXNlPHZvaWQ+fVxuICAgKi9cbiAgZ2V0IHByb21pc2UoKTogUHJvbWlzZTx2b2lkPjtcbiAgLyoqXG4gICAqIFRoZSBjdXJyZW50IGB3b3JrZXJQb3J0YCwgd2hlbiBpdCBleGlzdHMuXG4gICAqIEB0eXBlIHtXb3JrZXJ9XG4gICAqL1xuICBnZXQgcG9ydCgpOiBXb3JrZXI7XG4gIC8qKlxuICAgKiBUaGUgY3VycmVudCBNZXNzYWdlSGFuZGxlci1pbnN0YW5jZS5cbiAgICogQHR5cGUge01lc3NhZ2VIYW5kbGVyfVxuICAgKi9cbiAgZ2V0IG1lc3NhZ2VIYW5kbGVyKCk6IE1lc3NhZ2VIYW5kbGVyO1xuICBfaW5pdGlhbGl6ZUZyb21Qb3J0KHBvcnQ6IGFueSk6IHZvaWQ7XG4gIF9pbml0aWFsaXplKCk6IHZvaWQ7XG4gIF9zZXR1cEZha2VXb3JrZXIoKTogdm9pZDtcbiAgLyoqXG4gICAqIERlc3Ryb3lzIHRoZSB3b3JrZXIgaW5zdGFuY2UuXG4gICAqL1xuICBkZXN0cm95KCk6IHZvaWQ7XG59XG5cbi8qKlxuICogRG9jdW1lbnQgaW5pdGlhbGl6YXRpb24gLyBsb2FkaW5nIHBhcmFtZXRlcnMgb2JqZWN0LlxuICovXG5leHBvcnQgdHlwZSBEb2N1bWVudEluaXRQYXJhbWV0ZXJzID0ge1xuICAvKipcbiAgICogLSBUaGUgVVJMIG9mIHRoZSBQREYuXG4gICAqL1xuICB1cmw6IHN0cmluZyB8IFVSTCB8IHVuZGVmaW5lZDtcbiAgLyoqXG4gICAqIC0gQmluYXJ5IFBERiBkYXRhLlxuICAgKiBVc2UgVHlwZWRBcnJheXMgKFVpbnQ4QXJyYXkpIHRvIGltcHJvdmUgdGhlIG1lbW9yeSB1c2FnZS4gSWYgUERGIGRhdGEgaXNcbiAgICogQkFTRTY0LWVuY29kZWQsIHVzZSBgYXRvYigpYCB0byBjb252ZXJ0IGl0IHRvIGEgYmluYXJ5IHN0cmluZyBmaXJzdC5cbiAgICpcbiAgICogTk9URTogSWYgVHlwZWRBcnJheXMgYXJlIHVzZWQgdGhleSB3aWxsIGdlbmVyYWxseSBiZSB0cmFuc2ZlcnJlZCB0byB0aGVcbiAgICogd29ya2VyLXRocmVhZC4gVGhpcyB3aWxsIGhlbHAgcmVkdWNlIG1haW4tdGhyZWFkIG1lbW9yeSB1c2FnZSwgaG93ZXZlclxuICAgKiBpdCB3aWxsIHRha2Ugb3duZXJzaGlwIG9mIHRoZSBUeXBlZEFycmF5cy5cbiAgICovXG4gIGRhdGE6IEFycmF5QnVmZmVyIHwgQXJyYXlCdWZmZXJWaWV3IHwgdW5kZWZpbmVkO1xuICAvKipcbiAgICogLSBCYXNpYyBhdXRoZW50aWNhdGlvbiBoZWFkZXJzLlxuICAgKi9cbiAgaHR0cEhlYWRlcnM6IE9iamVjdCB8IHVuZGVmaW5lZDtcbiAgLyoqXG4gICAqIC0gSW5kaWNhdGVzIHdoZXRoZXIgb3Igbm90XG4gICAqIGNyb3NzLXNpdGUgQWNjZXNzLUNvbnRyb2wgcmVxdWVzdHMgc2hvdWxkIGJlIG1hZGUgdXNpbmcgY3JlZGVudGlhbHMgc3VjaFxuICAgKiBhcyBjb29raWVzIG9yIGF1dGhvcml6YXRpb24gaGVhZGVycy4gVGhlIGRlZmF1bHQgaXMgYGZhbHNlYC5cbiAgICovXG4gIHdpdGhDcmVkZW50aWFsczogYm9vbGVhbiB8IHVuZGVmaW5lZDtcbiAgLyoqXG4gICAqIC0gRm9yIGRlY3J5cHRpbmcgcGFzc3dvcmQtcHJvdGVjdGVkIFBERnMuXG4gICAqL1xuICBwYXNzd29yZDogc3RyaW5nIHwgdW5kZWZpbmVkO1xuICAvKipcbiAgICogLSBUaGUgUERGIGZpbGUgbGVuZ3RoLiBJdCdzIHVzZWQgZm9yIHByb2dyZXNzXG4gICAqIHJlcG9ydHMgYW5kIHJhbmdlIHJlcXVlc3RzIG9wZXJhdGlvbnMuXG4gICAqL1xuICBsZW5ndGg6IG51bWJlciB8IHVuZGVmaW5lZDtcbiAgLyoqXG4gICAqIC0gQWxsb3dzIGZvciB1c2luZyBhIGN1c3RvbSByYW5nZVxuICAgKiB0cmFuc3BvcnQgaW1wbGVtZW50YXRpb24uXG4gICAqL1xuICByYW5nZTogYW55IHwgdW5kZWZpbmVkO1xuICAvKipcbiAgICogLSBTcGVjaWZ5IG1heGltdW0gbnVtYmVyIG9mIGJ5dGVzIGZldGNoZWRcbiAgICogcGVyIHJhbmdlIHJlcXVlc3QuIFRoZSBkZWZhdWx0IHZhbHVlIGlzIHtAbGluayBERUZBVUxUX1JBTkdFX0NIVU5LX1NJWkUgfS5cbiAgICovXG4gIHJhbmdlQ2h1bmtTaXplOiBudW1iZXIgfCB1bmRlZmluZWQ7XG4gIC8qKlxuICAgKiAtIFRoZSB3b3JrZXIgdGhhdCB3aWxsIGJlIHVzZWQgZm9yIGxvYWRpbmcgYW5kXG4gICAqIHBhcnNpbmcgdGhlIFBERiBkYXRhLlxuICAgKi9cbiAgd29ya2VyOiBQREZXb3JrZXIgfCB1bmRlZmluZWQ7XG4gIC8qKlxuICAgKiAtIENvbnRyb2xzIHRoZSBsb2dnaW5nIGxldmVsOyB0aGUgY29uc3RhbnRzXG4gICAqIGZyb20ge0BsaW5rIFZlcmJvc2l0eUxldmVsIH0gc2hvdWxkIGJlIHVzZWQuXG4gICAqL1xuICB2ZXJib3NpdHk6IG51bWJlciB8IHVuZGVmaW5lZDtcbiAgLyoqXG4gICAqIC0gVGhlIGJhc2UgVVJMIG9mIHRoZSBkb2N1bWVudCwgdXNlZCB3aGVuXG4gICAqIGF0dGVtcHRpbmcgdG8gcmVjb3ZlciB2YWxpZCBhYnNvbHV0ZSBVUkxzIGZvciBhbm5vdGF0aW9ucywgYW5kIG91dGxpbmVcbiAgICogaXRlbXMsIHRoYXQgKGluY29ycmVjdGx5KSBvbmx5IHNwZWNpZnkgcmVsYXRpdmUgVVJMcy5cbiAgICovXG4gIGRvY0Jhc2VVcmw6IHN0cmluZyB8IHVuZGVmaW5lZDtcbiAgLyoqXG4gICAqIC0gVGhlIFVSTCB3aGVyZSB0aGUgcHJlZGVmaW5lZCBBZG9iZSBDTWFwcyBhcmVcbiAgICogbG9jYXRlZC4gSW5jbHVkZSB0aGUgdHJhaWxpbmcgc2xhc2guXG4gICAqL1xuICBjTWFwVXJsOiBzdHJpbmcgfCB1bmRlZmluZWQ7XG4gIC8qKlxuICAgKiAtIFNwZWNpZmllcyBpZiB0aGUgQWRvYmUgQ01hcHMgYXJlIGJpbmFyeVxuICAgKiBwYWNrZWQgb3Igbm90LiBUaGUgZGVmYXVsdCB2YWx1ZSBpcyBgdHJ1ZWAuXG4gICAqL1xuICBjTWFwUGFja2VkOiBib29sZWFuIHwgdW5kZWZpbmVkO1xuICAvKipcbiAgICogLSBUaGUgZmFjdG9yeSB0aGF0IHdpbGwgYmUgdXNlZCB3aGVuXG4gICAqIHJlYWRpbmcgYnVpbHQtaW4gQ01hcCBmaWxlcy4gUHJvdmlkaW5nIGEgY3VzdG9tIGZhY3RvcnkgaXMgdXNlZnVsIGZvclxuICAgKiBlbnZpcm9ubWVudHMgd2l0aG91dCBGZXRjaCBBUEkgb3IgYFhNTEh0dHBSZXF1ZXN0YCBzdXBwb3J0LCBzdWNoIGFzXG4gICAqIE5vZGUuanMuIFRoZSBkZWZhdWx0IHZhbHVlIGlzIHtET01DTWFwUmVhZGVyRmFjdG9yeX0uXG4gICAqL1xuICBDTWFwUmVhZGVyRmFjdG9yeTogT2JqZWN0IHwgdW5kZWZpbmVkO1xuICAvKipcbiAgICogLSBXaGVuIGB0cnVlYCwgZm9udHMgdGhhdCBhcmVuJ3RcbiAgICogZW1iZWRkZWQgaW4gdGhlIFBERiBkb2N1bWVudCB3aWxsIGZhbGxiYWNrIHRvIGEgc3lzdGVtIGZvbnQuXG4gICAqIFRoZSBkZWZhdWx0IHZhbHVlIGlzIGB0cnVlYCBpbiB3ZWIgZW52aXJvbm1lbnRzIGFuZCBgZmFsc2VgIGluIE5vZGUuanM7XG4gICAqIHVubGVzcyBgZGlzYWJsZUZvbnRGYWNlID09PSB0cnVlYCBpbiB3aGljaCBjYXNlIHRoaXMgZGVmYXVsdHMgdG8gYGZhbHNlYFxuICAgKiByZWdhcmRsZXNzIG9mIHRoZSBlbnZpcm9ubWVudCAodG8gcHJldmVudCBjb21wbGV0ZWx5IGJyb2tlbiBmb250cykuXG4gICAqL1xuICB1c2VTeXN0ZW1Gb250czogYm9vbGVhbiB8IHVuZGVmaW5lZDtcbiAgLyoqXG4gICAqIC0gVGhlIFVSTCB3aGVyZSB0aGUgc3RhbmRhcmQgZm9udFxuICAgKiBmaWxlcyBhcmUgbG9jYXRlZC4gSW5jbHVkZSB0aGUgdHJhaWxpbmcgc2xhc2guXG4gICAqL1xuICBzdGFuZGFyZEZvbnREYXRhVXJsOiBzdHJpbmcgfCB1bmRlZmluZWQ7XG4gIC8qKlxuICAgKiAtIFRoZSBmYWN0b3J5IHRoYXQgd2lsbCBiZSB1c2VkXG4gICAqIHdoZW4gcmVhZGluZyB0aGUgc3RhbmRhcmQgZm9udCBmaWxlcy4gUHJvdmlkaW5nIGEgY3VzdG9tIGZhY3RvcnkgaXMgdXNlZnVsXG4gICAqIGZvciBlbnZpcm9ubWVudHMgd2l0aG91dCBGZXRjaCBBUEkgb3IgYFhNTEh0dHBSZXF1ZXN0YCBzdXBwb3J0LCBzdWNoIGFzXG4gICAqIE5vZGUuanMuIFRoZSBkZWZhdWx0IHZhbHVlIGlzIHtET01TdGFuZGFyZEZvbnREYXRhRmFjdG9yeX0uXG4gICAqL1xuICBTdGFuZGFyZEZvbnREYXRhRmFjdG9yeTogT2JqZWN0IHwgdW5kZWZpbmVkO1xuICAvKipcbiAgICogLSBFbmFibGUgdXNpbmcgdGhlIEZldGNoIEFQSSBpbiB0aGVcbiAgICogd29ya2VyLXRocmVhZCB3aGVuIHJlYWRpbmcgQ01hcCBhbmQgc3RhbmRhcmQgZm9udCBmaWxlcy4gV2hlbiBgdHJ1ZWAsXG4gICAqIHRoZSBgQ01hcFJlYWRlckZhY3RvcnlgIGFuZCBgU3RhbmRhcmRGb250RGF0YUZhY3RvcnlgIG9wdGlvbnMgYXJlIGlnbm9yZWQuXG4gICAqIFRoZSBkZWZhdWx0IHZhbHVlIGlzIGB0cnVlYCBpbiB3ZWIgZW52aXJvbm1lbnRzIGFuZCBgZmFsc2VgIGluIE5vZGUuanMuXG4gICAqL1xuICB1c2VXb3JrZXJGZXRjaDogYm9vbGVhbiB8IHVuZGVmaW5lZDtcbiAgLyoqXG4gICAqIC0gUmVqZWN0IGNlcnRhaW4gcHJvbWlzZXMsIGUuZy5cbiAgICogYGdldE9wZXJhdG9yTGlzdGAsIGBnZXRUZXh0Q29udGVudGAsIGFuZCBgUmVuZGVyVGFza2AsIHdoZW4gdGhlIGFzc29jaWF0ZWRcbiAgICogUERGIGRhdGEgY2Fubm90IGJlIHN1Y2Nlc3NmdWxseSBwYXJzZWQsIGluc3RlYWQgb2YgYXR0ZW1wdGluZyB0byByZWNvdmVyXG4gICAqIHdoYXRldmVyIHBvc3NpYmxlIG9mIHRoZSBkYXRhLiBUaGUgZGVmYXVsdCB2YWx1ZSBpcyBgZmFsc2VgLlxuICAgKi9cbiAgc3RvcEF0RXJyb3JzOiBib29sZWFuIHwgdW5kZWZpbmVkO1xuICAvKipcbiAgICogLSBUaGUgbWF4aW11bSBhbGxvd2VkIGltYWdlIHNpemUgaW4gdG90YWxcbiAgICogcGl4ZWxzLCBpLmUuIHdpZHRoICogaGVpZ2h0LiBJbWFnZXMgYWJvdmUgdGhpcyB2YWx1ZSB3aWxsIG5vdCBiZSByZW5kZXJlZC5cbiAgICogVXNlIC0xIGZvciBubyBsaW1pdCwgd2hpY2ggaXMgYWxzbyB0aGUgZGVmYXVsdCB2YWx1ZS5cbiAgICovXG4gIG1heEltYWdlU2l6ZTogbnVtYmVyIHwgdW5kZWZpbmVkO1xuICAvKipcbiAgICogLSBEZXRlcm1pbmVzIGlmIHdlIGNhbiBldmFsdWF0ZSBzdHJpbmdzXG4gICAqIGFzIEphdmFTY3JpcHQuIFByaW1hcmlseSB1c2VkIHRvIGltcHJvdmUgcGVyZm9ybWFuY2Ugb2YgZm9udCByZW5kZXJpbmcsIGFuZFxuICAgKiB3aGVuIHBhcnNpbmcgUERGIGZ1bmN0aW9ucy4gVGhlIGRlZmF1bHQgdmFsdWUgaXMgYHRydWVgLlxuICAgKi9cbiAgaXNFdmFsU3VwcG9ydGVkOiBib29sZWFuIHwgdW5kZWZpbmVkO1xuICAvKipcbiAgICogLSBEZXRlcm1pbmVzIGlmIHdlIGNhbiB1c2VcbiAgICogYE9mZnNjcmVlbkNhbnZhc2AgaW4gdGhlIHdvcmtlci4gUHJpbWFyaWx5IHVzZWQgdG8gaW1wcm92ZSBwZXJmb3JtYW5jZSBvZlxuICAgKiBpbWFnZSBjb252ZXJzaW9uL3JlbmRlcmluZy5cbiAgICogVGhlIGRlZmF1bHQgdmFsdWUgaXMgYHRydWVgIGluIHdlYiBlbnZpcm9ubWVudHMgYW5kIGBmYWxzZWAgaW4gTm9kZS5qcy5cbiAgICovXG4gIGlzT2Zmc2NyZWVuQ2FudmFzU3VwcG9ydGVkOiBib29sZWFuIHwgdW5kZWZpbmVkO1xuICAvKipcbiAgICogLSBCeSBkZWZhdWx0IGZvbnRzIGFyZSBjb252ZXJ0ZWQgdG9cbiAgICogT3BlblR5cGUgZm9udHMgYW5kIGxvYWRlZCB2aWEgdGhlIEZvbnQgTG9hZGluZyBBUEkgb3IgYEBmb250LWZhY2VgIHJ1bGVzLlxuICAgKiBJZiBkaXNhYmxlZCwgZm9udHMgd2lsbCBiZSByZW5kZXJlZCB1c2luZyBhIGJ1aWx0LWluIGZvbnQgcmVuZGVyZXIgdGhhdFxuICAgKiBjb25zdHJ1Y3RzIHRoZSBnbHlwaHMgd2l0aCBwcmltaXRpdmUgcGF0aCBjb21tYW5kcy5cbiAgICogVGhlIGRlZmF1bHQgdmFsdWUgaXMgYGZhbHNlYCBpbiB3ZWIgZW52aXJvbm1lbnRzIGFuZCBgdHJ1ZWAgaW4gTm9kZS5qcy5cbiAgICovXG4gIGRpc2FibGVGb250RmFjZTogYm9vbGVhbiB8IHVuZGVmaW5lZDtcbiAgLyoqXG4gICAqIC0gSW5jbHVkZSBhZGRpdGlvbmFsIHByb3BlcnRpZXMsXG4gICAqIHdoaWNoIGFyZSB1bnVzZWQgZHVyaW5nIHJlbmRlcmluZyBvZiBQREYgZG9jdW1lbnRzLCB3aGVuIGV4cG9ydGluZyB0aGVcbiAgICogcGFyc2VkIGZvbnQgZGF0YSBmcm9tIHRoZSB3b3JrZXItdGhyZWFkLiBUaGlzIG1heSBiZSB1c2VmdWwgZm9yIGRlYnVnZ2luZ1xuICAgKiBwdXJwb3NlcyAoYW5kIGJhY2t3YXJkcyBjb21wYXRpYmlsaXR5KSwgYnV0IG5vdGUgdGhhdCBpdCB3aWxsIGxlYWQgdG9cbiAgICogaW5jcmVhc2VkIG1lbW9yeSB1c2FnZS4gVGhlIGRlZmF1bHQgdmFsdWUgaXMgYGZhbHNlYC5cbiAgICovXG4gIGZvbnRFeHRyYVByb3BlcnRpZXM6IGJvb2xlYW4gfCB1bmRlZmluZWQ7XG4gIC8qKlxuICAgKiAtIFJlbmRlciBYZmEgZm9ybXMgaWYgYW55LlxuICAgKiBUaGUgZGVmYXVsdCB2YWx1ZSBpcyBgZmFsc2VgLlxuICAgKi9cbiAgZW5hYmxlWGZhOiBib29sZWFuIHwgdW5kZWZpbmVkO1xuICAvKipcbiAgICogLSBTcGVjaWZ5IGFuIGV4cGxpY2l0IGRvY3VtZW50XG4gICAqIGNvbnRleHQgdG8gY3JlYXRlIGVsZW1lbnRzIHdpdGggYW5kIHRvIGxvYWQgcmVzb3VyY2VzLCBzdWNoIGFzIGZvbnRzLFxuICAgKiBpbnRvLiBEZWZhdWx0cyB0byB0aGUgY3VycmVudCBkb2N1bWVudC5cbiAgICovXG4gIG93bmVyRG9jdW1lbnQ6IERvY3VtZW50IHwgdW5kZWZpbmVkO1xuICAvKipcbiAgICogLSBEaXNhYmxlIHJhbmdlIHJlcXVlc3QgbG9hZGluZyBvZiBQREZcbiAgICogZmlsZXMuIFdoZW4gZW5hYmxlZCwgYW5kIGlmIHRoZSBzZXJ2ZXIgc3VwcG9ydHMgcGFydGlhbCBjb250ZW50IHJlcXVlc3RzLFxuICAgKiB0aGVuIHRoZSBQREYgd2lsbCBiZSBmZXRjaGVkIGluIGNodW5rcy4gVGhlIGRlZmF1bHQgdmFsdWUgaXMgYGZhbHNlYC5cbiAgICovXG4gIGRpc2FibGVSYW5nZTogYm9vbGVhbiB8IHVuZGVmaW5lZDtcbiAgLyoqXG4gICAqIC0gRGlzYWJsZSBzdHJlYW1pbmcgb2YgUERGIGZpbGUgZGF0YS5cbiAgICogQnkgZGVmYXVsdCBQREYuanMgYXR0ZW1wdHMgdG8gbG9hZCBQREYgZmlsZXMgaW4gY2h1bmtzLiBUaGUgZGVmYXVsdCB2YWx1ZVxuICAgKiBpcyBgZmFsc2VgLlxuICAgKi9cbiAgZGlzYWJsZVN0cmVhbTogYm9vbGVhbiB8IHVuZGVmaW5lZDtcbiAgLyoqXG4gICAqIC0gRGlzYWJsZSBwcmUtZmV0Y2hpbmcgb2YgUERGIGZpbGVcbiAgICogZGF0YS4gV2hlbiByYW5nZSByZXF1ZXN0cyBhcmUgZW5hYmxlZCBQREYuanMgd2lsbCBhdXRvbWF0aWNhbGx5IGtlZXBcbiAgICogZmV0Y2hpbmcgbW9yZSBkYXRhIGV2ZW4gaWYgaXQgaXNuJ3QgbmVlZGVkIHRvIGRpc3BsYXkgdGhlIGN1cnJlbnQgcGFnZS5cbiAgICogVGhlIGRlZmF1bHQgdmFsdWUgaXMgYGZhbHNlYC5cbiAgICpcbiAgICogTk9URTogSXQgaXMgYWxzbyBuZWNlc3NhcnkgdG8gZGlzYWJsZSBzdHJlYW1pbmcsIHNlZSBhYm92ZSwgaW4gb3JkZXIgZm9yXG4gICAqIGRpc2FibGluZyBvZiBwcmUtZmV0Y2hpbmcgdG8gd29yayBjb3JyZWN0bHkuXG4gICAqL1xuICBkaXNhYmxlQXV0b0ZldGNoOiBib29sZWFuIHwgdW5kZWZpbmVkO1xuICAvKipcbiAgICogLSBFbmFibGVzIHNwZWNpYWwgaG9va3MgZm9yIGRlYnVnZ2luZyBQREYuanNcbiAgICogKHNlZSBgd2ViL2RlYnVnZ2VyLmpzYCkuIFRoZSBkZWZhdWx0IHZhbHVlIGlzIGBmYWxzZWAuXG4gICAqL1xuICBwZGZCdWc6IGJvb2xlYW4gfCB1bmRlZmluZWQ7XG59O1xuZXhwb3J0IHR5cGUgT25Qcm9ncmVzc1BhcmFtZXRlcnMgPSB7XG4gIC8qKlxuICAgKiAtIEN1cnJlbnRseSBsb2FkZWQgbnVtYmVyIG9mIGJ5dGVzLlxuICAgKi9cbiAgbG9hZGVkOiBudW1iZXI7XG4gIC8qKlxuICAgKiAtIFRvdGFsIG51bWJlciBvZiBieXRlcyBpbiB0aGUgUERGIGZpbGUuXG4gICAqL1xuICB0b3RhbDogbnVtYmVyO1xufTtcblxuLyoqXG4gKiBQYWdlIGFubm90YXRpb24gcGFyYW1ldGVycy5cbiAqL1xuZXhwb3J0IHR5cGUgR2V0QW5ub3RhdGlvbnNQYXJhbWV0ZXJzID0ge1xuICAvKipcbiAgICogLSBEZXRlcm1pbmVzIHRoZSBhbm5vdGF0aW9ucyB0aGF0IGFyZSBmZXRjaGVkLFxuICAgKiBjYW4gYmUgJ2Rpc3BsYXknICh2aWV3YWJsZSBhbm5vdGF0aW9ucyksICdwcmludCcgKHByaW50YWJsZSBhbm5vdGF0aW9ucyksXG4gICAqIG9yICdhbnknIChhbGwgYW5ub3RhdGlvbnMpLiBUaGUgZGVmYXVsdCB2YWx1ZSBpcyAnZGlzcGxheScuXG4gICAqL1xuICBpbnRlbnQ6IHN0cmluZyB8IHVuZGVmaW5lZDtcbn07XG5cbmV4cG9ydCB0eXBlIFRleHRJdGVtID0ge1xuICAvKipcbiAgICogLSBUZXh0IGNvbnRlbnQuXG4gICAqL1xuICBzdHI6IHN0cmluZztcbiAgLyoqXG4gICAqIC0gVGV4dCBkaXJlY3Rpb246ICd0dGInLCAnbHRyJyBvciAncnRsJy5cbiAgICovXG4gIGRpcjogc3RyaW5nO1xuICAvKipcbiAgICogLSBUcmFuc2Zvcm1hdGlvbiBtYXRyaXguXG4gICAqL1xuICB0cmFuc2Zvcm06IEFycmF5PGFueT47XG4gIC8qKlxuICAgKiAtIFdpZHRoIGluIGRldmljZSBzcGFjZS5cbiAgICovXG4gIHdpZHRoOiBudW1iZXI7XG4gIC8qKlxuICAgKiAtIEhlaWdodCBpbiBkZXZpY2Ugc3BhY2UuXG4gICAqL1xuICBoZWlnaHQ6IG51bWJlcjtcbiAgLyoqXG4gICAqIC0gRm9udCBuYW1lIHVzZWQgYnkgUERGLmpzIGZvciBjb252ZXJ0ZWQgZm9udC5cbiAgICovXG4gIGZvbnROYW1lOiBzdHJpbmc7XG4gIC8qKlxuICAgKiAtIEluZGljYXRpbmcgaWYgdGhlIHRleHQgY29udGVudCBpcyBmb2xsb3dlZCBieSBhXG4gICAqIGxpbmUtYnJlYWsuXG4gICAqL1xuICBoYXNFT0w6IGJvb2xlYW47XG59O1xuXG4vKipcbiAqIFBhZ2UgdGV4dCBtYXJrZWQgY29udGVudCBwYXJ0LlxuICovXG5leHBvcnQgdHlwZSBUZXh0TWFya2VkQ29udGVudCA9IHtcbiAgLyoqXG4gICAqIC0gRWl0aGVyICdiZWdpbk1hcmtlZENvbnRlbnQnLFxuICAgKiAnYmVnaW5NYXJrZWRDb250ZW50UHJvcHMnLCBvciAnZW5kTWFya2VkQ29udGVudCcuXG4gICAqL1xuICB0eXBlOiBzdHJpbmc7XG4gIC8qKlxuICAgKiAtIFRoZSBtYXJrZWQgY29udGVudCBpZGVudGlmaWVyLiBPbmx5IHVzZWQgZm9yIHR5cGVcbiAgICogJ2JlZ2luTWFya2VkQ29udGVudFByb3BzJy5cbiAgICovXG4gIGlkOiBzdHJpbmc7XG59O1xuXG4vKipcbiAqIEEgUERGIGRvY3VtZW50IGFuZCBwYWdlIGlzIGJ1aWx0IG9mIG1hbnkgb2JqZWN0cy4gRS5nLiB0aGVyZSBhcmUgb2JqZWN0cyBmb3JcbiAqIGZvbnRzLCBpbWFnZXMsIHJlbmRlcmluZyBjb2RlLCBldGMuIFRoZXNlIG9iamVjdHMgbWF5IGdldCBwcm9jZXNzZWQgaW5zaWRlIG9mXG4gKiBhIHdvcmtlci4gVGhpcyBjbGFzcyBpbXBsZW1lbnRzIHNvbWUgYmFzaWMgbWV0aG9kcyB0byBtYW5hZ2UgdGhlc2Ugb2JqZWN0cy5cbiAqL1xuZGVjbGFyZSBpbnRlcmZhY2UgUERGT2JqZWN0cyB7XG4gIC8qKlxuICAgKiBJZiBjYWxsZWQgKndpdGhvdXQqIGNhbGxiYWNrLCB0aGlzIHJldHVybnMgdGhlIGRhdGEgb2YgYG9iaklkYCBidXQgdGhlXG4gICAqIG9iamVjdCBuZWVkcyB0byBiZSByZXNvbHZlZC4gSWYgaXQgaXNuJ3QsIHRoaXMgbWV0aG9kIHRocm93cy5cbiAgICpcbiAgICogSWYgY2FsbGVkICp3aXRoKiBhIGNhbGxiYWNrLCB0aGUgY2FsbGJhY2sgaXMgY2FsbGVkIHdpdGggdGhlIGRhdGEgb2YgdGhlXG4gICAqIG9iamVjdCBvbmNlIHRoZSBvYmplY3QgaXMgcmVzb2x2ZWQuIFRoYXQgbWVhbnMsIGlmIHlvdSBjYWxsIHRoaXMgbWV0aG9kXG4gICAqIGFuZCB0aGUgb2JqZWN0IGlzIGFscmVhZHkgcmVzb2x2ZWQsIHRoZSBjYWxsYmFjayBnZXRzIGNhbGxlZCByaWdodCBhd2F5LlxuICAgKlxuICAgKiBAcGFyYW0ge3N0cmluZ30gb2JqSWRcbiAgICogQHBhcmFtIHtmdW5jdGlvbn0gW2NhbGxiYWNrXVxuICAgKiBAcmV0dXJucyB7YW55fVxuICAgKi9cbiAgZ2V0KG9iaklkOiBzdHJpbmcsIGNhbGxiYWNrOiBGdW5jdGlvbiB8IHVuZGVmaW5lZCk6IGFueTtcbiAgLyoqXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBvYmpJZFxuICAgKiBAcmV0dXJucyB7Ym9vbGVhbn1cbiAgICovXG4gIGhhcyhvYmpJZDogc3RyaW5nKTogYm9vbGVhbjtcbiAgLyoqXG4gICAqIFJlc29sdmVzIHRoZSBvYmplY3QgYG9iaklkYCB3aXRoIG9wdGlvbmFsIGBkYXRhYC5cbiAgICpcbiAgICogQHBhcmFtIHtzdHJpbmd9IG9iaklkXG4gICAqIEBwYXJhbSB7YW55fSBbZGF0YV1cbiAgICovXG4gIHJlc29sdmUob2JqSWQ6IHN0cmluZywgZGF0YT86IGFueSk6IHZvaWQ7XG4gIGNsZWFyKCk6IHZvaWQ7XG59XG5cbmV4cG9ydCB0eXBlIFJlZlByb3h5ID0ge1xuICBudW06IG51bWJlcjtcbiAgZ2VuOiBudW1iZXI7XG59O1xuXG4vKipcbiAqIFBhZ2UgZ2V0Vmlld3BvcnQgcGFyYW1ldGVycy5cbiAqL1xuZXhwb3J0IHR5cGUgR2V0Vmlld3BvcnRQYXJhbWV0ZXJzID0ge1xuICAvKipcbiAgICogLSBUaGUgZGVzaXJlZCBzY2FsZSBvZiB0aGUgdmlld3BvcnQuXG4gICAqL1xuICBzY2FsZTogbnVtYmVyO1xuICAvKipcbiAgICogLSBUaGUgZGVzaXJlZCByb3RhdGlvbiwgaW4gZGVncmVlcywgb2ZcbiAgICogdGhlIHZpZXdwb3J0LiBJZiBvbWl0dGVkIGl0IGRlZmF1bHRzIHRvIHRoZSBwYWdlIHJvdGF0aW9uLlxuICAgKi9cbiAgcm90YXRpb24/OiBudW1iZXI7XG4gIC8qKlxuICAgKiAtIFRoZSBob3Jpem9udGFsLCBpLmUuIHgtYXhpcywgb2Zmc2V0LlxuICAgKiBUaGUgZGVmYXVsdCB2YWx1ZSBpcyBgMGAuXG4gICAqL1xuICBvZmZzZXRYPzogbnVtYmVyO1xuICAvKipcbiAgICogLSBUaGUgdmVydGljYWwsIGkuZS4geS1heGlzLCBvZmZzZXQuXG4gICAqIFRoZSBkZWZhdWx0IHZhbHVlIGlzIGAwYC5cbiAgICovXG4gIG9mZnNldFk/OiBudW1iZXI7XG4gIC8qKlxuICAgKiAtIElmIHRydWUsIHRoZSB5LWF4aXMgd2lsbCBub3QgYmVcbiAgICogZmxpcHBlZC4gVGhlIGRlZmF1bHQgdmFsdWUgaXMgYGZhbHNlYC5cbiAgICovXG4gIGRvbnRGbGlwPzogYm9vbGVhbjtcbn07XG5cbmV4cG9ydCBpbnRlcmZhY2UgUERGRGF0ZVN0cmluZyB7XG4gIC8qKlxuICAgKiBDb252ZXJ0IGEgUERGIGRhdGUgc3RyaW5nIHRvIGEgSmF2YVNjcmlwdCBgRGF0ZWAgb2JqZWN0LlxuICAgKlxuICAgKiBUaGUgUERGIGRhdGUgc3RyaW5nIGZvcm1hdCBpcyBkZXNjcmliZWQgaW4gc2VjdGlvbiA3LjkuNCBvZiB0aGUgb2ZmaWNpYWxcbiAgICogUERGIDMyMDAwLTE6MjAwOCBzcGVjaWZpY2F0aW9uLiBIb3dldmVyLCBpbiB0aGUgUERGIDEuNyByZWZlcmVuY2UgKHNpeHRoXG4gICAqIGVkaXRpb24pIEFkb2JlIGRlc2NyaWJlcyB0aGUgc2FtZSBmb3JtYXQgaW5jbHVkaW5nIGEgdHJhaWxpbmcgYXBvc3Ryb3BoZS5cbiAgICogVGhpcyBzeW50YXggaW4gaW5jb3JyZWN0LCBidXQgQWRvYmUgQWNyb2JhdCBjcmVhdGVzIFBERiBmaWxlcyB0aGF0IGNvbnRhaW5cbiAgICogdGhlbS4gV2UgaWdub3JlIGFsbCBhcG9zdHJvcGhlcyBhcyB0aGV5IGFyZSBub3QgbmVjZXNzYXJ5IGZvciBkYXRlIHBhcnNpbmcuXG4gICAqXG4gICAqIE1vcmVvdmVyLCBBZG9iZSBBY3JvYmF0IGRvZXNuJ3QgaGFuZGxlIGNoYW5naW5nIHRoZSBkYXRlIHRvIHVuaXZlcnNhbCB0aW1lXG4gICAqIGFuZCBkb2Vzbid0IHVzZSB0aGUgdXNlcidzIHRpbWUgem9uZSAoZWZmZWN0aXZlbHkgaWdub3JpbmcgdGhlIEhIJyBhbmQgbW0nXG4gICAqIHBhcnRzIG9mIHRoZSBkYXRlIHN0cmluZykuXG4gICAqXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBpbnB1dFxuICAgKiBAcmV0dXJucyB7RGF0ZXxudWxsfVxuICAgKi9cbiAgLy8gc3RhdGljIHRvRGF0ZU9iamVjdChpbnB1dDogc3RyaW5nKTogRGF0ZSB8IG51bGw7XG59XG5cbi8qKlxuICogUGFnZSBnZXRUZXh0Q29udGVudCBwYXJhbWV0ZXJzLlxuICovXG5leHBvcnQgdHlwZSBnZXRUZXh0Q29udGVudFBhcmFtZXRlcnMgPSB7XG4gIC8qKlxuICAgKiAtIERvIG5vdCBhdHRlbXB0IHRvIGNvbWJpbmVcbiAgICogc2FtZSBsaW5lIHtAbGluayBUZXh0SXRlbSB9J3MuIFRoZSBkZWZhdWx0IHZhbHVlIGlzIGBmYWxzZWAuXG4gICAqL1xuICBkaXNhYmxlQ29tYmluZVRleHRJdGVtczogYm9vbGVhbjtcbiAgLyoqXG4gICAqIC0gV2hlbiB0cnVlIGluY2x1ZGUgbWFya2VkXG4gICAqIGNvbnRlbnQgaXRlbXMgaW4gdGhlIGl0ZW1zIGFycmF5IG9mIFRleHRDb250ZW50LiBUaGUgZGVmYXVsdCBpcyBgZmFsc2VgLlxuICAgKi9cbiAgaW5jbHVkZU1hcmtlZENvbnRlbnQ6IGJvb2xlYW4gfCB1bmRlZmluZWQ7XG59O1xuXG4vKipcbiAqIEFsbG93cyBjb250cm9sbGluZyBvZiB0aGUgcmVuZGVyaW5nIHRhc2tzLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFJlbmRlclRhc2sge1xuICAvKipcbiAgICogQ2FsbGJhY2sgZm9yIGluY3JlbWVudGFsIHJlbmRlcmluZyAtLSBhIGZ1bmN0aW9uIHRoYXQgd2lsbCBiZSBjYWxsZWRcbiAgICogZWFjaCB0aW1lIHRoZSByZW5kZXJpbmcgaXMgcGF1c2VkLiAgVG8gY29udGludWUgcmVuZGVyaW5nIGNhbGwgdGhlXG4gICAqIGZ1bmN0aW9uIHRoYXQgaXMgdGhlIGZpcnN0IGFyZ3VtZW50IHRvIHRoZSBjYWxsYmFjay5cbiAgICogQHR5cGUge2Z1bmN0aW9ufVxuICAgKi9cbiAgb25Db250aW51ZTogRnVuY3Rpb247XG4gIC8qKlxuICAgKiBQcm9taXNlIGZvciByZW5kZXJpbmcgdGFzayBjb21wbGV0aW9uLlxuICAgKiBAdHlwZSB7UHJvbWlzZTx2b2lkPn1cbiAgICovXG4gIGdldCBwcm9taXNlKCk6IFByb21pc2U8dm9pZD47XG4gIC8qKlxuICAgKiBDYW5jZWxzIHRoZSByZW5kZXJpbmcgdGFzay4gSWYgdGhlIHRhc2sgaXMgY3VycmVudGx5IHJlbmRlcmluZyBpdCB3aWxsXG4gICAqIG5vdCBiZSBjYW5jZWxsZWQgdW50aWwgZ3JhcGhpY3MgcGF1c2VzIHdpdGggYSB0aW1lb3V0LiBUaGUgcHJvbWlzZSB0aGF0XG4gICAqIHRoaXMgb2JqZWN0IGV4dGVuZHMgd2lsbCBiZSByZWplY3RlZCB3aGVuIGNhbmNlbGxlZC5cbiAgICpcbiAgICogQHBhcmFtIHtudW1iZXJ9IFtleHRyYURlbGF5XVxuICAgKi9cbiAgY2FuY2VsKGV4dHJhRGVsYXk6IG51bWJlciB8IHVuZGVmaW5lZCk6IHZvaWQ7XG4gIC8qKlxuICAgKiBXaGV0aGVyIGZvcm0gZmllbGRzIGFyZSByZW5kZXJlZCBzZXBhcmF0ZWx5IGZyb20gdGhlIG1haW4gb3BlcmF0b3JMaXN0LlxuICAgKiBAdHlwZSB7Ym9vbGVhbn1cbiAgICovXG4gIGdldCBzZXBhcmF0ZUFubm90cygpOiBib29sZWFuO1xufVxuXG4vKipcbiAqIFBhZ2UgcmVuZGVyIHBhcmFtZXRlcnMuXG4gKi9cbmV4cG9ydCB0eXBlIFJlbmRlclBhcmFtZXRlcnMgPSB7XG4gIC8qKlxuICAgKiAtIEEgMkQgY29udGV4dCBvZiBhIERPTSBDYW52YXMgb2JqZWN0LlxuICAgKi9cbiAgY2FudmFzQ29udGV4dDogT2JqZWN0O1xuICAvKipcbiAgICogLSBSZW5kZXJpbmcgdmlld3BvcnQgb2J0YWluZWQgYnkgY2FsbGluZ1xuICAgKiB0aGUgYFBERlBhZ2VQcm94eS5nZXRWaWV3cG9ydGAgbWV0aG9kLlxuICAgKi9cbiAgdmlld3BvcnQ6IFBhZ2VWaWV3cG9ydDtcbiAgLyoqXG4gICAqIC0gUmVuZGVyaW5nIGludGVudCwgY2FuIGJlICdkaXNwbGF5JywgJ3ByaW50JyxcbiAgICogb3IgJ2FueScuIFRoZSBkZWZhdWx0IHZhbHVlIGlzICdkaXNwbGF5Jy5cbiAgICovXG4gIGludGVudD86IHN0cmluZztcbiAgLyoqXG4gICAqIENvbnRyb2xzIHdoaWNoIGFubm90YXRpb25zIGFyZSByZW5kZXJlZFxuICAgKiBvbnRvIHRoZSBjYW52YXMsIGZvciBhbm5vdGF0aW9ucyB3aXRoIGFwcGVhcmFuY2UtZGF0YTsgdGhlIHZhbHVlcyBmcm9tXG4gICAqIHtAbGluayBBbm5vdGF0aW9uTW9kZSB9IHNob3VsZCBiZSB1c2VkLiBUaGUgZm9sbG93aW5nIHZhbHVlcyBhcmUgc3VwcG9ydGVkOlxuICAgKiAtIGBBbm5vdGF0aW9uTW9kZS5ESVNBQkxFYCwgd2hpY2ggZGlzYWJsZXMgYWxsIGFubm90YXRpb25zLlxuICAgKiAtIGBBbm5vdGF0aW9uTW9kZS5FTkFCTEVgLCB3aGljaCBpbmNsdWRlcyBhbGwgcG9zc2libGUgYW5ub3RhdGlvbnMgKHRodXNcbiAgICogaXQgYWxzbyBkZXBlbmRzIG9uIHRoZSBgaW50ZW50YC1vcHRpb24sIHNlZSBhYm92ZSkuXG4gICAqIC0gYEFubm90YXRpb25Nb2RlLkVOQUJMRV9GT1JNU2AsIHdoaWNoIGV4Y2x1ZGVzIGFubm90YXRpb25zIHRoYXQgY29udGFpblxuICAgKiBpbnRlcmFjdGl2ZSBmb3JtIGVsZW1lbnRzICh0aG9zZSB3aWxsIGJlIHJlbmRlcmVkIGluIHRoZSBkaXNwbGF5IGxheWVyKS5cbiAgICogLSBgQW5ub3RhdGlvbk1vZGUuRU5BQkxFX1NUT1JBR0VgLCB3aGljaCBpbmNsdWRlcyBhbGwgcG9zc2libGUgYW5ub3RhdGlvbnNcbiAgICogKGFzIGFib3ZlKSBidXQgd2hlcmUgaW50ZXJhY3RpdmUgZm9ybSBlbGVtZW50cyBhcmUgdXBkYXRlZCB3aXRoIGRhdGFcbiAgICogZnJvbSB0aGUge0BsaW5rIEFubm90YXRpb25TdG9yYWdlIH0taW5zdGFuY2U7IHVzZWZ1bCBlLmcuIGZvciBwcmludGluZy5cbiAgICogVGhlIGRlZmF1bHQgdmFsdWUgaXMgYEFubm90YXRpb25Nb2RlLkVOQUJMRWAuXG4gICAqL1xuICBhbm5vdGF0aW9uTW9kZT86IG51bWJlcjtcbiAgLyoqXG4gICAqIC0gQWRkaXRpb25hbCB0cmFuc2Zvcm0sIGFwcGxpZWQganVzdFxuICAgKiBiZWZvcmUgdmlld3BvcnQgdHJhbnNmb3JtLlxuICAgKi9cbiAgdHJhbnNmb3JtPzogYW55W107XG4gIC8qKlxuICAgKiAtIFRoZSBmYWN0b3J5IGluc3RhbmNlIHRoYXQgd2lsbCBiZSB1c2VkXG4gICAqIHdoZW4gY3JlYXRpbmcgY2FudmFzZXMuIFRoZSBkZWZhdWx0IHZhbHVlIGlzIHtuZXcgRE9NQ2FudmFzRmFjdG9yeSgpfS5cbiAgICovXG4gIGNhbnZhc0ZhY3Rvcnk/OiBPYmplY3Q7XG4gIC8qKlxuICAgKiAtIEJhY2tncm91bmQgdG8gdXNlIGZvciB0aGUgY2FudmFzLlxuICAgKiBBbnkgdmFsaWQgYGNhbnZhcy5maWxsU3R5bGVgIGNhbiBiZSB1c2VkOiBhIGBET01TdHJpbmdgIHBhcnNlZCBhcyBDU1NcbiAgICogPGNvbG9yPiB2YWx1ZSwgYSBgQ2FudmFzR3JhZGllbnRgIG9iamVjdCAoYSBsaW5lYXIgb3IgcmFkaWFsIGdyYWRpZW50KSBvclxuICAgKiBhIGBDYW52YXNQYXR0ZXJuYCBvYmplY3QgKGEgcmVwZXRpdGl2ZSBpbWFnZSkuIFRoZSBkZWZhdWx0IHZhbHVlIGlzXG4gICAqICdyZ2IoMjU1LDI1NSwyNTUpJy5cbiAgICpcbiAgICogTk9URTogVGhpcyBvcHRpb24gbWF5IGJlIHBhcnRpYWxseSwgb3IgY29tcGxldGVseSwgaWdub3JlZCB3aGVuIHRoZVxuICAgKiBgcGFnZUNvbG9yc2Atb3B0aW9uIGlzIHVzZWQuXG4gICAqL1xuICBiYWNrZ3JvdW5kPzogc3RyaW5nIHwgT2JqZWN0O1xuICAvKipcbiAgICogLSBPdmVyd3JpdGVzIGJhY2tncm91bmQgYW5kIGZvcmVncm91bmQgY29sb3JzXG4gICAqIHdpdGggdXNlciBkZWZpbmVkIG9uZXMgaW4gb3JkZXIgdG8gaW1wcm92ZSByZWFkYWJpbGl0eSBpbiBoaWdoIGNvbnRyYXN0XG4gICAqIG1vZGUuXG4gICAqL1xuICBwYWdlQ29sb3JzPzogT2JqZWN0O1xuICAvKipcbiAgICogLSBNYXAgc29tZVxuICAgKiBhbm5vdGF0aW9uIGlkcyB3aXRoIGNhbnZhc2VzIHVzZWQgdG8gcmVuZGVyIHRoZW0uXG4gICAqL1xuICBhbm5vdGF0aW9uQ2FudmFzTWFwPzogTWFwPHN0cmluZywgSFRNTENhbnZhc0VsZW1lbnQ+O1xuICBwcmludEFubm90YXRpb25TdG9yYWdlPzogUHJpbnRBbm5vdGF0aW9uU3RvcmFnZTtcblxuICBiYWNrZ3JvdW5kQ29sb3JUb1JlcGxhY2U/OiBzdHJpbmc7IC8vIGFkZGVkIGJ5IG5neC1leHRlbmRlZC1wZGYtdmlld2VyXG4gIG9wdGlvbmFsQ29udGVudENvbmZpZ1Byb21pc2U/OiBQcm9taXNlPHVua25vd24+OyAvLyBhZGRlZCBieSBuZ3gtZXh0ZW5kZWQtcGRmLXZpZXdlcj9cbn07XG5cbi8qKlxuICogU3RydWN0dXJlIHRyZWUgbm9kZS4gVGhlIHJvb3Qgbm9kZSB3aWxsIGhhdmUgYSByb2xlIFwiUm9vdFwiLlxuICovXG5leHBvcnQgdHlwZSBTdHJ1Y3RUcmVlTm9kZSA9IHtcbiAgLyoqXG4gICAqIC0gQXJyYXkgb2ZcbiAgICoge0BsaW5rIFN0cnVjdFRyZWVOb2RlIH0gYW5kIHtAbGluayBTdHJ1Y3RUcmVlQ29udGVudCB9IG9iamVjdHMuXG4gICAqL1xuICBjaGlsZHJlbjogQXJyYXk8U3RydWN0VHJlZU5vZGUgfCBTdHJ1Y3RUcmVlQ29udGVudD47XG4gIC8qKlxuICAgKiAtIGVsZW1lbnQncyByb2xlLCBhbHJlYWR5IG1hcHBlZCBpZiBhIHJvbGUgbWFwIGV4aXN0c1xuICAgKiBpbiB0aGUgUERGLlxuICAgKi9cbiAgcm9sZTogc3RyaW5nO1xufTtcbi8qKlxuICogU3RydWN0dXJlIHRyZWUgY29udGVudC5cbiAqL1xuZXhwb3J0IHR5cGUgU3RydWN0VHJlZUNvbnRlbnQgPSB7XG4gIC8qKlxuICAgKiAtIGVpdGhlciBcImNvbnRlbnRcIiBmb3IgcGFnZSBhbmQgc3RyZWFtIHN0cnVjdHVyZVxuICAgKiBlbGVtZW50cyBvciBcIm9iamVjdFwiIGZvciBvYmplY3QgcmVmZXJlbmNlcy5cbiAgICovXG4gIHR5cGU6IHN0cmluZztcbiAgLyoqXG4gICAqIC0gdW5pcXVlIGlkIHRoYXQgd2lsbCBtYXAgdG8gdGhlIHRleHQgbGF5ZXIuXG4gICAqL1xuICBpZDogc3RyaW5nO1xufTtcblxuZXhwb3J0IGludGVyZmFjZSBQREZQYWdlUHJveHkge1xuICAvKiogQHR5cGUge1BERk9iamVjdHN9ICovXG4gIGNvbW1vbk9ianM6IFBERk9iamVjdHM7XG4gIG9ianM6IFBERk9iamVjdHM7XG4gIF9iaXRtYXBzOiBTZXQ8YW55PjtcbiAgY2xlYW51cEFmdGVyUmVuZGVyOiBib29sZWFuO1xuICBwZW5kaW5nQ2xlYW51cDogYm9vbGVhbjtcbiAgX2ludGVudFN0YXRlczogTWFwPGFueSwgYW55PjtcbiAgZGVzdHJveWVkOiBib29sZWFuO1xuICAvKipcbiAgICogQHR5cGUge251bWJlcn0gUGFnZSBudW1iZXIgb2YgdGhlIHBhZ2UuIEZpcnN0IHBhZ2UgaXMgMS5cbiAgICovXG4gIGdldCBwYWdlTnVtYmVyKCk6IG51bWJlcjtcbiAgLyoqXG4gICAqIEB0eXBlIHtudW1iZXJ9IFRoZSBudW1iZXIgb2YgZGVncmVlcyB0aGUgcGFnZSBpcyByb3RhdGVkIGNsb2Nrd2lzZS5cbiAgICovXG4gIGdldCByb3RhdGUoKTogbnVtYmVyO1xuICAvKipcbiAgICogQHR5cGUge1JlZlByb3h5IHwgbnVsbH0gVGhlIHJlZmVyZW5jZSB0aGF0IHBvaW50cyB0byB0aGlzIHBhZ2UuXG4gICAqL1xuICBnZXQgcmVmKCk6IFJlZlByb3h5IHwgbnVsbDtcbiAgLyoqXG4gICAqIEB0eXBlIHtudW1iZXJ9IFRoZSBkZWZhdWx0IHNpemUgb2YgdW5pdHMgaW4gMS83Mm5kcyBvZiBhbiBpbmNoLlxuICAgKi9cbiAgZ2V0IHVzZXJVbml0KCk6IG51bWJlcjtcbiAgLyoqXG4gICAqIEB0eXBlIHtBcnJheTxudW1iZXI+fSBBbiBhcnJheSBvZiB0aGUgdmlzaWJsZSBwb3J0aW9uIG9mIHRoZSBQREYgcGFnZSBpblxuICAgKiAgIHVzZXIgc3BhY2UgdW5pdHMgW3gxLCB5MSwgeDIsIHkyXS5cbiAgICovXG4gIGdldCB2aWV3KCk6IG51bWJlcltdO1xuICAvKipcbiAgICogQHBhcmFtIHtHZXRWaWV3cG9ydFBhcmFtZXRlcnN9IHBhcmFtcyAtIFZpZXdwb3J0IHBhcmFtZXRlcnMuXG4gICAqIEByZXR1cm5zIHtQYWdlVmlld3BvcnR9IENvbnRhaW5zICd3aWR0aCcgYW5kICdoZWlnaHQnIHByb3BlcnRpZXNcbiAgICogICBhbG9uZyB3aXRoIHRyYW5zZm9ybXMgcmVxdWlyZWQgZm9yIHJlbmRlcmluZy5cbiAgICovXG4gIGdldFZpZXdwb3J0KHsgc2NhbGUsIHJvdGF0aW9uLCBvZmZzZXRYLCBvZmZzZXRZLCBkb250RmxpcCB9OiBHZXRWaWV3cG9ydFBhcmFtZXRlcnMpOiBQYWdlVmlld3BvcnQ7XG4gIC8qKlxuICAgKiBAcGFyYW0ge0dldEFubm90YXRpb25zUGFyYW1ldGVyc30gcGFyYW1zIC0gQW5ub3RhdGlvbiBwYXJhbWV0ZXJzLlxuICAgKiBAcmV0dXJucyB7UHJvbWlzZTxBcnJheTxhbnk+Pn0gQSBwcm9taXNlIHRoYXQgaXMgcmVzb2x2ZWQgd2l0aCBhblxuICAgKiAgIHtBcnJheX0gb2YgdGhlIGFubm90YXRpb24gb2JqZWN0cy5cbiAgICovXG4gIGdldEFubm90YXRpb25zKHsgaW50ZW50IH0/OiBHZXRBbm5vdGF0aW9uc1BhcmFtZXRlcnMpOiBQcm9taXNlPEFycmF5PGFueT4+O1xuICAvKipcbiAgICogQHJldHVybnMge1Byb21pc2U8T2JqZWN0Pn0gQSBwcm9taXNlIHRoYXQgaXMgcmVzb2x2ZWQgd2l0aCBhblxuICAgKiAgIHtPYmplY3R9IHdpdGggSlMgYWN0aW9ucy5cbiAgICovXG4gIGdldEpTQWN0aW9ucygpOiBQcm9taXNlPE9iamVjdD47XG4gIC8qKlxuICAgKiBAdHlwZSB7Ym9vbGVhbn0gVHJ1ZSBpZiBvbmx5IFhGQSBmb3JtLlxuICAgKi9cbiAgZ2V0IGlzUHVyZVhmYSgpOiBib29sZWFuO1xuICAvKipcbiAgICogQHJldHVybnMge1Byb21pc2U8T2JqZWN0IHwgbnVsbD59IEEgcHJvbWlzZSB0aGF0IGlzIHJlc29sdmVkIHdpdGhcbiAgICogICBhbiB7T2JqZWN0fSB3aXRoIGEgZmFrZSBET00gb2JqZWN0IChhIHRyZWUgc3RydWN0dXJlIHdoZXJlIGVsZW1lbnRzXG4gICAqICAgYXJlIHtPYmplY3R9IHdpdGggYSBuYW1lLCBhdHRyaWJ1dGVzIChjbGFzcywgc3R5bGUsIC4uLiksIHZhbHVlIGFuZFxuICAgKiAgIGNoaWxkcmVuLCB2ZXJ5IHNpbWlsYXIgdG8gYSBIVE1MIERPTSB0cmVlKSwgb3IgYG51bGxgIGlmIG5vIFhGQSBleGlzdHMuXG4gICAqL1xuICBnZXRYZmEoKTogUHJvbWlzZTxPYmplY3QgfCBudWxsPjtcbiAgLyoqXG4gICAqIEJlZ2lucyB0aGUgcHJvY2VzcyBvZiByZW5kZXJpbmcgYSBwYWdlIHRvIHRoZSBkZXNpcmVkIGNvbnRleHQuXG4gICAqXG4gICAqIEBwYXJhbSB7UmVuZGVyUGFyYW1ldGVyc30gcGFyYW1zIC0gUGFnZSByZW5kZXIgcGFyYW1ldGVycy5cbiAgICogQHJldHVybnMge1JlbmRlclRhc2t9IEFuIG9iamVjdCB0aGF0IGNvbnRhaW5zIGEgcHJvbWlzZSB0aGF0IGlzXG4gICAqICAgcmVzb2x2ZWQgd2hlbiB0aGUgcGFnZSBmaW5pc2hlcyByZW5kZXJpbmcuXG4gICAqL1xuICByZW5kZXIoe1xuICAgIGNhbnZhc0NvbnRleHQsXG4gICAgdmlld3BvcnQsXG4gICAgaW50ZW50LFxuICAgIGFubm90YXRpb25Nb2RlLFxuICAgIHRyYW5zZm9ybSxcbiAgICBjYW52YXNGYWN0b3J5LFxuICAgIGJhY2tncm91bmQsXG4gICAgYmFja2dyb3VuZENvbG9yVG9SZXBsYWNlLFxuICAgIG9wdGlvbmFsQ29udGVudENvbmZpZ1Byb21pc2UsXG4gICAgYW5ub3RhdGlvbkNhbnZhc01hcCxcbiAgICBwYWdlQ29sb3JzLFxuICAgIHByaW50QW5ub3RhdGlvblN0b3JhZ2UsXG4gIH06IFJlbmRlclBhcmFtZXRlcnMpOiBSZW5kZXJUYXNrO1xuXG4gIC8qKlxuICAgKiBOT1RFOiBBbGwgb2NjdXJyZW5jZXMgb2Ygd2hpdGVzcGFjZSB3aWxsIGJlIHJlcGxhY2VkIGJ5XG4gICAqIHN0YW5kYXJkIHNwYWNlcyAoMHgyMCkuXG4gICAqXG4gICAqIEBwYXJhbSB7Z2V0VGV4dENvbnRlbnRQYXJhbWV0ZXJzfSBwYXJhbXMgLSBnZXRUZXh0Q29udGVudCBwYXJhbWV0ZXJzLlxuICAgKiBAcmV0dXJucyB7UmVhZGFibGVTdHJlYW19IFN0cmVhbSBmb3IgcmVhZGluZyB0ZXh0IGNvbnRlbnQgY2h1bmtzLlxuICAgKi9cbiAgc3RyZWFtVGV4dENvbnRlbnQoeyBkaXNhYmxlQ29tYmluZVRleHRJdGVtcywgaW5jbHVkZU1hcmtlZENvbnRlbnQgfT86IGdldFRleHRDb250ZW50UGFyYW1ldGVycyk6IFJlYWRhYmxlU3RyZWFtO1xuICAvKipcbiAgICogTk9URTogQWxsIG9jY3VycmVuY2VzIG9mIHdoaXRlc3BhY2Ugd2lsbCBiZSByZXBsYWNlZCBieVxuICAgKiBzdGFuZGFyZCBzcGFjZXMgKDB4MjApLlxuICAgKlxuICAgKiBAcGFyYW0ge2dldFRleHRDb250ZW50UGFyYW1ldGVyc30gcGFyYW1zIC0gZ2V0VGV4dENvbnRlbnQgcGFyYW1ldGVycy5cbiAgICogQHJldHVybnMge1Byb21pc2U8VGV4dENvbnRlbnQ+fSBBIHByb21pc2UgdGhhdCBpcyByZXNvbHZlZCB3aXRoIGFcbiAgICogICB7QGxpbmsgVGV4dENvbnRlbnR9IG9iamVjdCB0aGF0IHJlcHJlc2VudHMgdGhlIHBhZ2UncyB0ZXh0IGNvbnRlbnQuXG4gICAqL1xuICBnZXRUZXh0Q29udGVudChwYXJhbXM/OiBnZXRUZXh0Q29udGVudFBhcmFtZXRlcnMpOiBQcm9taXNlPFRleHRDb250ZW50PjtcbiAgLyoqXG4gICAqIEByZXR1cm5zIHtQcm9taXNlPFN0cnVjdFRyZWVOb2RlPn0gQSBwcm9taXNlIHRoYXQgaXMgcmVzb2x2ZWQgd2l0aCBhXG4gICAqICAge0BsaW5rIFN0cnVjdFRyZWVOb2RlfSBvYmplY3QgdGhhdCByZXByZXNlbnRzIHRoZSBwYWdlJ3Mgc3RydWN0dXJlIHRyZWUsXG4gICAqICAgb3IgYG51bGxgIHdoZW4gbm8gc3RydWN0dXJlIHRyZWUgaXMgcHJlc2VudCBmb3IgdGhlIGN1cnJlbnQgcGFnZS5cbiAgICovXG4gIGdldFN0cnVjdFRyZWUoKTogUHJvbWlzZTxTdHJ1Y3RUcmVlTm9kZT47XG4gIC8qKlxuICAgKiBEZXN0cm95cyB0aGUgcGFnZSBvYmplY3QuXG4gICAqIEBwcml2YXRlXG4gICAqL1xuICBfZGVzdHJveTtcbiAgLyoqXG4gICAqIENsZWFucyB1cCByZXNvdXJjZXMgYWxsb2NhdGVkIGJ5IHRoZSBwYWdlLlxuICAgKlxuICAgKiBAcGFyYW0ge2Jvb2xlYW59IFtyZXNldFN0YXRzXSAtIFJlc2V0IHBhZ2Ugc3RhdHMsIGlmIGVuYWJsZWQuXG4gICAqICAgVGhlIGRlZmF1bHQgdmFsdWUgaXMgYGZhbHNlYC5cbiAgICogQHJldHVybnMge2Jvb2xlYW59IEluZGljYXRlcyBpZiBjbGVhbi11cCB3YXMgc3VjY2Vzc2Z1bGx5IHJ1bi5cbiAgICovXG4gIGNsZWFudXAocmVzZXRTdGF0czogYm9vbGVhbiB8IHVuZGVmaW5lZCk6IGJvb2xlYW47XG4gIC8qKlxuICAgKiBBdHRlbXB0cyB0byBjbGVhbiB1cCBpZiByZW5kZXJpbmcgaXMgaW4gYSBzdGF0ZSB3aGVyZSB0aGF0J3MgcG9zc2libGUuXG4gICAqIEBwcml2YXRlXG4gICAqL1xuICBfdHJ5Q2xlYW51cDtcbiAgLyoqXG4gICAqIEBwcml2YXRlXG4gICAqL1xuICBfc3RhcnRSZW5kZXJQYWdlO1xuICAvKipcbiAgICogQHByaXZhdGVcbiAgICovXG4gIF9yZW5kZXJQYWdlQ2h1bms7XG4gIC8qKlxuICAgKiBAcHJpdmF0ZVxuICAgKi9cbiAgX3B1bXBPcGVyYXRvckxpc3Q7XG4gIC8qKlxuICAgKiBAcHJpdmF0ZVxuICAgKi9cbiAgX2Fib3J0T3BlcmF0b3JMaXN0O1xuICAvKipcbiAgICogQHR5cGUge09iamVjdH0gUmV0dXJucyBwYWdlIHN0YXRzLCBpZiBlbmFibGVkOyByZXR1cm5zIGBudWxsYCBvdGhlcndpc2UuXG4gICAqL1xuICBnZXQgc3RhdHMoKTogT2JqZWN0O1xufVxuXG4vKipcbiAqIFRoZSBsb2FkaW5nIHRhc2sgY29udHJvbHMgdGhlIG9wZXJhdGlvbnMgcmVxdWlyZWQgdG8gbG9hZCBhIFBERiBkb2N1bWVudFxuICogKHN1Y2ggYXMgbmV0d29yayByZXF1ZXN0cykgYW5kIHByb3ZpZGVzIGEgd2F5IHRvIGxpc3RlbiBmb3IgY29tcGxldGlvbixcbiAqIGFmdGVyIHdoaWNoIGluZGl2aWR1YWwgcGFnZXMgY2FuIGJlIHJlbmRlcmVkLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFBERkRvY3VtZW50TG9hZGluZ1Rhc2sge1xuICAvKipcbiAgICogVW5pcXVlIGlkZW50aWZpZXIgZm9yIHRoZSBkb2N1bWVudCBsb2FkaW5nIHRhc2suXG4gICAqIEB0eXBlIHtzdHJpbmd9XG4gICAqL1xuICBkb2NJZDogc3RyaW5nO1xuICAvKipcbiAgICogV2hldGhlciB0aGUgbG9hZGluZyB0YXNrIGlzIGRlc3Ryb3llZCBvciBub3QuXG4gICAqIEB0eXBlIHtib29sZWFufVxuICAgKi9cbiAgZGVzdHJveWVkOiBib29sZWFuO1xuICAvKipcbiAgICogQ2FsbGJhY2sgdG8gcmVxdWVzdCBhIHBhc3N3b3JkIGlmIGEgd3Jvbmcgb3Igbm8gcGFzc3dvcmQgd2FzIHByb3ZpZGVkLlxuICAgKiBUaGUgY2FsbGJhY2sgcmVjZWl2ZXMgdHdvIHBhcmFtZXRlcnM6IGEgZnVuY3Rpb24gdGhhdCBzaG91bGQgYmUgY2FsbGVkXG4gICAqIHdpdGggdGhlIG5ldyBwYXNzd29yZCwgYW5kIGEgcmVhc29uIChzZWUge0BsaW5rIFBhc3N3b3JkUmVzcG9uc2VzfSkuXG4gICAqIEB0eXBlIHtmdW5jdGlvbn1cbiAgICovXG4gIG9uUGFzc3dvcmQ6IEZ1bmN0aW9uO1xuICAvKipcbiAgICogQ2FsbGJhY2sgdG8gYmUgYWJsZSB0byBtb25pdG9yIHRoZSBsb2FkaW5nIHByb2dyZXNzIG9mIHRoZSBQREYgZmlsZVxuICAgKiAobmVjZXNzYXJ5IHRvIGltcGxlbWVudCBlLmcuIGEgbG9hZGluZyBiYXIpLlxuICAgKiBUaGUgY2FsbGJhY2sgcmVjZWl2ZXMgYW4ge0BsaW5rIE9uUHJvZ3Jlc3NQYXJhbWV0ZXJzfSBhcmd1bWVudC5cbiAgICogQHR5cGUge2Z1bmN0aW9ufVxuICAgKi9cbiAgb25Qcm9ncmVzczogRnVuY3Rpb247XG4gIC8qKlxuICAgKiBDYWxsYmFjayBmb3Igd2hlbiBhbiB1bnN1cHBvcnRlZCBmZWF0dXJlIGlzIHVzZWQgaW4gdGhlIFBERiBkb2N1bWVudC5cbiAgICogVGhlIGNhbGxiYWNrIHJlY2VpdmVzIGFuIHtAbGluayBVTlNVUFBPUlRFRF9GRUFUVVJFU30gYXJndW1lbnQuXG4gICAqIEB0eXBlIHtmdW5jdGlvbn1cbiAgICovXG4gIHNldCBvblVuc3VwcG9ydGVkRmVhdHVyZShhcmc6IEZ1bmN0aW9uIHwgbnVsbCk7XG4gIC8qKlxuICAgKiBAdHlwZSB7ZnVuY3Rpb24gfCBudWxsfSBUaGUgY3VycmVudCBjYWxsYmFjayB1c2VkIHdpdGggdW5zdXBwb3J0ZWRcbiAgICogZmVhdHVyZXMuXG4gICAqL1xuICBnZXQgb25VbnN1cHBvcnRlZEZlYXR1cmUoKTogRnVuY3Rpb24gfCBudWxsO1xuICAvKipcbiAgICogUHJvbWlzZSBmb3IgZG9jdW1lbnQgbG9hZGluZyB0YXNrIGNvbXBsZXRpb24uXG4gICAqIEB0eXBlIHtQcm9taXNlPFBERkRvY3VtZW50UHJveHk+fVxuICAgKi9cbiAgZ2V0IHByb21pc2UoKTogUHJvbWlzZTxQREZEb2N1bWVudFByb3h5PjtcbiAgLyoqXG4gICAqIEFib3J0IGFsbCBuZXR3b3JrIHJlcXVlc3RzIGFuZCBkZXN0cm95IHRoZSB3b3JrZXIuXG4gICAqIEByZXR1cm5zIHtQcm9taXNlPHZvaWQ+fSBBIHByb21pc2UgdGhhdCBpcyByZXNvbHZlZCB3aGVuIGRlc3RydWN0aW9uIGlzXG4gICAqICAgY29tcGxldGVkLlxuICAgKi9cbiAgZGVzdHJveSgpOiBQcm9taXNlPHZvaWQ+O1xufVxuZXhwb3J0IGludGVyZmFjZSBQREZEb2N1bWVudFByb3h5IHtcbiAgX3BkZkluZm86IGFueTtcbiAgX3RyYW5zcG9ydDogYW55O1xuICAvKipcbiAgICogQHR5cGUge0Fubm90YXRpb25TdG9yYWdlfSBTdG9yYWdlIGZvciBhbm5vdGF0aW9uIGRhdGEgaW4gZm9ybXMuXG4gICAqL1xuICBnZXQgYW5ub3RhdGlvblN0b3JhZ2UoKTogQW5ub3RhdGlvblN0b3JhZ2U7XG4gIC8qKlxuICAgKiBAdHlwZSB7bnVtYmVyfSBUb3RhbCBudW1iZXIgb2YgcGFnZXMgaW4gdGhlIFBERiBmaWxlLlxuICAgKi9cbiAgZ2V0IG51bVBhZ2VzKCk6IG51bWJlcjtcbiAgLyoqXG4gICAqIEB0eXBlIHtBcnJheTxzdHJpbmcsIHN0cmluZ3xudWxsPn0gQSAobm90IGd1YXJhbnRlZWQgdG8gYmUpIHVuaXF1ZSBJRCB0b1xuICAgKiAgIGlkZW50aWZ5IHRoZSBQREYgZG9jdW1lbnQuXG4gICAqICAgTk9URTogVGhlIGZpcnN0IGVsZW1lbnQgd2lsbCBhbHdheXMgYmUgZGVmaW5lZCBmb3IgYWxsIFBERiBkb2N1bWVudHMsXG4gICAqICAgd2hlcmVhcyB0aGUgc2Vjb25kIGVsZW1lbnQgaXMgb25seSBkZWZpbmVkIGZvciAqbW9kaWZpZWQqIFBERiBkb2N1bWVudHMuXG4gICAqL1xuICBnZXQgZmluZ2VycHJpbnRzKCk6IHN0cmluZ1tdO1xuICAvKipcbiAgICogQHR5cGUge2Jvb2xlYW59IFRydWUgaWYgb25seSBYRkEgZm9ybS5cbiAgICovXG4gIGdldCBpc1B1cmVYZmEoKTogYm9vbGVhbjtcbiAgLyoqXG4gICAqIE5PVEU6IFRoaXMgaXMgKG1vc3RseSkgaW50ZW5kZWQgdG8gc3VwcG9ydCBwcmludGluZyBvZiBYRkEgZm9ybXMuXG4gICAqXG4gICAqIEB0eXBlIHtPYmplY3QgfCBudWxsfSBBbiBvYmplY3QgcmVwcmVzZW50aW5nIGEgSFRNTCB0cmVlIHN0cnVjdHVyZVxuICAgKiAgIHRvIHJlbmRlciB0aGUgWEZBLCBvciBgbnVsbGAgd2hlbiBubyBYRkEgZm9ybSBleGlzdHMuXG4gICAqL1xuICBnZXQgYWxsWGZhSHRtbCgpOiBPYmplY3QgfCBudWxsO1xuICAvKipcbiAgICogQHBhcmFtIHtudW1iZXJ9IHBhZ2VOdW1iZXIgLSBUaGUgcGFnZSBudW1iZXIgdG8gZ2V0LiBUaGUgZmlyc3QgcGFnZSBpcyAxLlxuICAgKiBAcmV0dXJucyB7UHJvbWlzZTxQREZQYWdlUHJveHk+fSBBIHByb21pc2UgdGhhdCBpcyByZXNvbHZlZCB3aXRoXG4gICAqICAgYSB7QGxpbmsgUERGUGFnZVByb3h5fSBvYmplY3QuXG4gICAqL1xuICBnZXRQYWdlKHBhZ2VOdW1iZXI6IG51bWJlcik6IFByb21pc2U8UERGUGFnZVByb3h5PjtcbiAgLyoqXG4gICAqIEBwYXJhbSB7UmVmUHJveHl9IHJlZiAtIFRoZSBwYWdlIHJlZmVyZW5jZS5cbiAgICogQHJldHVybnMge1Byb21pc2U8bnVtYmVyPn0gQSBwcm9taXNlIHRoYXQgaXMgcmVzb2x2ZWQgd2l0aCB0aGUgcGFnZSBpbmRleCxcbiAgICogICBzdGFydGluZyBmcm9tIHplcm8sIHRoYXQgaXMgYXNzb2NpYXRlZCB3aXRoIHRoZSByZWZlcmVuY2UuXG4gICAqL1xuICBnZXRQYWdlSW5kZXgocmVmOiBSZWZQcm94eSk6IFByb21pc2U8bnVtYmVyPjtcbiAgLyoqXG4gICAqIEByZXR1cm5zIHtQcm9taXNlPE9iamVjdDxzdHJpbmcsIEFycmF5PGFueT4+Pn0gQSBwcm9taXNlIHRoYXQgaXMgcmVzb2x2ZWRcbiAgICogICB3aXRoIGEgbWFwcGluZyBmcm9tIG5hbWVkIGRlc3RpbmF0aW9ucyB0byByZWZlcmVuY2VzLlxuICAgKlxuICAgKiBUaGlzIGNhbiBiZSBzbG93IGZvciBsYXJnZSBkb2N1bWVudHMuIFVzZSBgZ2V0RGVzdGluYXRpb25gIGluc3RlYWQuXG4gICAqL1xuICBnZXREZXN0aW5hdGlvbnMoKTogUHJvbWlzZTx7XG4gICAgW3g6IHN0cmluZ106IEFycmF5PGFueT47XG4gIH0+O1xuICAvKipcbiAgICogQHBhcmFtIHtzdHJpbmd9IGlkIC0gVGhlIG5hbWVkIGRlc3RpbmF0aW9uIHRvIGdldC5cbiAgICogQHJldHVybnMge1Byb21pc2U8QXJyYXk8YW55PiB8IG51bGw+fSBBIHByb21pc2UgdGhhdCBpcyByZXNvbHZlZCB3aXRoIGFsbFxuICAgKiAgIGluZm9ybWF0aW9uIG9mIHRoZSBnaXZlbiBuYW1lZCBkZXN0aW5hdGlvbiwgb3IgYG51bGxgIHdoZW4gdGhlIG5hbWVkXG4gICAqICAgZGVzdGluYXRpb24gaXMgbm90IHByZXNlbnQgaW4gdGhlIFBERiBmaWxlLlxuICAgKi9cbiAgZ2V0RGVzdGluYXRpb24oaWQ6IHN0cmluZyk6IFByb21pc2U8QXJyYXk8YW55PiB8IG51bGw+O1xuICAvKipcbiAgICogQHJldHVybnMge1Byb21pc2U8QXJyYXk8c3RyaW5nPiB8IG51bGw+fSBBIHByb21pc2UgdGhhdCBpcyByZXNvbHZlZCB3aXRoXG4gICAqICAgYW4ge0FycmF5fSBjb250YWluaW5nIHRoZSBwYWdlIGxhYmVscyB0aGF0IGNvcnJlc3BvbmQgdG8gdGhlIHBhZ2VcbiAgICogICBpbmRleGVzLCBvciBgbnVsbGAgd2hlbiBubyBwYWdlIGxhYmVscyBhcmUgcHJlc2VudCBpbiB0aGUgUERGIGZpbGUuXG4gICAqL1xuICBnZXRQYWdlTGFiZWxzKCk6IFByb21pc2U8QXJyYXk8c3RyaW5nPiB8IG51bGw+O1xuICAvKipcbiAgICogQHJldHVybnMge1Byb21pc2U8c3RyaW5nPn0gQSBwcm9taXNlIHRoYXQgaXMgcmVzb2x2ZWQgd2l0aCBhIHtzdHJpbmd9XG4gICAqICAgY29udGFpbmluZyB0aGUgcGFnZSBsYXlvdXQgbmFtZS5cbiAgICovXG4gIGdldFBhZ2VMYXlvdXQoKTogUHJvbWlzZTxzdHJpbmc+O1xuICAvKipcbiAgICogQHJldHVybnMge1Byb21pc2U8c3RyaW5nPn0gQSBwcm9taXNlIHRoYXQgaXMgcmVzb2x2ZWQgd2l0aCBhIHtzdHJpbmd9XG4gICAqICAgY29udGFpbmluZyB0aGUgcGFnZSBtb2RlIG5hbWUuXG4gICAqL1xuICBnZXRQYWdlTW9kZSgpOiBQcm9taXNlPHN0cmluZz47XG4gIC8qKlxuICAgKiBAcmV0dXJucyB7UHJvbWlzZTxPYmplY3QgfCBudWxsPn0gQSBwcm9taXNlIHRoYXQgaXMgcmVzb2x2ZWQgd2l0aCBhblxuICAgKiAgIHtPYmplY3R9IGNvbnRhaW5pbmcgdGhlIHZpZXdlciBwcmVmZXJlbmNlcywgb3IgYG51bGxgIHdoZW4gbm8gdmlld2VyXG4gICAqICAgcHJlZmVyZW5jZXMgYXJlIHByZXNlbnQgaW4gdGhlIFBERiBmaWxlLlxuICAgKi9cbiAgZ2V0Vmlld2VyUHJlZmVyZW5jZXMoKTogUHJvbWlzZTxPYmplY3QgfCBudWxsPjtcbiAgLyoqXG4gICAqIEByZXR1cm5zIHtQcm9taXNlPGFueSB8IG51bGw+fSBBIHByb21pc2UgdGhhdCBpcyByZXNvbHZlZCB3aXRoIGFuIHtBcnJheX1cbiAgICogICBjb250YWluaW5nIHRoZSBkZXN0aW5hdGlvbiwgb3IgYG51bGxgIHdoZW4gbm8gb3BlbiBhY3Rpb24gaXMgcHJlc2VudFxuICAgKiAgIGluIHRoZSBQREYuXG4gICAqL1xuICBnZXRPcGVuQWN0aW9uKCk6IFByb21pc2U8YW55IHwgbnVsbD47XG4gIC8qKlxuICAgKiBAcmV0dXJucyB7UHJvbWlzZTxhbnk+fSBBIHByb21pc2UgdGhhdCBpcyByZXNvbHZlZCB3aXRoIGEgbG9va3VwIHRhYmxlXG4gICAqICAgZm9yIG1hcHBpbmcgbmFtZWQgYXR0YWNobWVudHMgdG8gdGhlaXIgY29udGVudC5cbiAgICovXG4gIGdldEF0dGFjaG1lbnRzKCk6IFByb21pc2U8YW55PjtcbiAgLyoqXG4gICAqIEByZXR1cm5zIHtQcm9taXNlPEFycmF5PHN0cmluZz4gfCBudWxsPn0gQSBwcm9taXNlIHRoYXQgaXMgcmVzb2x2ZWQgd2l0aFxuICAgKiAgIGFuIHtBcnJheX0gb2YgYWxsIHRoZSBKYXZhU2NyaXB0IHN0cmluZ3MgaW4gdGhlIG5hbWUgdHJlZSwgb3IgYG51bGxgXG4gICAqICAgaWYgbm8gSmF2YVNjcmlwdCBleGlzdHMuXG4gICAqL1xuICBnZXRKYXZhU2NyaXB0KCk6IFByb21pc2U8QXJyYXk8c3RyaW5nPiB8IG51bGw+O1xuICAvKipcbiAgICogQHJldHVybnMge1Byb21pc2U8T2JqZWN0IHwgbnVsbD59IEEgcHJvbWlzZSB0aGF0IGlzIHJlc29sdmVkIHdpdGhcbiAgICogICBhbiB7T2JqZWN0fSB3aXRoIHRoZSBKYXZhU2NyaXB0IGFjdGlvbnM6XG4gICAqICAgICAtIGZyb20gdGhlIG5hbWUgdHJlZSAobGlrZSBnZXRKYXZhU2NyaXB0KTtcbiAgICogICAgIC0gZnJvbSBBIG9yIEFBIGVudHJpZXMgaW4gdGhlIGNhdGFsb2cgZGljdGlvbmFyeS5cbiAgICogICAsIG9yIGBudWxsYCBpZiBubyBKYXZhU2NyaXB0IGV4aXN0cy5cbiAgICovXG4gIGdldEpTQWN0aW9ucygpOiBQcm9taXNlPE9iamVjdCB8IG51bGw+O1xuICAvKipcbiAgICogQHR5cGVkZWYge09iamVjdH0gT3V0bGluZU5vZGVcbiAgICogQHByb3BlcnR5IHtzdHJpbmd9IHRpdGxlXG4gICAqIEBwcm9wZXJ0eSB7Ym9vbGVhbn0gYm9sZFxuICAgKiBAcHJvcGVydHkge2Jvb2xlYW59IGl0YWxpY1xuICAgKiBAcHJvcGVydHkge1VpbnQ4Q2xhbXBlZEFycmF5fSBjb2xvciAtIFRoZSBjb2xvciBpbiBSR0IgZm9ybWF0IHRvIHVzZSBmb3JcbiAgICogICBkaXNwbGF5IHB1cnBvc2VzLlxuICAgKiBAcHJvcGVydHkge3N0cmluZyB8IEFycmF5PGFueT4gfCBudWxsfSBkZXN0XG4gICAqIEBwcm9wZXJ0eSB7c3RyaW5nIHwgbnVsbH0gdXJsXG4gICAqIEBwcm9wZXJ0eSB7c3RyaW5nIHwgdW5kZWZpbmVkfSB1bnNhZmVVcmxcbiAgICogQHByb3BlcnR5IHtib29sZWFuIHwgdW5kZWZpbmVkfSBuZXdXaW5kb3dcbiAgICogQHByb3BlcnR5IHtudW1iZXIgfCB1bmRlZmluZWR9IGNvdW50XG4gICAqIEBwcm9wZXJ0eSB7QXJyYXk8T3V0bGluZU5vZGU+fSBpdGVtc1xuICAgKi9cbiAgLyoqXG4gICAqIEByZXR1cm5zIHtQcm9taXNlPEFycmF5PE91dGxpbmVOb2RlPj59IEEgcHJvbWlzZSB0aGF0IGlzIHJlc29sdmVkIHdpdGggYW5cbiAgICogICB7QXJyYXl9IHRoYXQgaXMgYSB0cmVlIG91dGxpbmUgKGlmIGl0IGhhcyBvbmUpIG9mIHRoZSBQREYgZmlsZS5cbiAgICovXG4gIGdldE91dGxpbmUoKTogUHJvbWlzZTxcbiAgICB7XG4gICAgICB0aXRsZTogc3RyaW5nO1xuICAgICAgYm9sZDogYm9vbGVhbjtcbiAgICAgIGl0YWxpYzogYm9vbGVhbjtcbiAgICAgIC8qKlxuICAgICAgICogLSBUaGUgY29sb3IgaW4gUkdCIGZvcm1hdCB0byB1c2UgZm9yXG4gICAgICAgKiBkaXNwbGF5IHB1cnBvc2VzLlxuICAgICAgICovXG4gICAgICBjb2xvcjogVWludDhDbGFtcGVkQXJyYXk7XG4gICAgICBkZXN0OiBzdHJpbmcgfCBBcnJheTxhbnk+IHwgbnVsbDtcbiAgICAgIHVybDogc3RyaW5nIHwgbnVsbDtcbiAgICAgIHVuc2FmZVVybDogc3RyaW5nIHwgdW5kZWZpbmVkO1xuICAgICAgbmV3V2luZG93OiBib29sZWFuIHwgdW5kZWZpbmVkO1xuICAgICAgY291bnQ6IG51bWJlciB8IHVuZGVmaW5lZDtcbiAgICAgIGl0ZW1zOiBhbnlbXTtcbiAgICB9W11cbiAgPjtcbiAgLyoqXG4gICAqIEByZXR1cm5zIHtQcm9taXNlPE9wdGlvbmFsQ29udGVudENvbmZpZz59IEEgcHJvbWlzZSB0aGF0IGlzIHJlc29sdmVkIHdpdGhcbiAgICogICBhbiB7QGxpbmsgT3B0aW9uYWxDb250ZW50Q29uZmlnfSB0aGF0IGNvbnRhaW5zIGFsbCB0aGUgb3B0aW9uYWwgY29udGVudFxuICAgKiAgIGdyb3VwcyAoYXNzdW1pbmcgdGhhdCB0aGUgZG9jdW1lbnQgaGFzIGFueSkuXG4gICAqL1xuICBnZXRPcHRpb25hbENvbnRlbnRDb25maWcoKTogUHJvbWlzZTxPcHRpb25hbENvbnRlbnRDb25maWc+O1xuICAvKipcbiAgICogQHJldHVybnMge1Byb21pc2U8QXJyYXk8bnVtYmVyPiB8IG51bGw+fSBBIHByb21pc2UgdGhhdCBpcyByZXNvbHZlZCB3aXRoXG4gICAqICAgYW4ge0FycmF5fSB0aGF0IGNvbnRhaW5zIHRoZSBwZXJtaXNzaW9uIGZsYWdzIGZvciB0aGUgUERGIGRvY3VtZW50LCBvclxuICAgKiAgIGBudWxsYCB3aGVuIG5vIHBlcm1pc3Npb25zIGFyZSBwcmVzZW50IGluIHRoZSBQREYgZmlsZS5cbiAgICovXG4gIGdldFBlcm1pc3Npb25zKCk6IFByb21pc2U8QXJyYXk8bnVtYmVyPiB8IG51bGw+O1xuICAvKipcbiAgICogQHJldHVybnMge1Byb21pc2U8eyBpbmZvOiBPYmplY3QsIG1ldGFkYXRhOiBNZXRhZGF0YSB9Pn0gQSBwcm9taXNlIHRoYXQgaXNcbiAgICogICByZXNvbHZlZCB3aXRoIGFuIHtPYmplY3R9IHRoYXQgaGFzIGBpbmZvYCBhbmQgYG1ldGFkYXRhYCBwcm9wZXJ0aWVzLlxuICAgKiAgIGBpbmZvYCBpcyBhbiB7T2JqZWN0fSBmaWxsZWQgd2l0aCBhbnl0aGluZyBhdmFpbGFibGUgaW4gdGhlIGluZm9ybWF0aW9uXG4gICAqICAgZGljdGlvbmFyeSBhbmQgc2ltaWxhcmx5IGBtZXRhZGF0YWAgaXMgYSB7TWV0YWRhdGF9IG9iamVjdCB3aXRoXG4gICAqICAgaW5mb3JtYXRpb24gZnJvbSB0aGUgbWV0YWRhdGEgc2VjdGlvbiBvZiB0aGUgUERGLlxuICAgKi9cbiAgZ2V0TWV0YWRhdGEoKTogUHJvbWlzZTx7XG4gICAgaW5mbzogT2JqZWN0O1xuICAgIG1ldGFkYXRhOiBNZXRhZGF0YTtcbiAgfT47XG4gIC8qKlxuICAgKiBAdHlwZWRlZiB7T2JqZWN0fSBNYXJrSW5mb1xuICAgKiBQcm9wZXJ0aWVzIGNvcnJlc3BvbmQgdG8gVGFibGUgMzIxIG9mIHRoZSBQREYgMzIwMDAtMToyMDA4IHNwZWMuXG4gICAqIEBwcm9wZXJ0eSB7Ym9vbGVhbn0gTWFya2VkXG4gICAqIEBwcm9wZXJ0eSB7Ym9vbGVhbn0gVXNlclByb3BlcnRpZXNcbiAgICogQHByb3BlcnR5IHtib29sZWFufSBTdXNwZWN0c1xuICAgKi9cbiAgLyoqXG4gICAqIEByZXR1cm5zIHtQcm9taXNlPE1hcmtJbmZvIHwgbnVsbD59IEEgcHJvbWlzZSB0aGF0IGlzIHJlc29sdmVkIHdpdGhcbiAgICogICBhIHtNYXJrSW5mb30gb2JqZWN0IHRoYXQgY29udGFpbnMgdGhlIE1hcmtJbmZvIGZsYWdzIGZvciB0aGUgUERGXG4gICAqICAgZG9jdW1lbnQsIG9yIGBudWxsYCB3aGVuIG5vIE1hcmtJbmZvIHZhbHVlcyBhcmUgcHJlc2VudCBpbiB0aGUgUERGIGZpbGUuXG4gICAqL1xuICBnZXRNYXJrSW5mbygpOiBQcm9taXNlPHtcbiAgICBNYXJrZWQ6IGJvb2xlYW47XG4gICAgVXNlclByb3BlcnRpZXM6IGJvb2xlYW47XG4gICAgU3VzcGVjdHM6IGJvb2xlYW47XG4gIH0gfCBudWxsPjtcbiAgLyoqXG4gICAqIEByZXR1cm5zIHtQcm9taXNlPFVpbnQ4QXJyYXk+fSBBIHByb21pc2UgdGhhdCBpcyByZXNvbHZlZCB3aXRoIGFcbiAgICogICB7VWludDhBcnJheX0gY29udGFpbmluZyB0aGUgcmF3IGRhdGEgb2YgdGhlIFBERiBkb2N1bWVudC5cbiAgICovXG4gIGdldERhdGEoKTogUHJvbWlzZTxVaW50OEFycmF5PjtcbiAgLyoqXG4gICAqIEByZXR1cm5zIHtQcm9taXNlPFVpbnQ4QXJyYXk+fSBBIHByb21pc2UgdGhhdCBpcyByZXNvbHZlZCB3aXRoIGFcbiAgICogICB7VWludDhBcnJheX0gY29udGFpbmluZyB0aGUgZnVsbCBkYXRhIG9mIHRoZSBzYXZlZCBkb2N1bWVudC5cbiAgICovXG4gIHNhdmVEb2N1bWVudCgpOiBQcm9taXNlPFVpbnQ4QXJyYXk+O1xuICAvKipcbiAgICogQHJldHVybnMge1Byb21pc2U8eyBsZW5ndGg6IG51bWJlciB9Pn0gQSBwcm9taXNlIHRoYXQgaXMgcmVzb2x2ZWQgd2hlbiB0aGVcbiAgICogICBkb2N1bWVudCdzIGRhdGEgaXMgbG9hZGVkLiBJdCBpcyByZXNvbHZlZCB3aXRoIGFuIHtPYmplY3R9IHRoYXQgY29udGFpbnNcbiAgICogICB0aGUgYGxlbmd0aGAgcHJvcGVydHkgdGhhdCBpbmRpY2F0ZXMgc2l6ZSBvZiB0aGUgUERGIGRhdGEgaW4gYnl0ZXMuXG4gICAqL1xuICBnZXREb3dubG9hZEluZm8oKTogUHJvbWlzZTx7XG4gICAgbGVuZ3RoOiBudW1iZXI7XG4gIH0+O1xuICAvKipcbiAgICogQ2xlYW5zIHVwIHJlc291cmNlcyBhbGxvY2F0ZWQgYnkgdGhlIGRvY3VtZW50IG9uIGJvdGggdGhlIG1haW4gYW5kIHdvcmtlclxuICAgKiB0aHJlYWRzLlxuICAgKlxuICAgKiBOT1RFOiBEbyBub3QsIHVuZGVyIGFueSBjaXJjdW1zdGFuY2VzLCBjYWxsIHRoaXMgbWV0aG9kIHdoZW4gcmVuZGVyaW5nIGlzXG4gICAqIGN1cnJlbnRseSBvbmdvaW5nIHNpbmNlIHRoYXQgbWF5IGxlYWQgdG8gcmVuZGVyaW5nIGVycm9ycy5cbiAgICpcbiAgICogQHBhcmFtIHtib29sZWFufSBba2VlcExvYWRlZEZvbnRzXSAtIExldCBmb250cyByZW1haW4gYXR0YWNoZWQgdG8gdGhlIERPTS5cbiAgICogICBOT1RFOiBUaGlzIHdpbGwgaW5jcmVhc2UgcGVyc2lzdGVudCBtZW1vcnkgdXNhZ2UsIGhlbmNlIGRvbid0IHVzZSB0aGlzXG4gICAqICAgb3B0aW9uIHVubGVzcyBhYnNvbHV0ZWx5IG5lY2Vzc2FyeS4gVGhlIGRlZmF1bHQgdmFsdWUgaXMgYGZhbHNlYC5cbiAgICogQHJldHVybnMge1Byb21pc2V9IEEgcHJvbWlzZSB0aGF0IGlzIHJlc29sdmVkIHdoZW4gY2xlYW4tdXAgaGFzIGZpbmlzaGVkLlxuICAgKi9cbiAgY2xlYW51cChrZWVwTG9hZGVkRm9udHM6IGJvb2xlYW4gfCB1bmRlZmluZWQpOiBQcm9taXNlPGFueT47XG4gIC8qKlxuICAgKiBEZXN0cm95cyB0aGUgY3VycmVudCBkb2N1bWVudCBpbnN0YW5jZSBhbmQgdGVybWluYXRlcyB0aGUgd29ya2VyLlxuICAgKi9cbiAgZGVzdHJveSgpOiBQcm9taXNlPHZvaWQ+O1xuICAvKipcbiAgICogQHR5cGUge0RvY3VtZW50SW5pdFBhcmFtZXRlcnN9IEEgc3Vic2V0IG9mIHRoZSBjdXJyZW50XG4gICAqICAge0RvY3VtZW50SW5pdFBhcmFtZXRlcnN9LCB3aGljaCBhcmUgbmVlZGVkIGluIHRoZSB2aWV3ZXIuXG4gICAqL1x