UNPKG

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 48.5 kB
export {}; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGRmLXZpZXdlci1hcHBsaWNhdGlvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1leHRlbmRlZC1wZGYtdmlld2VyL3NyYy9saWIvb3B0aW9ucy9wZGYtdmlld2VyLWFwcGxpY2F0aW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBPcHRpb25hbENvbnRlbnRDb25maWcgfSBmcm9tICcuL29wdGlvbmFsX2NvbnRlbnRfY29uZmlnJztcbmltcG9ydCB7IFBhc3N3b3JkUHJvbXB0IH0gZnJvbSAnLi9wYXNzd29yZC1wcm9tcHQnO1xuaW1wb3J0IHsgQW5ub3RhdGlvblN0b3JhZ2UsIFByaW50QW5ub3RhdGlvblN0b3JhZ2UgfSBmcm9tICcuL3BkZi1hbm5vdGF0aW9uLXN0b3JhZ2UnO1xuaW1wb3J0IHsgSUV2ZW50QnVzIH0gZnJvbSAnLi9wZGYtZXZlbnQtYnVzJztcbmltcG9ydCB7IFBhZ2VWaWV3cG9ydCB9IGZyb20gJy4vcGRmLXBhZ2Utdmlldy1wb3J0JztcbmltcG9ydCB7IElQREZWaWV3ZXIgfSBmcm9tICcuL3BkZi12aWV3ZXInO1xuaW1wb3J0IHsgSVBERlZpZXdlckFwcENvbmZpZyB9IGZyb20gJy4vcGRmLXZpZXdlci1hcHAtY29uZmlnJztcblxuZXhwb3J0IGludGVyZmFjZSBJV2ViTDEwbiB7XG4gIGdldChrZXk6IHN0cmluZywgYXJnczogYW55LCBmYWxsYmFja1N0cmluZzogc3RyaW5nKTogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFZpZXdIaXN0b3J5IHtcbiAgZ2V0KG5hbWU6IHN0cmluZywgZGVmYXVsdFZhbHVlPzogc3RyaW5nKTogUHJvbWlzZTxzdHJpbmc+O1xufVxuXG4vKipcbiAqIFBhZ2UgdGV4dCBjb250ZW50LlxuICovXG5leHBvcnQgdHlwZSBUZXh0Q29udGVudCA9IHtcbiAgLyoqXG4gICAqIC0gQXJyYXkgb2ZcbiAgICoge0BsaW5rIFRleHRJdGVtIH0gYW5kIHtAbGluayBUZXh0TWFya2VkQ29udGVudCB9IG9iamVjdHMuIFRleHRNYXJrZWRDb250ZW50XG4gICAqIGl0ZW1zIGFyZSBpbmNsdWRlZCB3aGVuIGluY2x1ZGVNYXJrZWRDb250ZW50IGlzIHRydWUuXG4gICAqL1xuICBpdGVtczogQXJyYXk8VGV4dEl0ZW0gfCBUZXh0TWFya2VkQ29udGVudD47XG59O1xuXG5leHBvcnQgaW50ZXJmYWNlIEZpbmRDb250cm9sbGVyIHtcbiAgX3BhZ2VNYXRjaGVzOiBBcnJheTxhbnk+O1xuICBfcGFnZU1hdGNoZXNDb2xvcjogQXJyYXk8bnVtYmVyPjtcbiAgX3BhZ2VNYXRjaGVzTGVuZ3RoOiBBcnJheTxudW1iZXI+O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIE1ldGFkYXRhIHtcbiAgZ2V0UmF3KCk6IGFueTtcbiAgZ2V0KG5hbWU6IGFueSk6IGFueTtcbiAgZ2V0QWxsKCk6IGFueTtcbiAgaGFzKG5hbWU6IGFueSk6IGFueTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBNZXNzYWdlSGFuZGxlciB7XG4gIHNvdXJjZU5hbWU6IGFueTtcbiAgdGFyZ2V0TmFtZTogYW55O1xuICBjb21PYmo6IGFueTtcbiAgY2FsbGJhY2tJZDogbnVtYmVyO1xuICBzdHJlYW1JZDogbnVtYmVyO1xuICBzdHJlYW1TaW5rczogYW55O1xuICBzdHJlYW1Db250cm9sbGVyczogYW55O1xuICBjYWxsYmFja0NhcGFiaWxpdGllczogYW55O1xuICBhY3Rpb25IYW5kbGVyOiBhbnk7XG4gIG9uKGFjdGlvbk5hbWU6IGFueSwgaGFuZGxlcjogYW55KTogdm9pZDtcbiAgLyoqXG4gICAqIFNlbmRzIGEgbWVzc2FnZSB0byB0aGUgY29tT2JqIHRvIGludm9rZSB0aGUgYWN0aW9uIHdpdGggdGhlIHN1cHBsaWVkIGRhdGEuXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBhY3Rpb25OYW1lIC0gQWN0aW9uIHRvIGNhbGwuXG4gICAqIEBwYXJhbSB7SlNPTn0gZGF0YSAtIEpTT04gZGF0YSB0byBzZW5kLlxuICAgKiBAcGFyYW0ge0FycmF5fSBbdHJhbnNmZXJzXSAtIExpc3Qgb2YgdHJhbnNmZXJzL0FycmF5QnVmZmVycy5cbiAgICovXG4gIHNlbmQoYWN0aW9uTmFtZTogc3RyaW5nLCBkYXRhOiBKU09OLCB0cmFuc2ZlcnM/OiBhbnlbXSB8IHVuZGVmaW5lZCk6IHZvaWQ7XG4gIC8qKlxuICAgKiBTZW5kcyBhIG1lc3NhZ2UgdG8gdGhlIGNvbU9iaiB0byBpbnZva2UgdGhlIGFjdGlvbiB3aXRoIHRoZSBzdXBwbGllZCBkYXRhLlxuICAgKiBFeHBlY3RzIHRoYXQgdGhlIG90aGVyIHNpZGUgd2lsbCBjYWxsYmFjayB3aXRoIHRoZSByZXNwb25zZS5cbiAgICogQHBhcmFtIHtzdHJpbmd9IGFjdGlvbk5hbWUgLSBBY3Rpb24gdG8gY2FsbC5cbiAgICogQHBhcmFtIHtKU09OfSBkYXRhIC0gSlNPTiBkYXRhIHRvIHNlbmQuXG4gICAqIEBwYXJhbSB7QXJyYXl9IFt0cmFuc2ZlcnNdIC0gTGlzdCBvZiB0cmFuc2ZlcnMvQXJyYXlCdWZmZXJzLlxuICAgKiBAcmV0dXJucyB7UHJvbWlzZX0gUHJvbWlzZSB0byBiZSByZXNvbHZlZCB3aXRoIHJlc3BvbnNlIGRhdGEuXG4gICAqL1xuICBzZW5kV2l0aFByb21pc2UoYWN0aW9uTmFtZTogc3RyaW5nLCBkYXRhOiBKU09OLCB0cmFuc2ZlcnM/OiBhbnlbXSB8IHVuZGVmaW5lZCk6IFByb21pc2U8YW55PjtcbiAgLyoqXG4gICAqIFNlbmRzIGEgbWVzc2FnZSB0byB0aGUgY29tT2JqIHRvIGludm9rZSB0aGUgYWN0aW9uIHdpdGggdGhlIHN1cHBsaWVkIGRhdGEuXG4gICAqIEV4cGVjdCB0aGF0IHRoZSBvdGhlciBzaWRlIHdpbGwgY2FsbGJhY2sgdG8gc2lnbmFsICdzdGFydF9jb21wbGV0ZScuXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBhY3Rpb25OYW1lIC0gQWN0aW9uIHRvIGNhbGwuXG4gICAqIEBwYXJhbSB7SlNPTn0gZGF0YSAtIEpTT04gZGF0YSB0byBzZW5kLlxuICAgKiBAcGFyYW0ge09iamVjdH0gcXVldWVpbmdTdHJhdGVneSAtIFN0cmF0ZWd5IHRvIHNpZ25hbCBiYWNrcHJlc3N1cmUgYmFzZWQgb25cbiAgICogICAgICAgICAgICAgICAgIGludGVybmFsIHF1ZXVlLlxuICAgKiBAcGFyYW0ge0FycmF5fSBbdHJhbnNmZXJzXSAtIExpc3Qgb2YgdHJhbnNmZXJzL0FycmF5QnVmZmVycy5cbiAgICogQHJldHVybnMge1JlYWRhYmxlU3RyZWFtfSBSZWFkYWJsZVN0cmVhbSB0byByZWFkIGRhdGEgaW4gY2h1bmtzLlxuICAgKi9cbiAgc2VuZFdpdGhTdHJlYW0oYWN0aW9uTmFtZTogc3RyaW5nLCBkYXRhOiBKU09OLCBxdWV1ZWluZ1N0cmF0ZWd5OiBPYmplY3QsIHRyYW5zZmVycz86IGFueVtdIHwgdW5kZWZpbmVkKTogUmVhZGFibGVTdHJlYW07XG5cbiAgZGVzdHJveSgpOiB2b2lkO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFBERldvcmtlciB7XG4gIG5hbWU6IGFueTtcbiAgZGVzdHJveWVkOiBib29sZWFuO1xuICB2ZXJib3NpdHk6IG51bWJlcjtcblxuICAvKipcbiAgICogUHJvbWlzZSBmb3Igd29ya2VyIGluaXRpYWxpemF0aW9uIGNvbXBsZXRpb24uXG4gICAqIEB0eXBlIHtQcm9taXNlPHZvaWQ+fVxuICAgKi9cbiAgZ2V0IHByb21pc2UoKTogUHJvbWlzZTx2b2lkPjtcbiAgLyoqXG4gICAqIFRoZSBjdXJyZW50IGB3b3JrZXJQb3J0YCwgd2hlbiBpdCBleGlzdHMuXG4gICAqIEB0eXBlIHtXb3JrZXJ9XG4gICAqL1xuICBnZXQgcG9ydCgpOiBXb3JrZXI7XG4gIC8qKlxuICAgKiBUaGUgY3VycmVudCBNZXNzYWdlSGFuZGxlci1pbnN0YW5jZS5cbiAgICogQHR5cGUge01lc3NhZ2VIYW5kbGVyfVxuICAgKi9cbiAgZ2V0IG1lc3NhZ2VIYW5kbGVyKCk6IE1lc3NhZ2VIYW5kbGVyO1xuICBfaW5pdGlhbGl6ZUZyb21Qb3J0KHBvcnQ6IGFueSk6IHZvaWQ7XG4gIF9pbml0aWFsaXplKCk6IHZvaWQ7XG4gIF9zZXR1cEZha2VXb3JrZXIoKTogdm9pZDtcbiAgLyoqXG4gICAqIERlc3Ryb3lzIHRoZSB3b3JrZXIgaW5zdGFuY2UuXG4gICAqL1xuICBkZXN0cm95KCk6IHZvaWQ7XG59XG5cbi8qKlxuICogRG9jdW1lbnQgaW5pdGlhbGl6YXRpb24gLyBsb2FkaW5nIHBhcmFtZXRlcnMgb2JqZWN0LlxuICovXG5leHBvcnQgdHlwZSBEb2N1bWVudEluaXRQYXJhbWV0ZXJzID0ge1xuICAvKipcbiAgICogLSBUaGUgVVJMIG9mIHRoZSBQREYuXG4gICAqL1xuICB1cmw/OiBzdHJpbmcgfCBVUkwgfCB1bmRlZmluZWQ7XG4gIC8qKlxuICAgKiAtIEJpbmFyeSBQREYgZGF0YS5cbiAgICogVXNlIFR5cGVkQXJyYXlzIChVaW50OEFycmF5KSB0byBpbXByb3ZlIHRoZSBtZW1vcnkgdXNhZ2UuIElmIFBERiBkYXRhIGlzXG4gICAqIEJBU0U2NC1lbmNvZGVkLCB1c2UgYGF0b2IoKWAgdG8gY29udmVydCBpdCB0byBhIGJpbmFyeSBzdHJpbmcgZmlyc3QuXG4gICAqXG4gICAqIE5PVEU6IElmIFR5cGVkQXJyYXlzIGFyZSB1c2VkIHRoZXkgd2lsbCBnZW5lcmFsbHkgYmUgdHJhbnNmZXJyZWQgdG8gdGhlXG4gICAqIHdvcmtlci10aHJlYWQuIFRoaXMgd2lsbCBoZWxwIHJlZHVjZSBtYWluLXRocmVhZCBtZW1vcnkgdXNhZ2UsIGhvd2V2ZXJcbiAgICogaXQgd2lsbCB0YWtlIG93bmVyc2hpcCBvZiB0aGUgVHlwZWRBcnJheXMuXG4gICAqL1xuICBkYXRhPzogQmluYXJ5RGF0YSB8IHVuZGVmaW5lZDtcbiAgLyoqXG4gICAqIC0gQmFzaWMgYXV0aGVudGljYXRpb24gaGVhZGVycy5cbiAgICovXG4gIGh0dHBIZWFkZXJzPzogT2JqZWN0IHwgdW5kZWZpbmVkO1xuICAvKipcbiAgICogLSBJbmRpY2F0ZXMgd2hldGhlciBvciBub3RcbiAgICogY3Jvc3Mtc2l0ZSBBY2Nlc3MtQ29udHJvbCByZXF1ZXN0cyBzaG91bGQgYmUgbWFkZSB1c2luZyBjcmVkZW50aWFscyBzdWNoXG4gICAqIGFzIGNvb2tpZXMgb3IgYXV0aG9yaXphdGlvbiBoZWFkZXJzLiBUaGUgZGVmYXVsdCBpcyBgZmFsc2VgLlxuICAgKi9cbiAgd2l0aENyZWRlbnRpYWxzPzogYm9vbGVhbiB8IHVuZGVmaW5lZDtcbiAgLyoqXG4gICAqIC0gRm9yIGRlY3J5cHRpbmcgcGFzc3dvcmQtcHJvdGVjdGVkIFBERnMuXG4gICAqL1xuICBwYXNzd29yZD86IHN0cmluZyB8IHVuZGVmaW5lZDtcbiAgLyoqXG4gICAqIC0gVGhlIFBERiBmaWxlIGxlbmd0aC4gSXQncyB1c2VkIGZvciBwcm9ncmVzc1xuICAgKiByZXBvcnRzIGFuZCByYW5nZSByZXF1ZXN0cyBvcGVyYXRpb25zLlxuICAgKi9cbiAgbGVuZ3RoPzogbnVtYmVyIHwgdW5kZWZpbmVkO1xuICAvKipcbiAgICogLSBBbGxvd3MgZm9yIHVzaW5nIGEgY3VzdG9tIHJhbmdlXG4gICAqIHRyYW5zcG9ydCBpbXBsZW1lbnRhdGlvbi5cbiAgICovXG4gIHJhbmdlPzogYW55IHwgdW5kZWZpbmVkO1xuICAvKipcbiAgICogLSBTcGVjaWZ5IG1heGltdW0gbnVtYmVyIG9mIGJ5dGVzIGZldGNoZWRcbiAgICogcGVyIHJhbmdlIHJlcXVlc3QuIFRoZSBkZWZhdWx0IHZhbHVlIGlzIHtAbGluayBERUZBVUxUX1JBTkdFX0NIVU5LX1NJWkUgfS5cbiAgICovXG4gIHJhbmdlQ2h1bmtTaXplPzogbnVtYmVyIHwgdW5kZWZpbmVkO1xuICAvKipcbiAgICogLSBUaGUgd29ya2VyIHRoYXQgd2lsbCBiZSB1c2VkIGZvciBsb2FkaW5nIGFuZFxuICAgKiBwYXJzaW5nIHRoZSBQREYgZGF0YS5cbiAgICovXG4gIHdvcmtlcj86IFBERldvcmtlciB8IHVuZGVmaW5lZDtcbiAgLyoqXG4gICAqIC0gQ29udHJvbHMgdGhlIGxvZ2dpbmcgbGV2ZWw7IHRoZSBjb25zdGFudHNcbiAgICogZnJvbSB7QGxpbmsgVmVyYm9zaXR5TGV2ZWwgfSBzaG91bGQgYmUgdXNlZC5cbiAgICovXG4gIHZlcmJvc2l0eT86IG51bWJlciB8IHVuZGVmaW5lZDtcbiAgLyoqXG4gICAqIC0gVGhlIGJhc2UgVVJMIG9mIHRoZSBkb2N1bWVudCwgdXNlZCB3aGVuXG4gICAqIGF0dGVtcHRpbmcgdG8gcmVjb3ZlciB2YWxpZCBhYnNvbHV0ZSBVUkxzIGZvciBhbm5vdGF0aW9ucywgYW5kIG91dGxpbmVcbiAgICogaXRlbXMsIHRoYXQgKGluY29ycmVjdGx5KSBvbmx5IHNwZWNpZnkgcmVsYXRpdmUgVVJMcy5cbiAgICovXG4gIGRvY0Jhc2VVcmw/OiBzdHJpbmcgfCB1bmRlZmluZWQ7XG4gIC8qKlxuICAgKiAtIFRoZSBVUkwgd2hlcmUgdGhlIHByZWRlZmluZWQgQWRvYmUgQ01hcHMgYXJlXG4gICAqIGxvY2F0ZWQuIEluY2x1ZGUgdGhlIHRyYWlsaW5nIHNsYXNoLlxuICAgKi9cbiAgY01hcFVybD86IHN0cmluZyB8IHVuZGVmaW5lZDtcbiAgLyoqXG4gICAqIC0gU3BlY2lmaWVzIGlmIHRoZSBBZG9iZSBDTWFwcyBhcmUgYmluYXJ5XG4gICAqIHBhY2tlZCBvciBub3QuIFRoZSBkZWZhdWx0IHZhbHVlIGlzIGB0cnVlYC5cbiAgICovXG4gIGNNYXBQYWNrZWQ/OiBib29sZWFuIHwgdW5kZWZpbmVkO1xuICAvKipcbiAgICogLSBUaGUgZmFjdG9yeSB0aGF0IHdpbGwgYmUgdXNlZCB3aGVuXG4gICAqIHJlYWRpbmcgYnVpbHQtaW4gQ01hcCBmaWxlcy4gUHJvdmlkaW5nIGEgY3VzdG9tIGZhY3RvcnkgaXMgdXNlZnVsIGZvclxuICAgKiBlbnZpcm9ubWVudHMgd2l0aG91dCBGZXRjaCBBUEkgb3IgYFhNTEh0dHBSZXF1ZXN0YCBzdXBwb3J0LCBzdWNoIGFzXG4gICAqIE5vZGUuanMuIFRoZSBkZWZhdWx0IHZhbHVlIGlzIHtET01DTWFwUmVhZGVyRmFjdG9yeX0uXG4gICAqL1xuICBDTWFwUmVhZGVyRmFjdG9yeT86IE9iamVjdCB8IHVuZGVmaW5lZDtcbiAgLyoqXG4gICAqIC0gV2hlbiBgdHJ1ZWAsIGZvbnRzIHRoYXQgYXJlbid0XG4gICAqIGVtYmVkZGVkIGluIHRoZSBQREYgZG9jdW1lbnQgd2lsbCBmYWxsYmFjayB0byBhIHN5c3RlbSBmb250LlxuICAgKiBUaGUgZGVmYXVsdCB2YWx1ZSBpcyBgdHJ1ZWAgaW4gd2ViIGVudmlyb25tZW50cyBhbmQgYGZhbHNlYCBpbiBOb2RlLmpzO1xuICAgKiB1bmxlc3MgYGRpc2FibGVGb250RmFjZSA9PT0gdHJ1ZWAgaW4gd2hpY2ggY2FzZSB0aGlzIGRlZmF1bHRzIHRvIGBmYWxzZWBcbiAgICogcmVnYXJkbGVzcyBvZiB0aGUgZW52aXJvbm1lbnQgKHRvIHByZXZlbnQgY29tcGxldGVseSBicm9rZW4gZm9udHMpLlxuICAgKi9cbiAgdXNlU3lzdGVtRm9udHM/OiBib29sZWFuIHwgdW5kZWZpbmVkO1xuICAvKipcbiAgICogLSBUaGUgVVJMIHdoZXJlIHRoZSBzdGFuZGFyZCBmb250XG4gICAqIGZpbGVzIGFyZSBsb2NhdGVkLiBJbmNsdWRlIHRoZSB0cmFpbGluZyBzbGFzaC5cbiAgICovXG4gIHN0YW5kYXJkRm9udERhdGFVcmw/OiBzdHJpbmcgfCB1bmRlZmluZWQ7XG4gIC8qKlxuICAgKiAtIFRoZSBmYWN0b3J5IHRoYXQgd2lsbCBiZSB1c2VkXG4gICAqIHdoZW4gcmVhZGluZyB0aGUgc3RhbmRhcmQgZm9udCBmaWxlcy4gUHJvdmlkaW5nIGEgY3VzdG9tIGZhY3RvcnkgaXMgdXNlZnVsXG4gICAqIGZvciBlbnZpcm9ubWVudHMgd2l0aG91dCBGZXRjaCBBUEkgb3IgYFhNTEh0dHBSZXF1ZXN0YCBzdXBwb3J0LCBzdWNoIGFzXG4gICAqIE5vZGUuanMuIFRoZSBkZWZhdWx0IHZhbHVlIGlzIHtET01TdGFuZGFyZEZvbnREYXRhRmFjdG9yeX0uXG4gICAqL1xuICBTdGFuZGFyZEZvbnREYXRhRmFjdG9yeT86IE9iamVjdCB8IHVuZGVmaW5lZDtcbiAgLyoqXG4gICAqIC0gRW5hYmxlIHVzaW5nIHRoZSBGZXRjaCBBUEkgaW4gdGhlXG4gICAqIHdvcmtlci10aHJlYWQgd2hlbiByZWFkaW5nIENNYXAgYW5kIHN0YW5kYXJkIGZvbnQgZmlsZXMuIFdoZW4gYHRydWVgLFxuICAgKiB0aGUgYENNYXBSZWFkZXJGYWN0b3J5YCBhbmQgYFN0YW5kYXJkRm9udERhdGFGYWN0b3J5YCBvcHRpb25zIGFyZSBpZ25vcmVkLlxuICAgKiBUaGUgZGVmYXVsdCB2YWx1ZSBpcyBgdHJ1ZWAgaW4gd2ViIGVudmlyb25tZW50cyBhbmQgYGZhbHNlYCBpbiBOb2RlLmpzLlxuICAgKi9cbiAgdXNlV29ya2VyRmV0Y2g/OiBib29sZWFuIHwgdW5kZWZpbmVkO1xuICAvKipcbiAgICogLSBSZWplY3QgY2VydGFpbiBwcm9taXNlcywgZS5nLlxuICAgKiBgZ2V0T3BlcmF0b3JMaXN0YCwgYGdldFRleHRDb250ZW50YCwgYW5kIGBSZW5kZXJUYXNrYCwgd2hlbiB0aGUgYXNzb2NpYXRlZFxuICAgKiBQREYgZGF0YSBjYW5ub3QgYmUgc3VjY2Vzc2Z1bGx5IHBhcnNlZCwgaW5zdGVhZCBvZiBhdHRlbXB0aW5nIHRvIHJlY292ZXJcbiAgICogd2hhdGV2ZXIgcG9zc2libGUgb2YgdGhlIGRhdGEuIFRoZSBkZWZhdWx0IHZhbHVlIGlzIGBmYWxzZWAuXG4gICAqL1xuICBzdG9wQXRFcnJvcnM/OiBib29sZWFuIHwgdW5kZWZpbmVkO1xuICAvKipcbiAgICogLSBUaGUgbWF4aW11bSBhbGxvd2VkIGltYWdlIHNpemUgaW4gdG90YWxcbiAgICogcGl4ZWxzLCBpLmUuIHdpZHRoICogaGVpZ2h0LiBJbWFnZXMgYWJvdmUgdGhpcyB2YWx1ZSB3aWxsIG5vdCBiZSByZW5kZXJlZC5cbiAgICogVXNlIC0xIGZvciBubyBsaW1pdCwgd2hpY2ggaXMgYWxzbyB0aGUgZGVmYXVsdCB2YWx1ZS5cbiAgICovXG4gIG1heEltYWdlU2l6ZT86IG51bWJlciB8IHVuZGVmaW5lZDtcbiAgLyoqXG4gICAqIC0gRGV0ZXJtaW5lcyBpZiB3ZSBjYW4gZXZhbHVhdGUgc3RyaW5nc1xuICAgKiBhcyBKYXZhU2NyaXB0LiBQcmltYXJpbHkgdXNlZCB0byBpbXByb3ZlIHBlcmZvcm1hbmNlIG9mIGZvbnQgcmVuZGVyaW5nLCBhbmRcbiAgICogd2hlbiBwYXJzaW5nIFBERiBmdW5jdGlvbnMuIFRoZSBkZWZhdWx0IHZhbHVlIGlzIGB0cnVlYC5cbiAgICovXG4gIGlzRXZhbFN1cHBvcnRlZD86IGJvb2xlYW4gfCB1bmRlZmluZWQ7XG4gIC8qKlxuICAgKiAtIERldGVybWluZXMgaWYgd2UgY2FuIHVzZVxuICAgKiBgT2Zmc2NyZWVuQ2FudmFzYCBpbiB0aGUgd29ya2VyLiBQcmltYXJpbHkgdXNlZCB0byBpbXByb3ZlIHBlcmZvcm1hbmNlIG9mXG4gICAqIGltYWdlIGNvbnZlcnNpb24vcmVuZGVyaW5nLlxuICAgKiBUaGUgZGVmYXVsdCB2YWx1ZSBpcyBgdHJ1ZWAgaW4gd2ViIGVudmlyb25tZW50cyBhbmQgYGZhbHNlYCBpbiBOb2RlLmpzLlxuICAgKi9cbiAgaXNPZmZzY3JlZW5DYW52YXNTdXBwb3J0ZWQ/OiBib29sZWFuIHwgdW5kZWZpbmVkO1xuICAvKipcbiAgICogLSBCeSBkZWZhdWx0IGZvbnRzIGFyZSBjb252ZXJ0ZWQgdG9cbiAgICogT3BlblR5cGUgZm9udHMgYW5kIGxvYWRlZCB2aWEgdGhlIEZvbnQgTG9hZGluZyBBUEkgb3IgYEBmb250LWZhY2VgIHJ1bGVzLlxuICAgKiBJZiBkaXNhYmxlZCwgZm9udHMgd2lsbCBiZSByZW5kZXJlZCB1c2luZyBhIGJ1aWx0LWluIGZvbnQgcmVuZGVyZXIgdGhhdFxuICAgKiBjb25zdHJ1Y3RzIHRoZSBnbHlwaHMgd2l0aCBwcmltaXRpdmUgcGF0aCBjb21tYW5kcy5cbiAgICogVGhlIGRlZmF1bHQgdmFsdWUgaXMgYGZhbHNlYCBpbiB3ZWIgZW52aXJvbm1lbnRzIGFuZCBgdHJ1ZWAgaW4gTm9kZS5qcy5cbiAgICovXG4gIGRpc2FibGVGb250RmFjZT86IGJvb2xlYW4gfCB1bmRlZmluZWQ7XG4gIC8qKlxuICAgKiAtIEluY2x1ZGUgYWRkaXRpb25hbCBwcm9wZXJ0aWVzLFxuICAgKiB3aGljaCBhcmUgdW51c2VkIGR1cmluZyByZW5kZXJpbmcgb2YgUERGIGRvY3VtZW50cywgd2hlbiBleHBvcnRpbmcgdGhlXG4gICAqIHBhcnNlZCBmb250IGRhdGEgZnJvbSB0aGUgd29ya2VyLXRocmVhZC4gVGhpcyBtYXkgYmUgdXNlZnVsIGZvciBkZWJ1Z2dpbmdcbiAgICogcHVycG9zZXMgKGFuZCBiYWNrd2FyZHMgY29tcGF0aWJpbGl0eSksIGJ1dCBub3RlIHRoYXQgaXQgd2lsbCBsZWFkIHRvXG4gICAqIGluY3JlYXNlZCBtZW1vcnkgdXNhZ2UuIFRoZSBkZWZhdWx0IHZhbHVlIGlzIGBmYWxzZWAuXG4gICAqL1xuICBmb250RXh0cmFQcm9wZXJ0aWVzPzogYm9vbGVhbiB8IHVuZGVmaW5lZDtcbiAgLyoqXG4gICAqIC0gUmVuZGVyIFhmYSBmb3JtcyBpZiBhbnkuXG4gICAqIFRoZSBkZWZhdWx0IHZhbHVlIGlzIGBmYWxzZWAuXG4gICAqL1xuICBlbmFibGVYZmE/OiBib29sZWFuIHwgdW5kZWZpbmVkO1xuICAvKipcbiAgICogLSBTcGVjaWZ5IGFuIGV4cGxpY2l0IGRvY3VtZW50XG4gICAqIGNvbnRleHQgdG8gY3JlYXRlIGVsZW1lbnRzIHdpdGggYW5kIHRvIGxvYWQgcmVzb3VyY2VzLCBzdWNoIGFzIGZvbnRzLFxuICAgKiBpbnRvLiBEZWZhdWx0cyB0byB0aGUgY3VycmVudCBkb2N1bWVudC5cbiAgICovXG4gIG93bmVyRG9jdW1lbnQ/OiBIVE1MRG9jdW1lbnQgfCB1bmRlZmluZWQ7XG4gIC8qKlxuICAgKiAtIERpc2FibGUgcmFuZ2UgcmVxdWVzdCBsb2FkaW5nIG9mIFBERlxuICAgKiBmaWxlcy4gV2hlbiBlbmFibGVkLCBhbmQgaWYgdGhlIHNlcnZlciBzdXBwb3J0cyBwYXJ0aWFsIGNvbnRlbnQgcmVxdWVzdHMsXG4gICAqIHRoZW4gdGhlIFBERiB3aWxsIGJlIGZldGNoZWQgaW4gY2h1bmtzLiBUaGUgZGVmYXVsdCB2YWx1ZSBpcyBgZmFsc2VgLlxuICAgKi9cbiAgZGlzYWJsZVJhbmdlPzogYm9vbGVhbiB8IHVuZGVmaW5lZDtcbiAgLyoqXG4gICAqIC0gRGlzYWJsZSBzdHJlYW1pbmcgb2YgUERGIGZpbGUgZGF0YS5cbiAgICogQnkgZGVmYXVsdCBQREYuanMgYXR0ZW1wdHMgdG8gbG9hZCBQREYgZmlsZXMgaW4gY2h1bmtzLiBUaGUgZGVmYXVsdCB2YWx1ZVxuICAgKiBpcyBgZmFsc2VgLlxuICAgKi9cbiAgZGlzYWJsZVN0cmVhbT86IGJvb2xlYW4gfCB1bmRlZmluZWQ7XG4gIC8qKlxuICAgKiAtIERpc2FibGUgcHJlLWZldGNoaW5nIG9mIFBERiBmaWxlXG4gICAqIGRhdGEuIFdoZW4gcmFuZ2UgcmVxdWVzdHMgYXJlIGVuYWJsZWQgUERGLmpzIHdpbGwgYXV0b21hdGljYWxseSBrZWVwXG4gICAqIGZldGNoaW5nIG1vcmUgZGF0YSBldmVuIGlmIGl0IGlzbid0IG5lZWRlZCB0byBkaXNwbGF5IHRoZSBjdXJyZW50IHBhZ2UuXG4gICAqIFRoZSBkZWZhdWx0IHZhbHVlIGlzIGBmYWxzZWAuXG4gICAqXG4gICAqIE5PVEU6IEl0IGlzIGFsc28gbmVjZXNzYXJ5IHRvIGRpc2FibGUgc3RyZWFtaW5nLCBzZWUgYWJvdmUsIGluIG9yZGVyIGZvclxuICAgKiBkaXNhYmxpbmcgb2YgcHJlLWZldGNoaW5nIHRvIHdvcmsgY29ycmVjdGx5LlxuICAgKi9cbiAgZGlzYWJsZUF1dG9GZXRjaD86IGJvb2xlYW4gfCB1bmRlZmluZWQ7XG4gIC8qKlxuICAgKiAtIEVuYWJsZXMgc3BlY2lhbCBob29rcyBmb3IgZGVidWdnaW5nIFBERi5qc1xuICAgKiAoc2VlIGB3ZWIvZGVidWdnZXIuanNgKS4gVGhlIGRlZmF1bHQgdmFsdWUgaXMgYGZhbHNlYC5cbiAgICovXG4gIHBkZkJ1Zz86IGJvb2xlYW4gfCB1bmRlZmluZWQ7XG59O1xuZXhwb3J0IHR5cGUgT25Qcm9ncmVzc1BhcmFtZXRlcnMgPSB7XG4gIC8qKlxuICAgKiAtIEN1cnJlbnRseSBsb2FkZWQgbnVtYmVyIG9mIGJ5dGVzLlxuICAgKi9cbiAgbG9hZGVkOiBudW1iZXI7XG4gIC8qKlxuICAgKiAtIFRvdGFsIG51bWJlciBvZiBieXRlcyBpbiB0aGUgUERGIGZpbGUuXG4gICAqL1xuICB0b3RhbDogbnVtYmVyO1xufTtcblxuLyoqXG4gKiBQYWdlIGFubm90YXRpb24gcGFyYW1ldGVycy5cbiAqL1xuZXhwb3J0IHR5cGUgR2V0QW5ub3RhdGlvbnNQYXJhbWV0ZXJzID0ge1xuICAvKipcbiAgICogLSBEZXRlcm1pbmVzIHRoZSBhbm5vdGF0aW9ucyB0aGF0IGFyZSBmZXRjaGVkLFxuICAgKiBjYW4gYmUgJ2Rpc3BsYXknICh2aWV3YWJsZSBhbm5vdGF0aW9ucyksICdwcmludCcgKHByaW50YWJsZSBhbm5vdGF0aW9ucyksXG4gICAqIG9yICdhbnknIChhbGwgYW5ub3RhdGlvbnMpLiBUaGUgZGVmYXVsdCB2YWx1ZSBpcyAnZGlzcGxheScuXG4gICAqL1xuICBpbnRlbnQ/OiBzdHJpbmcgfCB1bmRlZmluZWQ7XG59O1xuXG5leHBvcnQgdHlwZSBUZXh0SXRlbSA9IHtcbiAgLyoqXG4gICAqIC0gVGV4dCBjb250ZW50LlxuICAgKi9cbiAgc3RyOiBzdHJpbmc7XG4gIC8qKlxuICAgKiAtIFRleHQgZGlyZWN0aW9uOiAndHRiJywgJ2x0cicgb3IgJ3J0bCcuXG4gICAqL1xuICBkaXI6IHN0cmluZztcbiAgLyoqXG4gICAqIC0gVHJhbnNmb3JtYXRpb24gbWF0cml4LlxuICAgKi9cbiAgdHJhbnNmb3JtOiBBcnJheTxhbnk+O1xuICAvKipcbiAgICogLSBXaWR0aCBpbiBkZXZpY2Ugc3BhY2UuXG4gICAqL1xuICB3aWR0aDogbnVtYmVyO1xuICAvKipcbiAgICogLSBIZWlnaHQgaW4gZGV2aWNlIHNwYWNlLlxuICAgKi9cbiAgaGVpZ2h0OiBudW1iZXI7XG4gIC8qKlxuICAgKiAtIEZvbnQgbmFtZSB1c2VkIGJ5IFBERi5qcyBmb3IgY29udmVydGVkIGZvbnQuXG4gICAqL1xuICBmb250TmFtZTogc3RyaW5nO1xuICAvKipcbiAgICogLSBJbmRpY2F0aW5nIGlmIHRoZSB0ZXh0IGNvbnRlbnQgaXMgZm9sbG93ZWQgYnkgYVxuICAgKiBsaW5lLWJyZWFrLlxuICAgKi9cbiAgaGFzRU9MOiBib29sZWFuO1xufTtcblxuLyoqXG4gKiBQYWdlIHRleHQgbWFya2VkIGNvbnRlbnQgcGFydC5cbiAqL1xuZXhwb3J0IHR5cGUgVGV4dE1hcmtlZENvbnRlbnQgPSB7XG4gIC8qKlxuICAgKiAtIEVpdGhlciAnYmVnaW5NYXJrZWRDb250ZW50JyxcbiAgICogJ2JlZ2luTWFya2VkQ29udGVudFByb3BzJywgb3IgJ2VuZE1hcmtlZENvbnRlbnQnLlxuICAgKi9cbiAgdHlwZTogc3RyaW5nO1xuICAvKipcbiAgICogLSBUaGUgbWFya2VkIGNvbnRlbnQgaWRlbnRpZmllci4gT25seSB1c2VkIGZvciB0eXBlXG4gICAqICdiZWdpbk1hcmtlZENvbnRlbnRQcm9wcycuXG4gICAqL1xuICBpZDogc3RyaW5nO1xufTtcblxuLyoqXG4gKiBBIFBERiBkb2N1bWVudCBhbmQgcGFnZSBpcyBidWlsdCBvZiBtYW55IG9iamVjdHMuIEUuZy4gdGhlcmUgYXJlIG9iamVjdHMgZm9yXG4gKiBmb250cywgaW1hZ2VzLCByZW5kZXJpbmcgY29kZSwgZXRjLiBUaGVzZSBvYmplY3RzIG1heSBnZXQgcHJvY2Vzc2VkIGluc2lkZSBvZlxuICogYSB3b3JrZXIuIFRoaXMgY2xhc3MgaW1wbGVtZW50cyBzb21lIGJhc2ljIG1ldGhvZHMgdG8gbWFuYWdlIHRoZXNlIG9iamVjdHMuXG4gKi9cbmRlY2xhcmUgaW50ZXJmYWNlIFBERk9iamVjdHMge1xuICAvKipcbiAgICogSWYgY2FsbGVkICp3aXRob3V0KiBjYWxsYmFjaywgdGhpcyByZXR1cm5zIHRoZSBkYXRhIG9mIGBvYmpJZGAgYnV0IHRoZVxuICAgKiBvYmplY3QgbmVlZHMgdG8gYmUgcmVzb2x2ZWQuIElmIGl0IGlzbid0LCB0aGlzIG1ldGhvZCB0aHJvd3MuXG4gICAqXG4gICAqIElmIGNhbGxlZCAqd2l0aCogYSBjYWxsYmFjaywgdGhlIGNhbGxiYWNrIGlzIGNhbGxlZCB3aXRoIHRoZSBkYXRhIG9mIHRoZVxuICAgKiBvYmplY3Qgb25jZSB0aGUgb2JqZWN0IGlzIHJlc29sdmVkLiBUaGF0IG1lYW5zLCBpZiB5b3UgY2FsbCB0aGlzIG1ldGhvZFxuICAgKiBhbmQgdGhlIG9iamVjdCBpcyBhbHJlYWR5IHJlc29sdmVkLCB0aGUgY2FsbGJhY2sgZ2V0cyBjYWxsZWQgcmlnaHQgYXdheS5cbiAgICpcbiAgICogQHBhcmFtIHtzdHJpbmd9IG9iaklkXG4gICAqIEBwYXJhbSB7ZnVuY3Rpb259IFtjYWxsYmFja11cbiAgICogQHJldHVybnMge2FueX1cbiAgICovXG4gIGdldChvYmpJZDogc3RyaW5nLCBjYWxsYmFjaz86IEZ1bmN0aW9uIHwgdW5kZWZpbmVkKTogYW55O1xuICAvKipcbiAgICogQHBhcmFtIHtzdHJpbmd9IG9iaklkXG4gICAqIEByZXR1cm5zIHtib29sZWFufVxuICAgKi9cbiAgaGFzKG9iaklkOiBzdHJpbmcpOiBib29sZWFuO1xuICAvKipcbiAgICogUmVzb2x2ZXMgdGhlIG9iamVjdCBgb2JqSWRgIHdpdGggb3B0aW9uYWwgYGRhdGFgLlxuICAgKlxuICAgKiBAcGFyYW0ge3N0cmluZ30gb2JqSWRcbiAgICogQHBhcmFtIHthbnl9IFtkYXRhXVxuICAgKi9cbiAgcmVzb2x2ZShvYmpJZDogc3RyaW5nLCBkYXRhPzogYW55KTogdm9pZDtcbiAgY2xlYXIoKTogdm9pZDtcbn1cblxuZXhwb3J0IHR5cGUgUmVmUHJveHkgPSB7XG4gIG51bTogbnVtYmVyO1xuICBnZW46IG51bWJlcjtcbn07XG5cbi8qKlxuICogUGFnZSBnZXRWaWV3cG9ydCBwYXJhbWV0ZXJzLlxuICovXG5leHBvcnQgdHlwZSBHZXRWaWV3cG9ydFBhcmFtZXRlcnMgPSB7XG4gIC8qKlxuICAgKiAtIFRoZSBkZXNpcmVkIHNjYWxlIG9mIHRoZSB2aWV3cG9ydC5cbiAgICovXG4gIHNjYWxlOiBudW1iZXI7XG4gIC8qKlxuICAgKiAtIFRoZSBkZXNpcmVkIHJvdGF0aW9uLCBpbiBkZWdyZWVzLCBvZlxuICAgKiB0aGUgdmlld3BvcnQuIElmIG9taXR0ZWQgaXQgZGVmYXVsdHMgdG8gdGhlIHBhZ2Ugcm90YXRpb24uXG4gICAqL1xuICByb3RhdGlvbj86IG51bWJlciB8IHVuZGVmaW5lZDtcbiAgLyoqXG4gICAqIC0gVGhlIGhvcml6b250YWwsIGkuZS4geC1heGlzLCBvZmZzZXQuXG4gICAqIFRoZSBkZWZhdWx0IHZhbHVlIGlzIGAwYC5cbiAgICovXG4gIG9mZnNldFg/OiBudW1iZXIgfCB1bmRlZmluZWQ7XG4gIC8qKlxuICAgKiAtIFRoZSB2ZXJ0aWNhbCwgaS5lLiB5LWF4aXMsIG9mZnNldC5cbiAgICogVGhlIGRlZmF1bHQgdmFsdWUgaXMgYDBgLlxuICAgKi9cbiAgb2Zmc2V0WT86IG51bWJlciB8IHVuZGVmaW5lZDtcbiAgLyoqXG4gICAqIC0gSWYgdHJ1ZSwgdGhlIHktYXhpcyB3aWxsIG5vdCBiZVxuICAgKiBmbGlwcGVkLiBUaGUgZGVmYXVsdCB2YWx1ZSBpcyBgZmFsc2VgLlxuICAgKi9cbiAgZG9udEZsaXA/OiBib29sZWFuIHwgdW5kZWZpbmVkO1xufTtcblxuZXhwb3J0IGludGVyZmFjZSBQREZEYXRlU3RyaW5nIHtcbiAgLyoqXG4gICAqIENvbnZlcnQgYSBQREYgZGF0ZSBzdHJpbmcgdG8gYSBKYXZhU2NyaXB0IGBEYXRlYCBvYmplY3QuXG4gICAqXG4gICAqIFRoZSBQREYgZGF0ZSBzdHJpbmcgZm9ybWF0IGlzIGRlc2NyaWJlZCBpbiBzZWN0aW9uIDcuOS40IG9mIHRoZSBvZmZpY2lhbFxuICAgKiBQREYgMzIwMDAtMToyMDA4IHNwZWNpZmljYXRpb24uIEhvd2V2ZXIsIGluIHRoZSBQREYgMS43IHJlZmVyZW5jZSAoc2l4dGhcbiAgICogZWRpdGlvbikgQWRvYmUgZGVzY3JpYmVzIHRoZSBzYW1lIGZvcm1hdCBpbmNsdWRpbmcgYSB0cmFpbGluZyBhcG9zdHJvcGhlLlxuICAgKiBUaGlzIHN5bnRheCBpbiBpbmNvcnJlY3QsIGJ1dCBBZG9iZSBBY3JvYmF0IGNyZWF0ZXMgUERGIGZpbGVzIHRoYXQgY29udGFpblxuICAgKiB0aGVtLiBXZSBpZ25vcmUgYWxsIGFwb3N0cm9waGVzIGFzIHRoZXkgYXJlIG5vdCBuZWNlc3NhcnkgZm9yIGRhdGUgcGFyc2luZy5cbiAgICpcbiAgICogTW9yZW92ZXIsIEFkb2JlIEFjcm9iYXQgZG9lc24ndCBoYW5kbGUgY2hhbmdpbmcgdGhlIGRhdGUgdG8gdW5pdmVyc2FsIHRpbWVcbiAgICogYW5kIGRvZXNuJ3QgdXNlIHRoZSB1c2VyJ3MgdGltZSB6b25lIChlZmZlY3RpdmVseSBpZ25vcmluZyB0aGUgSEgnIGFuZCBtbSdcbiAgICogcGFydHMgb2YgdGhlIGRhdGUgc3RyaW5nKS5cbiAgICpcbiAgICogQHBhcmFtIHtzdHJpbmd9IGlucHV0XG4gICAqIEByZXR1cm5zIHtEYXRlfG51bGx9XG4gICAqL1xuICAvLyBzdGF0aWMgdG9EYXRlT2JqZWN0KGlucHV0OiBzdHJpbmcpOiBEYXRlIHwgbnVsbDtcbn1cblxuLyoqXG4gKiBQYWdlIGdldFRleHRDb250ZW50IHBhcmFtZXRlcnMuXG4gKi9cbmV4cG9ydCB0eXBlIGdldFRleHRDb250ZW50UGFyYW1ldGVycyA9IHtcbiAgLyoqXG4gICAqIC0gRG8gbm90IGF0dGVtcHQgdG8gY29tYmluZVxuICAgKiBzYW1lIGxpbmUge0BsaW5rIFRleHRJdGVtIH0ncy4gVGhlIGRlZmF1bHQgdmFsdWUgaXMgYGZhbHNlYC5cbiAgICovXG4gIGRpc2FibGVDb21iaW5lVGV4dEl0ZW1zOiBib29sZWFuO1xuICAvKipcbiAgICogLSBXaGVuIHRydWUgaW5jbHVkZSBtYXJrZWRcbiAgICogY29udGVudCBpdGVtcyBpbiB0aGUgaXRlbXMgYXJyYXkgb2YgVGV4dENvbnRlbnQuIFRoZSBkZWZhdWx0IGlzIGBmYWxzZWAuXG4gICAqL1xuICBpbmNsdWRlTWFya2VkQ29udGVudD86IGJvb2xlYW4gfCB1bmRlZmluZWQ7XG59O1xuXG4vKipcbiAqIEFsbG93cyBjb250cm9sbGluZyBvZiB0aGUgcmVuZGVyaW5nIHRhc2tzLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFJlbmRlclRhc2sge1xuICAvKipcbiAgICogQ2FsbGJhY2sgZm9yIGluY3JlbWVudGFsIHJlbmRlcmluZyAtLSBhIGZ1bmN0aW9uIHRoYXQgd2lsbCBiZSBjYWxsZWRcbiAgICogZWFjaCB0aW1lIHRoZSByZW5kZXJpbmcgaXMgcGF1c2VkLiAgVG8gY29udGludWUgcmVuZGVyaW5nIGNhbGwgdGhlXG4gICAqIGZ1bmN0aW9uIHRoYXQgaXMgdGhlIGZpcnN0IGFyZ3VtZW50IHRvIHRoZSBjYWxsYmFjay5cbiAgICogQHR5cGUge2Z1bmN0aW9ufVxuICAgKi9cbiAgb25Db250aW51ZTogRnVuY3Rpb247XG4gIC8qKlxuICAgKiBQcm9taXNlIGZvciByZW5kZXJpbmcgdGFzayBjb21wbGV0aW9uLlxuICAgKiBAdHlwZSB7UHJvbWlzZTx2b2lkPn1cbiAgICovXG4gIGdldCBwcm9taXNlKCk6IFByb21pc2U8dm9pZD47XG4gIC8qKlxuICAgKiBDYW5jZWxzIHRoZSByZW5kZXJpbmcgdGFzay4gSWYgdGhlIHRhc2sgaXMgY3VycmVudGx5IHJlbmRlcmluZyBpdCB3aWxsXG4gICAqIG5vdCBiZSBjYW5jZWxsZWQgdW50aWwgZ3JhcGhpY3MgcGF1c2VzIHdpdGggYSB0aW1lb3V0LiBUaGUgcHJvbWlzZSB0aGF0XG4gICAqIHRoaXMgb2JqZWN0IGV4dGVuZHMgd2lsbCBiZSByZWplY3RlZCB3aGVuIGNhbmNlbGxlZC5cbiAgICpcbiAgICogQHBhcmFtIHtudW1iZXJ9IFtleHRyYURlbGF5XVxuICAgKi9cbiAgY2FuY2VsKGV4dHJhRGVsYXk/OiBudW1iZXIgfCB1bmRlZmluZWQpOiB2b2lkO1xuICAvKipcbiAgICogV2hldGhlciBmb3JtIGZpZWxkcyBhcmUgcmVuZGVyZWQgc2VwYXJhdGVseSBmcm9tIHRoZSBtYWluIG9wZXJhdG9yTGlzdC5cbiAgICogQHR5cGUge2Jvb2xlYW59XG4gICAqL1xuICBnZXQgc2VwYXJhdGVBbm5vdHMoKTogYm9vbGVhbjtcbn1cblxuLyoqXG4gKiBQYWdlIHJlbmRlciBwYXJhbWV0ZXJzLlxuICovXG5leHBvcnQgdHlwZSBSZW5kZXJQYXJhbWV0ZXJzID0ge1xuICAvKipcbiAgICogLSBBIDJEIGNvbnRleHQgb2YgYSBET00gQ2FudmFzIG9iamVjdC5cbiAgICovXG4gIGNhbnZhc0NvbnRleHQ6IE9iamVjdDtcbiAgLyoqXG4gICAqIC0gUmVuZGVyaW5nIHZpZXdwb3J0IG9idGFpbmVkIGJ5IGNhbGxpbmdcbiAgICogdGhlIGBQREZQYWdlUHJveHkuZ2V0Vmlld3BvcnRgIG1ldGhvZC5cbiAgICovXG4gIHZpZXdwb3J0OiBQYWdlVmlld3BvcnQ7XG4gIC8qKlxuICAgKiAtIFJlbmRlcmluZyBpbnRlbnQsIGNhbiBiZSAnZGlzcGxheScsICdwcmludCcsXG4gICAqIG9yICdhbnknLiBUaGUgZGVmYXVsdCB2YWx1ZSBpcyAnZGlzcGxheScuXG4gICAqL1xuICBpbnRlbnQ/OiBzdHJpbmcgfCB1bmRlZmluZWQ7XG4gIC8qKlxuICAgKiBDb250cm9scyB3aGljaCBhbm5vdGF0aW9ucyBhcmUgcmVuZGVyZWRcbiAgICogb250byB0aGUgY2FudmFzLCBmb3IgYW5ub3RhdGlvbnMgd2l0aCBhcHBlYXJhbmNlLWRhdGE7IHRoZSB2YWx1ZXMgZnJvbVxuICAgKiB7QGxpbmsgQW5ub3RhdGlvbk1vZGUgfSBzaG91bGQgYmUgdXNlZC4gVGhlIGZvbGxvd2luZyB2YWx1ZXMgYXJlIHN1cHBvcnRlZDpcbiAgICogLSBgQW5ub3RhdGlvbk1vZGUuRElTQUJMRWAsIHdoaWNoIGRpc2FibGVzIGFsbCBhbm5vdGF0aW9ucy5cbiAgICogLSBgQW5ub3RhdGlvbk1vZGUuRU5BQkxFYCwgd2hpY2ggaW5jbHVkZXMgYWxsIHBvc3NpYmxlIGFubm90YXRpb25zICh0aHVzXG4gICAqIGl0IGFsc28gZGVwZW5kcyBvbiB0aGUgYGludGVudGAtb3B0aW9uLCBzZWUgYWJvdmUpLlxuICAgKiAtIGBBbm5vdGF0aW9uTW9kZS5FTkFCTEVfRk9STVNgLCB3aGljaCBleGNsdWRlcyBhbm5vdGF0aW9ucyB0aGF0IGNvbnRhaW5cbiAgICogaW50ZXJhY3RpdmUgZm9ybSBlbGVtZW50cyAodGhvc2Ugd2lsbCBiZSByZW5kZXJlZCBpbiB0aGUgZGlzcGxheSBsYXllcikuXG4gICAqIC0gYEFubm90YXRpb25Nb2RlLkVOQUJMRV9TVE9SQUdFYCwgd2hpY2ggaW5jbHVkZXMgYWxsIHBvc3NpYmxlIGFubm90YXRpb25zXG4gICAqIChhcyBhYm92ZSkgYnV0IHdoZXJlIGludGVyYWN0aXZlIGZvcm0gZWxlbWVudHMgYXJlIHVwZGF0ZWQgd2l0aCBkYXRhXG4gICAqIGZyb20gdGhlIHtAbGluayBBbm5vdGF0aW9uU3RvcmFnZSB9LWluc3RhbmNlOyB1c2VmdWwgZS5nLiBmb3IgcHJpbnRpbmcuXG4gICAqIFRoZSBkZWZhdWx0IHZhbHVlIGlzIGBBbm5vdGF0aW9uTW9kZS5FTkFCTEVgLlxuICAgKi9cbiAgYW5ub3RhdGlvbk1vZGU/OiBudW1iZXIgfCB1bmRlZmluZWQ7XG4gIC8qKlxuICAgKiAtIEFkZGl0aW9uYWwgdHJhbnNmb3JtLCBhcHBsaWVkIGp1c3RcbiAgICogYmVmb3JlIHZpZXdwb3J0IHRyYW5zZm9ybS5cbiAgICovXG4gIHRyYW5zZm9ybT86IGFueVtdIHwgdW5kZWZpbmVkO1xuICAvKipcbiAgICogLSBUaGUgZmFjdG9yeSBpbnN0YW5jZSB0aGF0IHdpbGwgYmUgdXNlZFxuICAgKiB3aGVuIGNyZWF0aW5nIGNhbnZhc2VzLiBUaGUgZGVmYXVsdCB2YWx1ZSBpcyB7bmV3IERPTUNhbnZhc0ZhY3RvcnkoKX0uXG4gICAqL1xuICBjYW52YXNGYWN0b3J5PzogT2JqZWN0IHwgdW5kZWZpbmVkO1xuICAvKipcbiAgICogLSBCYWNrZ3JvdW5kIHRvIHVzZSBmb3IgdGhlIGNhbnZhcy5cbiAgICogQW55IHZhbGlkIGBjYW52YXMuZmlsbFN0eWxlYCBjYW4gYmUgdXNlZDogYSBgRE9NU3RyaW5nYCBwYXJzZWQgYXMgQ1NTXG4gICAqIDxjb2xvcj4gdmFsdWUsIGEgYENhbnZhc0dyYWRpZW50YCBvYmplY3QgKGEgbGluZWFyIG9yIHJhZGlhbCBncmFkaWVudCkgb3JcbiAgICogYSBgQ2FudmFzUGF0dGVybmAgb2JqZWN0IChhIHJlcGV0aXRpdmUgaW1hZ2UpLiBUaGUgZGVmYXVsdCB2YWx1ZSBpc1xuICAgKiAncmdiKDI1NSwyNTUsMjU1KScuXG4gICAqXG4gICAqIE5PVEU6IFRoaXMgb3B0aW9uIG1heSBiZSBwYXJ0aWFsbHksIG9yIGNvbXBsZXRlbHksIGlnbm9yZWQgd2hlbiB0aGVcbiAgICogYHBhZ2VDb2xvcnNgLW9wdGlvbiBpcyB1c2VkLlxuICAgKi9cbiAgYmFja2dyb3VuZD86IHN0cmluZyB8IE9iamVjdCB8IHVuZGVmaW5lZDtcbiAgLyoqXG4gICAqIC0gT3ZlcndyaXRlcyBiYWNrZ3JvdW5kIGFuZCBmb3JlZ3JvdW5kIGNvbG9yc1xuICAgKiB3aXRoIHVzZXIgZGVmaW5lZCBvbmVzIGluIG9yZGVyIHRvIGltcHJvdmUgcmVhZGFiaWxpdHkgaW4gaGlnaCBjb250cmFzdFxuICAgKiBtb2RlLlxuICAgKi9cbiAgcGFnZUNvbG9ycz86IE9iamVjdCB8IHVuZGVmaW5lZDtcbiAgLyoqXG4gICAqIC0gTWFwIHNvbWVcbiAgICogYW5ub3RhdGlvbiBpZHMgd2l0aCBjYW52YXNlcyB1c2VkIHRvIHJlbmRlciB0aGVtLlxuICAgKi9cbiAgYW5ub3RhdGlvbkNhbnZhc01hcD86IE1hcDxzdHJpbmcsIEhUTUxDYW52YXNFbGVtZW50PiB8IHVuZGVmaW5lZDtcbiAgcHJpbnRBbm5vdGF0aW9uU3RvcmFnZT86IFByaW50QW5ub3RhdGlvblN0b3JhZ2UgfCB1bmRlZmluZWQ7XG5cbiAgYmFja2dyb3VuZENvbG9yVG9SZXBsYWNlOiBzdHJpbmcgfCB1bmRlZmluZWQ7IC8vIGFkZGVkIGJ5IG5neC1leHRlbmRlZC1wZGYtdmlld2VyXG4gIG9wdGlvbmFsQ29udGVudENvbmZpZ1Byb21pc2U6IFByb21pc2U8dW5rbm93bj4gfCB1bmRlZmluZWQ7IC8vIGFkZGVkIGJ5IG5neC1leHRlbmRlZC1wZGYtdmlld2VyP1xufTtcblxuLyoqXG4gKiBTdHJ1Y3R1cmUgdHJlZSBub2RlLiBUaGUgcm9vdCBub2RlIHdpbGwgaGF2ZSBhIHJvbGUgXCJSb290XCIuXG4gKi9cbmV4cG9ydCB0eXBlIFN0cnVjdFRyZWVOb2RlID0ge1xuICAvKipcbiAgICogLSBBcnJheSBvZlxuICAgKiB7QGxpbmsgU3RydWN0VHJlZU5vZGUgfSBhbmQge0BsaW5rIFN0cnVjdFRyZWVDb250ZW50IH0gb2JqZWN0cy5cbiAgICovXG4gIGNoaWxkcmVuOiBBcnJheTxTdHJ1Y3RUcmVlTm9kZSB8IFN0cnVjdFRyZWVDb250ZW50PjtcbiAgLyoqXG4gICAqIC0gZWxlbWVudCdzIHJvbGUsIGFscmVhZHkgbWFwcGVkIGlmIGEgcm9sZSBtYXAgZXhpc3RzXG4gICAqIGluIHRoZSBQREYuXG4gICAqL1xuICByb2xlOiBzdHJpbmc7XG59O1xuLyoqXG4gKiBTdHJ1Y3R1cmUgdHJlZSBjb250ZW50LlxuICovXG5leHBvcnQgdHlwZSBTdHJ1Y3RUcmVlQ29udGVudCA9IHtcbiAgLyoqXG4gICAqIC0gZWl0aGVyIFwiY29udGVudFwiIGZvciBwYWdlIGFuZCBzdHJlYW0gc3RydWN0dXJlXG4gICAqIGVsZW1lbnRzIG9yIFwib2JqZWN0XCIgZm9yIG9iamVjdCByZWZlcmVuY2VzLlxuICAgKi9cbiAgdHlwZTogc3RyaW5nO1xuICAvKipcbiAgICogLSB1bmlxdWUgaWQgdGhhdCB3aWxsIG1hcCB0byB0aGUgdGV4dCBsYXllci5cbiAgICovXG4gIGlkOiBzdHJpbmc7XG59O1xuXG5leHBvcnQgaW50ZXJmYWNlIFBERlBhZ2VQcm94eSB7XG4gIC8qKiBAdHlwZSB7UERGT2JqZWN0c30gKi9cbiAgY29tbW9uT2JqczogUERGT2JqZWN0cztcbiAgb2JqczogUERGT2JqZWN0cztcbiAgX2JpdG1hcHM6IFNldDxhbnk+O1xuICBjbGVhbnVwQWZ0ZXJSZW5kZXI6IGJvb2xlYW47XG4gIHBlbmRpbmdDbGVhbnVwOiBib29sZWFuO1xuICBfaW50ZW50U3RhdGVzOiBNYXA8YW55LCBhbnk+O1xuICBkZXN0cm95ZWQ6IGJvb2xlYW47XG4gIC8qKlxuICAgKiBAdHlwZSB7bnVtYmVyfSBQYWdlIG51bWJlciBvZiB0aGUgcGFnZS4gRmlyc3QgcGFnZSBpcyAxLlxuICAgKi9cbiAgZ2V0IHBhZ2VOdW1iZXIoKTogbnVtYmVyO1xuICAvKipcbiAgICogQHR5cGUge251bWJlcn0gVGhlIG51bWJlciBvZiBkZWdyZWVzIHRoZSBwYWdlIGlzIHJvdGF0ZWQgY2xvY2t3aXNlLlxuICAgKi9cbiAgZ2V0IHJvdGF0ZSgpOiBudW1iZXI7XG4gIC8qKlxuICAgKiBAdHlwZSB7UmVmUHJveHkgfCBudWxsfSBUaGUgcmVmZXJlbmNlIHRoYXQgcG9pbnRzIHRvIHRoaXMgcGFnZS5cbiAgICovXG4gIGdldCByZWYoKTogUmVmUHJveHkgfCBudWxsO1xuICAvKipcbiAgICogQHR5cGUge251bWJlcn0gVGhlIGRlZmF1bHQgc2l6ZSBvZiB1bml0cyBpbiAxLzcybmRzIG9mIGFuIGluY2guXG4gICAqL1xuICBnZXQgdXNlclVuaXQoKTogbnVtYmVyO1xuICAvKipcbiAgICogQHR5cGUge0FycmF5PG51bWJlcj59IEFuIGFycmF5IG9mIHRoZSB2aXNpYmxlIHBvcnRpb24gb2YgdGhlIFBERiBwYWdlIGluXG4gICAqICAgdXNlciBzcGFjZSB1bml0cyBbeDEsIHkxLCB4MiwgeTJdLlxuICAgKi9cbiAgZ2V0IHZpZXcoKTogbnVtYmVyW107XG4gIC8qKlxuICAgKiBAcGFyYW0ge0dldFZpZXdwb3J0UGFyYW1ldGVyc30gcGFyYW1zIC0gVmlld3BvcnQgcGFyYW1ldGVycy5cbiAgICogQHJldHVybnMge1BhZ2VWaWV3cG9ydH0gQ29udGFpbnMgJ3dpZHRoJyBhbmQgJ2hlaWdodCcgcHJvcGVydGllc1xuICAgKiAgIGFsb25nIHdpdGggdHJhbnNmb3JtcyByZXF1aXJlZCBmb3IgcmVuZGVyaW5nLlxuICAgKi9cbiAgZ2V0Vmlld3BvcnQoeyBzY2FsZSwgcm90YXRpb24sIG9mZnNldFgsIG9mZnNldFksIGRvbnRGbGlwIH0/OiBHZXRWaWV3cG9ydFBhcmFtZXRlcnMpOiBQYWdlVmlld3BvcnQ7XG4gIC8qKlxuICAgKiBAcGFyYW0ge0dldEFubm90YXRpb25zUGFyYW1ldGVyc30gcGFyYW1zIC0gQW5ub3RhdGlvbiBwYXJhbWV0ZXJzLlxuICAgKiBAcmV0dXJucyB7UHJvbWlzZTxBcnJheTxhbnk+Pn0gQSBwcm9taXNlIHRoYXQgaXMgcmVzb2x2ZWQgd2l0aCBhblxuICAgKiAgIHtBcnJheX0gb2YgdGhlIGFubm90YXRpb24gb2JqZWN0cy5cbiAgICovXG4gIGdldEFubm90YXRpb25zKHsgaW50ZW50IH0/OiBHZXRBbm5vdGF0aW9uc1BhcmFtZXRlcnMpOiBQcm9taXNlPEFycmF5PGFueT4+O1xuICAvKipcbiAgICogQHJldHVybnMge1Byb21pc2U8T2JqZWN0Pn0gQSBwcm9taXNlIHRoYXQgaXMgcmVzb2x2ZWQgd2l0aCBhblxuICAgKiAgIHtPYmplY3R9IHdpdGggSlMgYWN0aW9ucy5cbiAgICovXG4gIGdldEpTQWN0aW9ucygpOiBQcm9taXNlPE9iamVjdD47XG4gIC8qKlxuICAgKiBAdHlwZSB7Ym9vbGVhbn0gVHJ1ZSBpZiBvbmx5IFhGQSBmb3JtLlxuICAgKi9cbiAgZ2V0IGlzUHVyZVhmYSgpOiBib29sZWFuO1xuICAvKipcbiAgICogQHJldHVybnMge1Byb21pc2U8T2JqZWN0IHwgbnVsbD59IEEgcHJvbWlzZSB0aGF0IGlzIHJlc29sdmVkIHdpdGhcbiAgICogICBhbiB7T2JqZWN0fSB3aXRoIGEgZmFrZSBET00gb2JqZWN0IChhIHRyZWUgc3RydWN0dXJlIHdoZXJlIGVsZW1lbnRzXG4gICAqICAgYXJlIHtPYmplY3R9IHdpdGggYSBuYW1lLCBhdHRyaWJ1dGVzIChjbGFzcywgc3R5bGUsIC4uLiksIHZhbHVlIGFuZFxuICAgKiAgIGNoaWxkcmVuLCB2ZXJ5IHNpbWlsYXIgdG8gYSBIVE1MIERPTSB0cmVlKSwgb3IgYG51bGxgIGlmIG5vIFhGQSBleGlzdHMuXG4gICAqL1xuICBnZXRYZmEoKTogUHJvbWlzZTxPYmplY3QgfCBudWxsPjtcbiAgLyoqXG4gICAqIEJlZ2lucyB0aGUgcHJvY2VzcyBvZiByZW5kZXJpbmcgYSBwYWdlIHRvIHRoZSBkZXNpcmVkIGNvbnRleHQuXG4gICAqXG4gICAqIEBwYXJhbSB7UmVuZGVyUGFyYW1ldGVyc30gcGFyYW1zIC0gUGFnZSByZW5kZXIgcGFyYW1ldGVycy5cbiAgICogQHJldHVybnMge1JlbmRlclRhc2t9IEFuIG9iamVjdCB0aGF0IGNvbnRhaW5zIGEgcHJvbWlzZSB0aGF0IGlzXG4gICAqICAgcmVzb2x2ZWQgd2hlbiB0aGUgcGFnZSBmaW5pc2hlcyByZW5kZXJpbmcuXG4gICAqL1xuICByZW5kZXIoe1xuICAgIGNhbnZhc0NvbnRleHQsXG4gICAgdmlld3BvcnQsXG4gICAgaW50ZW50LFxuICAgIGFubm90YXRpb25Nb2RlLFxuICAgIHRyYW5zZm9ybSxcbiAgICBjYW52YXNGYWN0b3J5LFxuICAgIGJhY2tncm91bmQsXG4gICAgYmFja2dyb3VuZENvbG9yVG9SZXBsYWNlLFxuICAgIG9wdGlvbmFsQ29udGVudENvbmZpZ1Byb21pc2UsXG4gICAgYW5ub3RhdGlvbkNhbnZhc01hcCxcbiAgICBwYWdlQ29sb3JzLFxuICAgIHByaW50QW5ub3RhdGlvblN0b3JhZ2UsXG4gIH06IFJlbmRlclBhcmFtZXRlcnMpOiBSZW5kZXJUYXNrO1xuXG4gIC8qKlxuICAgKiBOT1RFOiBBbGwgb2NjdXJyZW5jZXMgb2Ygd2hpdGVzcGFjZSB3aWxsIGJlIHJlcGxhY2VkIGJ5XG4gICAqIHN0YW5kYXJkIHNwYWNlcyAoMHgyMCkuXG4gICAqXG4gICAqIEBwYXJhbSB7Z2V0VGV4dENvbnRlbnRQYXJhbWV0ZXJzfSBwYXJhbXMgLSBnZXRUZXh0Q29udGVudCBwYXJhbWV0ZXJzLlxuICAgKiBAcmV0dXJucyB7UmVhZGFibGVTdHJlYW19IFN0cmVhbSBmb3IgcmVhZGluZyB0ZXh0IGNvbnRlbnQgY2h1bmtzLlxuICAgKi9cbiAgc3RyZWFtVGV4dENvbnRlbnQoeyBkaXNhYmxlQ29tYmluZVRleHRJdGVtcywgaW5jbHVkZU1hcmtlZENvbnRlbnQgfT86IGdldFRleHRDb250ZW50UGFyYW1ldGVycyk6IFJlYWRhYmxlU3RyZWFtO1xuICAvKipcbiAgICogTk9URTogQWxsIG9jY3VycmVuY2VzIG9mIHdoaXRlc3BhY2Ugd2lsbCBiZSByZXBsYWNlZCBieVxuICAgKiBzdGFuZGFyZCBzcGFjZXMgKDB4MjApLlxuICAgKlxuICAgKiBAcGFyYW0ge2dldFRleHRDb250ZW50UGFyYW1ldGVyc30gcGFyYW1zIC0gZ2V0VGV4dENvbnRlbnQgcGFyYW1ldGVycy5cbiAgICogQHJldHVybnMge1Byb21pc2U8VGV4dENvbnRlbnQ+fSBBIHByb21pc2UgdGhhdCBpcyByZXNvbHZlZCB3aXRoIGFcbiAgICogICB7QGxpbmsgVGV4dENvbnRlbnR9IG9iamVjdCB0aGF0IHJlcHJlc2VudHMgdGhlIHBhZ2UncyB0ZXh0IGNvbnRlbnQuXG4gICAqL1xuICBnZXRUZXh0Q29udGVudChwYXJhbXM/OiBnZXRUZXh0Q29udGVudFBhcmFtZXRlcnMpOiBQcm9taXNlPFRleHRDb250ZW50PjtcbiAgLyoqXG4gICAqIEByZXR1cm5zIHtQcm9taXNlPFN0cnVjdFRyZWVOb2RlPn0gQSBwcm9taXNlIHRoYXQgaXMgcmVzb2x2ZWQgd2l0aCBhXG4gICAqICAge0BsaW5rIFN0cnVjdFRyZWVOb2RlfSBvYmplY3QgdGhhdCByZXByZXNlbnRzIHRoZSBwYWdlJ3Mgc3RydWN0dXJlIHRyZWUsXG4gICAqICAgb3IgYG51bGxgIHdoZW4gbm8gc3RydWN0dXJlIHRyZWUgaXMgcHJlc2VudCBmb3IgdGhlIGN1cnJlbnQgcGFnZS5cbiAgICovXG4gIGdldFN0cnVjdFRyZWUoKTogUHJvbWlzZTxTdHJ1Y3RUcmVlTm9kZT47XG4gIC8qKlxuICAgKiBEZXN0cm95cyB0aGUgcGFnZSBvYmplY3QuXG4gICAqIEBwcml2YXRlXG4gICAqL1xuICBfZGVzdHJveTtcbiAgLyoqXG4gICAqIENsZWFucyB1cCByZXNvdXJjZXMgYWxsb2NhdGVkIGJ5IHRoZSBwYWdlLlxuICAgKlxuICAgKiBAcGFyYW0ge2Jvb2xlYW59IFtyZXNldFN0YXRzXSAtIFJlc2V0IHBhZ2Ugc3RhdHMsIGlmIGVuYWJsZWQuXG4gICAqICAgVGhlIGRlZmF1bHQgdmFsdWUgaXMgYGZhbHNlYC5cbiAgICogQHJldHVybnMge2Jvb2xlYW59IEluZGljYXRlcyBpZiBjbGVhbi11cCB3YXMgc3VjY2Vzc2Z1bGx5IHJ1bi5cbiAgICovXG4gIGNsZWFudXAocmVzZXRTdGF0cz86IGJvb2xlYW4gfCB1bmRlZmluZWQpOiBib29sZWFuO1xuICAvKipcbiAgICogQXR0ZW1wdHMgdG8gY2xlYW4gdXAgaWYgcmVuZGVyaW5nIGlzIGluIGEgc3RhdGUgd2hlcmUgdGhhdCdzIHBvc3NpYmxlLlxuICAgKiBAcHJpdmF0ZVxuICAgKi9cbiAgX3RyeUNsZWFudXA7XG4gIC8qKlxuICAgKiBAcHJpdmF0ZVxuICAgKi9cbiAgX3N0YXJ0UmVuZGVyUGFnZTtcbiAgLyoqXG4gICAqIEBwcml2YXRlXG4gICAqL1xuICBfcmVuZGVyUGFnZUNodW5rO1xuICAvKipcbiAgICogQHByaXZhdGVcbiAgICovXG4gIF9wdW1wT3BlcmF0b3JMaXN0O1xuICAvKipcbiAgICogQHByaXZhdGVcbiAgICovXG4gIF9hYm9ydE9wZXJhdG9yTGlzdDtcbiAgLyoqXG4gICAqIEB0eXBlIHtPYmplY3R9IFJldHVybnMgcGFnZSBzdGF0cywgaWYgZW5hYmxlZDsgcmV0dXJucyBgbnVsbGAgb3RoZXJ3aXNlLlxuICAgKi9cbiAgZ2V0IHN0YXRzKCk6IE9iamVjdDtcbn1cblxuLyoqXG4gKiBUaGUgbG9hZGluZyB0YXNrIGNvbnRyb2xzIHRoZSBvcGVyYXRpb25zIHJlcXVpcmVkIHRvIGxvYWQgYSBQREYgZG9jdW1lbnRcbiAqIChzdWNoIGFzIG5ldHdvcmsgcmVxdWVzdHMpIGFuZCBwcm92aWRlcyBhIHdheSB0byBsaXN0ZW4gZm9yIGNvbXBsZXRpb24sXG4gKiBhZnRlciB3aGljaCBpbmRpdmlkdWFsIHBhZ2VzIGNhbiBiZSByZW5kZXJlZC5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBQREZEb2N1bWVudExvYWRpbmdUYXNrIHtcbiAgLyoqXG4gICAqIFVuaXF1ZSBpZGVudGlmaWVyIGZvciB0aGUgZG9jdW1lbnQgbG9hZGluZyB0YXNrLlxuICAgKiBAdHlwZSB7c3RyaW5nfVxuICAgKi9cbiAgZG9jSWQ6IHN0cmluZztcbiAgLyoqXG4gICAqIFdoZXRoZXIgdGhlIGxvYWRpbmcgdGFzayBpcyBkZXN0cm95ZWQgb3Igbm90LlxuICAgKiBAdHlwZSB7Ym9vbGVhbn1cbiAgICovXG4gIGRlc3Ryb3llZDogYm9vbGVhbjtcbiAgLyoqXG4gICAqIENhbGxiYWNrIHRvIHJlcXVlc3QgYSBwYXNzd29yZCBpZiBhIHdyb25nIG9yIG5vIHBhc3N3b3JkIHdhcyBwcm92aWRlZC5cbiAgICogVGhlIGNhbGxiYWNrIHJlY2VpdmVzIHR3byBwYXJhbWV0ZXJzOiBhIGZ1bmN0aW9uIHRoYXQgc2hvdWxkIGJlIGNhbGxlZFxuICAgKiB3aXRoIHRoZSBuZXcgcGFzc3dvcmQsIGFuZCBhIHJlYXNvbiAoc2VlIHtAbGluayBQYXNzd29yZFJlc3BvbnNlc30pLlxuICAgKiBAdHlwZSB7ZnVuY3Rpb259XG4gICAqL1xuICBvblBhc3N3b3JkOiBGdW5jdGlvbjtcbiAgLyoqXG4gICAqIENhbGxiYWNrIHRvIGJlIGFibGUgdG8gbW9uaXRvciB0aGUgbG9hZGluZyBwcm9ncmVzcyBvZiB0aGUgUERGIGZpbGVcbiAgICogKG5lY2Vzc2FyeSB0byBpbXBsZW1lbnQgZS5nLiBhIGxvYWRpbmcgYmFyKS5cbiAgICogVGhlIGNhbGxiYWNrIHJlY2VpdmVzIGFuIHtAbGluayBPblByb2dyZXNzUGFyYW1ldGVyc30gYXJndW1lbnQuXG4gICAqIEB0eXBlIHtmdW5jdGlvbn1cbiAgICovXG4gIG9uUHJvZ3Jlc3M6IEZ1bmN0aW9uO1xuICAvKipcbiAgICogQ2FsbGJhY2sgZm9yIHdoZW4gYW4gdW5zdXBwb3J0ZWQgZmVhdHVyZSBpcyB1c2VkIGluIHRoZSBQREYgZG9jdW1lbnQuXG4gICAqIFRoZSBjYWxsYmFjayByZWNlaXZlcyBhbiB7QGxpbmsgVU5TVVBQT1JURURfRkVBVFVSRVN9IGFyZ3VtZW50LlxuICAgKiBAdHlwZSB7ZnVuY3Rpb259XG4gICAqL1xuICBzZXQgb25VbnN1cHBvcnRlZEZlYXR1cmUoYXJnOiBGdW5jdGlvbiB8IG51bGwpO1xuICAvKipcbiAgICogQHR5cGUge2Z1bmN0aW9uIHwgbnVsbH0gVGhlIGN1cnJlbnQgY2FsbGJhY2sgdXNlZCB3aXRoIHVuc3VwcG9ydGVkXG4gICAqIGZlYXR1cmVzLlxuICAgKi9cbiAgZ2V0IG9uVW5zdXBwb3J0ZWRGZWF0dXJlKCk6IEZ1bmN0aW9uIHwgbnVsbDtcbiAgLyoqXG4gICAqIFByb21pc2UgZm9yIGRvY3VtZW50IGxvYWRpbmcgdGFzayBjb21wbGV0aW9uLlxuICAgKiBAdHlwZSB7UHJvbWlzZTxQREZEb2N1bWVudFByb3h5Pn1cbiAgICovXG4gIGdldCBwcm9taXNlKCk6IFByb21pc2U8UERGRG9jdW1lbnRQcm94eT47XG4gIC8qKlxuICAgKiBBYm9ydCBhbGwgbmV0d29yayByZXF1ZXN0cyBhbmQgZGVzdHJveSB0aGUgd29ya2VyLlxuICAgKiBAcmV0dXJucyB7UHJvbWlzZTx2b2lkPn0gQSBwcm9taXNlIHRoYXQgaXMgcmVzb2x2ZWQgd2hlbiBkZXN0cnVjdGlvbiBpc1xuICAgKiAgIGNvbXBsZXRlZC5cbiAgICovXG4gIGRlc3Ryb3koKTogUHJvbWlzZTx2b2lkPjtcbn1cbmV4cG9ydCBpbnRlcmZhY2UgUERGRG9jdW1lbnRQcm94eSB7XG4gIF9wZGZJbmZvOiBhbnk7XG4gIF90cmFuc3BvcnQ6IGFueTtcbiAgLyoqXG4gICAqIEB0eXBlIHtBbm5vdGF0aW9uU3RvcmFnZX0gU3RvcmFnZSBmb3IgYW5ub3RhdGlvbiBkYXRhIGluIGZvcm1zLlxuICAgKi9cbiAgZ2V0IGFubm90YXRpb25TdG9yYWdlKCk6IEFubm90YXRpb25TdG9yYWdlO1xuICAvKipcbiAgICogQHR5cGUge251bWJlcn0gVG90YWwgbnVtYmVyIG9mIHBhZ2VzIGluIHRoZSBQREYgZmlsZS5cbiAgICovXG4gIGdldCBudW1QYWdlcygpOiBudW1iZXI7XG4gIC8qKlxuICAgKiBAdHlwZSB7QXJyYXk8c3RyaW5nLCBzdHJpbmd8bnVsbD59IEEgKG5vdCBndWFyYW50ZWVkIHRvIGJlKSB1bmlxdWUgSUQgdG9cbiAgICogICBpZGVudGlmeSB0aGUgUERGIGRvY3VtZW50LlxuICAgKiAgIE5PVEU6IFRoZSBmaXJzdCBlbGVtZW50IHdpbGwgYWx3YXlzIGJlIGRlZmluZWQgZm9yIGFsbCBQREYgZG9jdW1lbnRzLFxuICAgKiAgIHdoZXJlYXMgdGhlIHNlY29uZCBlbGVtZW50IGlzIG9ubHkgZGVmaW5lZCBmb3IgKm1vZGlmaWVkKiBQREYgZG9jdW1lbnRzLlxuICAgKi9cbiAgZ2V0IGZpbmdlcnByaW50cygpOiBzdHJpbmdbXTtcbiAgLyoqXG4gICAqIEB0eXBlIHtib29sZWFufSBUcnVlIGlmIG9ubHkgWEZBIGZvcm0uXG4gICAqL1xuICBnZXQgaXNQdXJlWGZhKCk6IGJvb2xlYW47XG4gIC8qKlxuICAgKiBOT1RFOiBUaGlzIGlzIChtb3N0bHkpIGludGVuZGVkIHRvIHN1cHBvcnQgcHJpbnRpbmcgb2YgWEZBIGZvcm1zLlxuICAgKlxuICAgKiBAdHlwZSB7T2JqZWN0IHwgbnVsbH0gQW4gb2JqZWN0IHJlcHJlc2VudGluZyBhIEhUTUwgdHJlZSBzdHJ1Y3R1cmVcbiAgICogICB0byByZW5kZXIgdGhlIFhGQSwgb3IgYG51bGxgIHdoZW4gbm8gWEZBIGZvcm0gZXhpc3RzLlxuICAgKi9cbiAgZ2V0IGFsbFhmYUh0bWwoKTogT2JqZWN0IHwgbnVsbDtcbiAgLyoqXG4gICAqIEBwYXJhbSB7bnVtYmVyfSBwYWdlTnVtYmVyIC0gVGhlIHBhZ2UgbnVtYmVyIHRvIGdldC4gVGhlIGZpcnN0IHBhZ2UgaXMgMS5cbiAgICogQHJldHVybnMge1Byb21pc2U8UERGUGFnZVByb3h5Pn0gQSBwcm9taXNlIHRoYXQgaXMgcmVzb2x2ZWQgd2l0aFxuICAgKiAgIGEge0BsaW5rIFBERlBhZ2VQcm94eX0gb2JqZWN0LlxuICAgKi9cbiAgZ2V0UGFnZShwYWdlTnVtYmVyOiBudW1iZXIpOiBQcm9taXNlPFBERlBhZ2VQcm94eT47XG4gIC8qKlxuICAgKiBAcGFyYW0ge1JlZlByb3h5fSByZWYgLSBUaGUgcGFnZSByZWZlcmVuY2UuXG4gICAqIEByZXR1cm5zIHtQcm9taXNlPG51bWJlcj59IEEgcHJvbWlzZSB0aGF0IGlzIHJlc29sdmVkIHdpdGggdGhlIHBhZ2UgaW5kZXgsXG4gICAqICAgc3RhcnRpbmcgZnJvbSB6ZXJvLCB0aGF0IGlzIGFzc29jaWF0ZWQgd2l0aCB0aGUgcmVmZXJlbmNlLlxuICAgKi9cbiAgZ2V0UGFnZUluZGV4KHJlZjogUmVmUHJveHkpOiBQcm9taXNlPG51bWJlcj47XG4gIC8qKlxuICAgKiBAcmV0dXJucyB7UHJvbWlzZTxPYmplY3Q8c3RyaW5nLCBBcnJheTxhbnk+Pj59IEEgcHJvbWlzZSB0aGF0IGlzIHJlc29sdmVkXG4gICAqICAgd2l0aCBhIG1hcHBpbmcgZnJvbSBuYW1lZCBkZXN0aW5hdGlvbnMgdG8gcmVmZXJlbmNlcy5cbiAgICpcbiAgICogVGhpcyBjYW4gYmUgc2xvdyBmb3IgbGFyZ2UgZG9jdW1lbnRzLiBVc2UgYGdldERlc3RpbmF0aW9uYCBpbnN0ZWFkLlxuICAgKi9cbiAgZ2V0RGVzdGluYXRpb25zKCk6IFByb21pc2U8e1xuICAgIFt4OiBzdHJpbmddOiBBcnJheTxhbnk+O1xuICB9PjtcbiAgLyoqXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBpZCAtIFRoZSBuYW1lZCBkZXN0aW5hdGlvbiB0byBnZXQuXG4gICAqIEByZXR1cm5zIHtQcm9taXNlPEFycmF5PGFueT4gfCBudWxsPn0gQSBwcm9taXNlIHRoYXQgaXMgcmVzb2x2ZWQgd2l0aCBhbGxcbiAgICogICBpbmZvcm1hdGlvbiBvZiB0aGUgZ2l2ZW4gbmFtZWQgZGVzdGluYXRpb24sIG9yIGBudWxsYCB3aGVuIHRoZSBuYW1lZFxuICAgKiAgIGRlc3RpbmF0aW9uIGlzIG5vdCBwcmVzZW50IGluIHRoZSBQREYgZmlsZS5cbiAgICovXG4gIGdldERlc3RpbmF0aW9uKGlkOiBzdHJpbmcpOiBQcm9taXNlPEFycmF5PGFueT4gfCBudWxsPjtcbiAgLyoqXG4gICAqIEByZXR1cm5zIHtQcm9taXNlPEFycmF5PHN0cmluZz4gfCBudWxsPn0gQSBwcm9taXNlIHRoYXQgaXMgcmVzb2x2ZWQgd2l0aFxuICAgKiAgIGFuIHtBcnJheX0gY29udGFpbmluZyB0aGUgcGFnZSBsYWJlbHMgdGhhdCBjb3JyZXNwb25kIHRvIHRoZSBwYWdlXG4gICAqICAgaW5kZXhlcywgb3IgYG51bGxgIHdoZW4gbm8gcGFnZSBsYWJlbHMgYXJlIHByZXNlbnQgaW4gdGhlIFBERiBmaWxlLlxuICAgKi9cbiAgZ2V0UGFnZUxhYmVscygpOiBQcm9taXNlPEFycmF5PHN0cmluZz4gfCBudWxsPjtcbiAgLyoqXG4gICAqIEByZXR1cm5zIHtQcm9taXNlPHN0cmluZz59IEEgcHJvbWlzZSB0aGF0IGlzIHJlc29sdmVkIHdpdGggYSB7c3RyaW5nfVxuICAgKiAgIGNvbnRhaW5pbmcgdGhlIHBhZ2UgbGF5b3V0IG5hbWUuXG4gICAqL1xuICBnZXRQYWdlTGF5b3V0KCk6IFByb21pc2U8c3RyaW5nPjtcbiAgLyoqXG4gICAqIEByZXR1cm5zIHtQcm9taXNlPHN0cmluZz59IEEgcHJvbWlzZSB0aGF0IGlzIHJlc29sdmVkIHdpdGggYSB7c3RyaW5nfVxuICAgKiAgIGNvbnRhaW5pbmcgdGhlIHBhZ2UgbW9kZSBuYW1lLlxuICAgKi9cbiAgZ2V0UGFnZU1vZGUoKTogUHJvbWlzZTxzdHJpbmc+O1xuICAvKipcbiAgICogQHJldHVybnMge1Byb21pc2U8T2JqZWN0IHwgbnVsbD59IEEgcHJvbWlzZSB0aGF0IGlzIHJlc29sdmVkIHdpdGggYW5cbiAgICogICB7T2JqZWN0fSBjb250YWluaW5nIHRoZSB2aWV3ZXIgcHJlZmVyZW5jZXMsIG9yIGBudWxsYCB3aGVuIG5vIHZpZXdlclxuICAgKiAgIHByZWZlcmVuY2VzIGFyZSBwcmVzZW50IGluIHRoZSBQREYgZmlsZS5cbiAgICovXG4gIGdldFZpZXdlclByZWZlcmVuY2VzKCk6IFByb21pc2U8T2JqZWN0IHwgbnVsbD47XG4gIC8qKlxuICAgKiBAcmV0dXJucyB7UHJvbWlzZTxhbnkgfCBudWxsPn0gQSBwcm9taXNlIHRoYXQgaXMgcmVzb2x2ZWQgd2l0aCBhbiB7QXJyYXl9XG4gICAqICAgY29udGFpbmluZyB0aGUgZGVzdGluYXRpb24sIG9yIGBudWxsYCB3aGVuIG5vIG9wZW4gYWN0aW9uIGlzIHByZXNlbnRcbiAgICogICBpbiB0aGUgUERGLlxuICAgKi9cbiAgZ2V0T3BlbkFjdGlvbigpOiBQcm9taXNlPGFueSB8IG51bGw+O1xuICAvKipcbiAgICogQHJldHVybnMge1Byb21pc2U8YW55Pn0gQSBwcm9taXNlIHRoYXQgaXMgcmVzb2x2ZWQgd2l0aCBhIGxvb2t1cCB0YWJsZVxuICAgKiAgIGZvciBtYXBwaW5nIG5hbWVkIGF0dGFjaG1lbnRzIHRvIHRoZWlyIGNvbnRlbnQuXG4gICAqL1xuICBnZXRBdHRhY2htZW50cygpOiBQcm9taXNlPGFueT47XG4gIC8qKlxuICAgKiBAcmV0dXJucyB7UHJvbWlzZTxBcnJheTxzdHJpbmc+IHwgbnVsbD59IEEgcHJvbWlzZSB0aGF0IGlzIHJlc29sdmVkIHdpdGhcbiAgICogICBhbiB7QXJyYXl9IG9mIGFsbCB0aGUgSmF2YVNjcmlwdCBzdHJpbmdzIGluIHRoZSBuYW1lIHRyZWUsIG9yIGBudWxsYFxuICAgKiAgIGlmIG5vIEphdmFTY3JpcHQgZXhpc3RzLlxuICAgKi9cbiAgZ2V0SmF2YVNjcmlwdCgpOiBQcm9taXNlPEFycmF5PHN0cmluZz4gfCBudWxsPjtcbiAgLyoqXG4gICAqIEByZXR1cm5zIHtQcm9taXNlPE9iamVjdCB8IG51bGw+fSBBIHByb21pc2UgdGhhdCBpcyByZXNvbHZlZCB3aXRoXG4gICAqICAgYW4ge09iamVjdH0gd2l0aCB0aGUgSmF2YVNjcmlwdCBhY3Rpb25zOlxuICAgKiAgICAgLSBmcm9tIHRoZSBuYW1lIHRyZWUgKGxpa2UgZ2V0SmF2YVNjcmlwdCk7XG4gICAqICAgICAtIGZyb20gQSBvciBBQSBlbnRyaWVzIGluIHRoZSBjYXRhbG9nIGRpY3Rpb25hcnkuXG4gICAqICAgLCBvciBgbnVsbGAgaWYgbm8gSmF2YVNjcmlwdCBleGlzdHMuXG4gICAqL1xuICBnZXRKU0FjdGlvbnMoKTogUHJvbWlzZTxPYmplY3QgfCBudWxsPjtcbiAgLyoqXG4gICAqIEB0eXBlZGVmIHtPYmplY3R9IE91dGxpbmVOb2RlXG4gICAqIEBwcm9wZXJ0eSB7c3RyaW5nfSB0aXRsZVxuICAgKiBAcHJvcGVydHkge2Jvb2xlYW59IGJvbGRcbiAgICogQHByb3BlcnR5IHtib29sZWFufSBpdGFsaWNcbiAgICogQHByb3BlcnR5IHtVaW50OENsYW1wZWRBcnJheX0gY29sb3IgLSBUaGUgY29sb3IgaW4gUkdCIGZvcm1hdCB0byB1c2UgZm9yXG4gICAqICAgZGlzcGxheSBwdXJwb3Nlcy5cbiAgICogQHByb3BlcnR5IHtzdHJpbmcgfCBBcnJheTxhbnk+IHwgbnVsbH0gZGVzdFxuICAgKiBAcHJvcGVydHkge3N0cmluZyB8IG51bGx9IHVybFxuICAgKiBAcHJvcGVydHkge3N0cmluZyB8IHVuZGVmaW5lZH0gdW5zYWZlVXJsXG4gICAqIEBwcm9wZXJ0eSB7Ym9vbGVhbiB8IHVuZGVmaW5lZH0gbmV3V2luZG93XG4gICAqIEBwcm9wZXJ0eSB7bnVtYmVyIHwgdW5kZWZpbmVkfSBjb3VudFxuICAgKiBAcHJvcGVydHkge0FycmF5PE91dGxpbmVOb2RlPn0gaXRlbXNcbiAgICovXG4gIC8qKlxuICAgKiBAcmV0dXJucyB7UHJvbWlzZTxBcnJheTxPdXRsaW5lTm9kZT4+fSBBIHByb21pc2UgdGhhdCBpcyByZXNvbHZlZCB3aXRoIGFuXG4gICAqICAge0FycmF5fSB0aGF0IGlzIGEgdHJlZSBvdXRsaW5lIChpZiBpdCBoYXMgb25lKSBvZiB0aGUgUERGIGZpbGUuXG4gICAqL1xuICBnZXRPdXRsaW5lKCk6IFByb21pc2U8XG4gICAge1xuICAgICAgdGl0bGU6IHN0cmluZztcbiAgICAgIGJvbGQ6IGJvb2xlYW47XG4gICAgICBpdGFsaWM6IGJvb2xlYW47XG4gICAgICAvKipcbiAgICAgICAqIC0gVGhlIGNvbG9yIGluIFJHQiBmb3JtYXQgdG8gdXNlIGZvclxuICAgICAgICogZGlzcGxheSBwdXJwb3Nlcy5cbiAgICAgICAqL1xuICAgICAgY29sb3I6IFVpbnQ4Q2xhbXBlZEFycmF5O1xuICAgICAgZGVzdDogc3RyaW5nIHwgQXJyYXk8YW55PiB8IG51bGw7XG4gICAgICB1cmw6IHN0cmluZyB8IG51bGw7XG4gICAgICB1bnNhZmVVcmw6IHN0cmluZyB8IHVuZGVmaW5lZDtcbiAgICAgIG5ld1dpbmRvdzogYm9vbGVhbiB8IHVuZGVmaW5lZDtcbiAgICAgIGNvdW50OiBudW1iZXIgfCB1bmRlZmluZWQ7XG4gICAgICBpdGVtczogYW55W107XG4gICAgfVtdXG4gID47XG4gIC8qKlxuICAgKiBAcmV0dXJucyB7UHJvbWlzZTxPcHRpb25hbENvbnRlbnRDb25maWc+fSBBIHByb21pc2UgdGhhdCBpcyByZXNvbHZlZCB3aXRoXG4gICAqICAgYW4ge0BsaW5rIE9wdGlvbmFsQ29udGVudENvbmZpZ30gdGhhdCBjb250YWlucyBhbGwgdGhlIG9wdGlvbmFsIGNvbnRlbnRcbiAgICogICBncm91cHMgKGFzc3VtaW5nIHRoYXQgdGhlIGRvY3VtZW50IGhhcyBhbnkpLlxuICAgKi9cbiAgZ2V0T3B0aW9uYWxDb250ZW50Q29uZmlnKCk6IFByb21pc2U8T3B0aW9uYWxDb250ZW50Q29uZmlnPjtcbiAgLyoqXG4gICAqIEByZXR1cm5zIHtQcm9taXNlPEFycmF5PG51bWJlcj4gfCBudWxsPn0gQSBwcm9taXNlIHRoYXQgaXMgcmVzb2x2ZWQgd2l0aFxuICAgKiAgIGFuIHtBcnJheX0gdGhhdCBjb250YWlucyB0aGUgcGVybWlzc2lvbiBmbGFncyBmb3IgdGhlIFBERiBkb2N1bWVudCwgb3JcbiAgICogICBgbnVsbGAgd2hlbiBubyBwZXJtaXNzaW9ucyBhcmUgcHJlc2VudCBpbiB0aGUgUERGIGZpbGUuXG4gICAqL1xuICBnZXRQZXJtaXNzaW9ucygpOiBQcm9taXNlPEFycmF5PG51bWJlcj4gfCBudWxsPjtcbiAgLyoqXG4gICAqIEByZXR1cm5zIHtQcm9taXNlPHsgaW5mbzogT2JqZWN0LCBtZXRhZGF0YTogTWV0YWRhdGEgfT59IEEgcHJvbWlzZSB0aGF0IGlzXG4gICAqICAgcmVzb2x2ZWQgd2l0aCBhbiB7T2JqZWN0fSB0aGF0IGhhcyBgaW5mb2AgYW5kIGBtZXRhZGF0YWAgcHJvcGVydGllcy5cbiAgICogICBgaW5mb2AgaXMgYW4ge09iamVjdH0gZmlsbGVkIHdpdGggYW55dGhpbmcgYXZhaWxhYmxlIGluIHRoZSBpbmZvcm1hdGlvblxuICAgKiAgIGRpY3Rpb25hcnkgYW5kIHNpbWlsYXJseSBgbWV0YWRhdGFgIGlzIGEge01ldGFkYXRhfSBvYmplY3Qgd2l0aFxuICAgKiAgIGluZm9ybWF0aW9uIGZyb20gdGhlIG1ldGFkYXRhIHNlY3Rpb24gb2YgdGhlIFBERi5cbiAgICovXG4gIGdldE1ldGFkYXRhKCk6IFByb21pc2U8e1xuICAgIGluZm86IE9iamVjdDtcbiAgICBtZXRhZGF0YTogTWV0YWRhdGE7XG4gIH0+O1xuICAvKipcbiAgICogQHR5cGVkZWYge09iamVjdH0gTWFya0luZm9cbiAgICogUHJvcGVydGllcyBjb3JyZXNwb25kIHRvIFRhYmxlIDMyMSBvZiB0aGUgUERGIDMyMDAwLTE6MjAwOCBzcGVjLlxuICAgKiBAcHJvcGVydHkge2Jvb2xlYW59IE1hcmtlZFxuICAgKiBAcHJvcGVydHkge2Jvb2xlYW59IFVzZXJQcm9wZXJ0aWVzXG4gICAqIEBwcm9wZXJ0eSB7Ym9vbGVhbn0gU3VzcGVjdHNcbiAgICovXG4gIC8qKlxuICAgKiBAcmV0dXJucyB7UHJvbWlzZTxNYXJrSW5mbyB8IG51bGw+fSBBIHByb21pc2UgdGhhdCBpcyByZXNvbHZlZCB3aXRoXG4gICAqICAgYSB7TWFya0luZm99IG9iamVjdCB0aGF0IGNvbnRhaW5zIHRoZSBNYXJrSW5mbyBmbGFncyBmb3IgdGhlIFBERlxuICAgKiAgIGRvY3VtZW50LCBvciBgbnVsbGAgd2hlbiBubyBNYXJrSW5mbyB2YWx1ZXMgYXJlIHByZXNlbnQgaW4gdGhlIFBERiBmaWxlLlxuICAgKi9cbiAgZ2V0TWFya0luZm8oKTogUHJvbWlzZTx7XG4gICAgTWFya2VkOiBib29sZWFuO1xuICAgIFVzZXJQcm9wZXJ0aWVzOiBib29sZWFuO1xuICAgIFN1c3BlY3RzOiBib29sZWFuO1xuICB9IHwgbnVsbD47XG4gIC8qKlxuICAgKiBAcmV0dXJucyB7UHJvbWlzZTxVaW50OEFycmF5Pn0gQSBwcm9taXNlIHRoYXQgaXMgcmVzb2x2ZWQgd2l0aCBhXG4gICAqICAge1VpbnQ4QXJyYXl9IGNvbnRhaW5pbmcgdGhlIHJhdyBkYXRhIG9mIHRoZSBQREYgZG9jdW1lbnQuXG4gICAqL1xuICBnZXREYXRhKCk6IFByb21pc2U8VWludDhBcnJheT47XG4gIC8qKlxuICAgKiBAcmV0dXJucyB7UHJvbWlzZTxVaW50OEFycmF5Pn0gQSBwcm9taXNlIHRoYXQgaXMgcmVzb2x2ZWQgd2l0aCBhXG4gICAqICAge1VpbnQ4QXJyYXl9IGNvbnRhaW5pbmcgdGhlIGZ1bGwgZGF0YSBvZiB0aGUgc2F2ZWQgZG9jdW1lbnQuXG4gICAqL1xuICBzYXZlRG9jdW1lbnQoKTogUHJvbWlzZTxVaW50OEFycmF5PjtcbiAgLyoqXG4gICAqIEByZXR1cm5zIHtQcm9taXNlPHsgbGVuZ3RoOiBudW1iZXIgfT59IEEgcHJvbWlzZSB0aGF0IGlzIHJlc29sdmVkIHdoZW4gdGhlXG4gICAqICAgZG9jdW1lbnQncyBkYXRhIGlzIGxvYWRlZC4gSXQgaXMgcmVzb2x2ZWQgd2l0aCBhbiB7T2JqZWN0fSB0aGF0IGNvbnRhaW5zXG4gICAqICAgdGhlIGBsZW5ndGhgIHByb3BlcnR5IHRoYXQgaW5kaWNhdGVzIHNpemUgb2YgdGhlIFBERiBkYXRhIGluIGJ5dGVzLlxuICAgKi9cbiAgZ2V0RG93bmxvYWRJbmZvKCk6IFByb21pc2U8e1xuICAgIGxlbmd0aDogbnVtYmVyO1xuICB9PjtcbiAgLyoqXG4gICAqIENsZWFucyB1cCByZXNvdXJjZXMgYWxsb2NhdGVkIGJ5IHRoZSBkb2N1bWVudCBvbiBib3RoIHRoZSBtYWluIGFuZCB3b3JrZXJcbiAgICogdGhyZWFkcy5cbiAgICpcbiAgICogTk9URTogRG8gbm90LCB1bmRlciBhbnkgY2lyY3Vtc3RhbmNlcywgY2FsbCB0aGlzIG1ldGhvZCB3aGVuIHJlbmRlcmluZyBpc1xuICAgKiBjdXJyZW50bHkgb25nb2luZyBzaW5jZSB0aGF0IG1heSBsZWFkIHRvIHJlbmRlcmluZyBlcnJvcnMuXG4gICAqXG4gICAqIEBwYXJhbSB7Ym9vbGVhbn0gW2tlZXBMb2FkZWRGb250c10gLSBMZXQgZm9udHMgcmVtYWluIGF0dGFjaGVkIHRvIHRoZSBET00uXG4gICAqICAgTk9URTogVGhpcyB3aWxsIGluY3JlYXNlIHBlcnNpc3RlbnQgbWVtb3J5IHVzYWdlLCBoZW5jZSBkb24ndCB1c2UgdGhpc1xuICAgKiAgIG9wdGlvbiB1bmxlc3MgYWJzb2x1dGVseSBuZWNlc3NhcnkuIFRoZSBkZWZhdWx0IHZhbHVlIGlzIGBmYWxzZWAuXG4gICAqIEByZXR1cm5zIHtQcm9taXNlfSBBIHByb21pc2UgdGhhdCBpcyByZXNvbHZlZCB3aGVuIGNsZWFuLXVwIGhhcyBmaW5pc2hlZC5cbiAgICovXG4gIGNsZWFudXAoa2VlcExvYWRlZEZvbnRzPzogYm9vbGVhbiB8IHVuZGVmaW5lZCk6IFByb21pc2U8YW55PjtcbiAgLyoqXG4gICAqIERlc3Ryb3lzIHRoZSBjdXJyZW50IGRvY3VtZW50IGluc3RhbmNlIGFuZCB0ZXJtaW5hdGVzIHRoZSB3b3JrZXIuXG4gICAqL1xuICBkZXN0cm95KCk6IFByb21pc2U8dm9pZD47XG4gIC8qKlxuICAgKiBAdHlwZSB7RG9jdW1lbnRJbml0UGFyYW1ldGVyc30gQSBzdWJzZXQgb2YgdGhlIGN1cnJlbnRcbiAgICogICB7RG9jdW1lbnRJbml0UGFyYW1ldGVyc30sIHdoaWNoIGFyZSBuZWVkZWQgaW4gdGhlIHZpZXdlci5cbiAgICovXG4gIGdldCBsb2FkaW5nUGFyYW1zKCk6IERvY3VtZW50SW5pdFBhcmFtZXRlcnM7XG4gIC8qKlxuICAgKiBAdHlwZSB7UERGRG9jdW1lbnRMb2FkaW5nVGFza30gVGhlIGxvYWRpbmdUYXNrIGZvciB0aGUgY3VycmVudCBkb2N1bWVudC5cbiAgICovXG4gIGdldCBsb2FkaW5nVGFzaygpOiBQREZEb2N1bWVudExvYWRpbmdUYXNrO1xuICAvKipcbiAgICogQHJldHVybnMge1Byb21pc2U8T2JqZWN0PHN0cmluZywgQXJyYXk8T2JqZWN0Pj4gfCBudWxsPn0gQSBwcm9taXNlIHRoYXQgaXNcbiAgICogICByZXNvbHZlZCB3aXRoIGFuIHtPYmplY3R9IGNvbnRhaW5pbmcgL0Fjcm9Gb3JtIGZpZWxkIGRhdGEgZm9yIHRoZSBKU1xuICAgKiAgIHNhbmRib3gsIG9yIGBudWxsYCB3aGVuIG5vIGZpZWxkIGRhdGEgaXMgcHJlc2VudCBpbiB0aGUgUERGIGZpbGUuXG4gICAqL1xuICBnZXRGaWVsZE9iamVjdHMoKTogUHJvbWlzZTx7XG4gICAgW3g6IHN0cmluZ106IEFycmF5PE9iamVjdD47XG4gIH0gfCBudWxsPjtcbiAgLyoqXG4gICAqIEByZXR1cm5zIHtQcm9taXNlPGJvb2xlYW4+fSBBIHByb21pc2UgdGhhdCBpcyByZXNvbHZlZCB3aXRoIGB0cnVlYFxuICAgKiAgIGlmIHNvbWUgL0Fjcm9Gb3JtIGZpZWxkcyBoYXZlIEphdmFTY3JpcHQgYWN0aW9ucy5cbiAgICovXG4gIGhhc0pTQWN0aW9ucygpOiBQcm9taXNlPGJvb2xlYW4+O1xuICAvKipcbiAgICogQHJldHVybnMge1Byb21pc2U8QXJyYXk8c3RyaW5nPiB8IG51bGw+fSBBIHByb21pc2UgdGhhdCBpcyByZXNvbHZlZCB3aXRoIGFuXG4gICAqICAge0FycmF5PHN0cmluZz59IGNvbnRhaW5pbmcgSURzIG9mIGFubm90YXRpb25zIHRoYXQgaGF2ZSBhIGNhbGN1bGF0aW9uXG4gICAqICAgYWN0aW9uLCBvciBgbnVsbGAgd2hlbiBubyBzdWNoIGFubm90YXRpb25zIGFyZSBwcmVzZW50IGluIHRoZSBQREYgZmlsZS5cbiAgICovXG4gIGdldENhbGN1bGF0aW9uT3JkZXJJZHMoKTogUHJvbWlzZTxBcnJheTxzdHJpbmc+IHwgbnVsbD47XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSVBERlZpZXdlckFwcGxpY2F0aW9uIHtcbiAgYXBwQ29uZmlnOiBJUERGVmlld2VyQXBwQ29uZmlnO1xuICBfYm91bmRFdmVudHM6IGFueTtcbiAgZW5hYmxlUHJpbnQ6IGJvb2xlYW47XG4gIGV2ZW50QnVzOiBJRXZlbnRCdXM7XG4gIGZpbmRCYXI6IGFueTtcbiAgZmluZENvbnRyb2xsZXI6IEZpbmRDb250cm9sbGVyO1xuICBpc1ZpZXdlckVtYmVkZGVkOiBib29sZWFuO1xuICBsMTBuOiBJV2ViTDEwbjtcbiAgb25FcnJvcjogKGVycm9yOiBFcnJvcikgPT4gdm9pZDtcbiAgcGFnZTogbnVtYmVyO1xuICBwYWdlc0NvdW50OiBudW1iZXI7XG4gIHBhc3N3b3JkUHJvbXB0OiBQYXNzd29yZFByb21wdDtcbiAgcGRmRG9jdW1lbnQ6IFBERkRvY3VtZW50UHJveHk7XG4gIHBkZkxpbmtTZXJ2aWNlOiBhbnkgLyogUERGTGlua1NlcnZpY2U7Ki87XG4gIHBkZlNpZGViYXI6IGFueTtcbiAgcGRmVmlld2VyOiBJUERGVmlld2VyO1xuICBwcmludEtleURvd25MaXN0ZW5lcjogdW5kZWZpbmVkIHwgKCh0aGlzOiBXaW5kb3csIGV2OiBLZXlib2FyZEV2ZW50KSA9PiBhbnkpO1xuICBzaWRlYmFyVmlld09uTG9hZDogMCB8IDE7XG4gIHNwcmVhZE1vZGVPbkxvYWQ6IDAgfCAxIHwgMjtcbiAgc2Vjb25kYXJ5VG9vbGJhcjogYW55O1xuICBzdG9yZTogVmlld0hpc3Rvcnk7XG4gIHRvb2xiYXI6IGFueTtcbiAgdmlld2VyOiBIVE1MRGl2RWxlbWVudDtcblxuICBfY2xlYW51cCgpOiB2b2lkO1xuICBjbG9zZSgpOiB2b2lkO1xuICBvcGVuKHNvdXJjZTogc3RyaW5nIHwgQXJyYXlCdWZmZXIgfCB7IHJhbmdlOiBhbnkgfSB8IGFueSwgb3B0aW9ucz86IGFueSk6IFByb21pc2U8YW55PjtcbiAgdW5iaW5kRXZlbnRzKCk6IHZvaWQ7XG4gIHVuYmluZFdpbmRvd0V2ZW50cygpOiB2b2lkO1xufVxuIl19