@decaf-ts/for-nest 0.11.2-refactor.5 → 0.11.2-refactor.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -2,6 +2,7 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.NestBootstraper = void 0;
4
4
  const common_1 = require("@nestjs/common");
5
+ const core_1 = require("@nestjs/core");
5
6
  const index_js_1 = require("./exceptions/index.cjs");
6
7
  const index_js_2 = require("./openapi/index.cjs");
7
8
  const index_js_3 = require("./errors/index.cjs");
@@ -216,10 +217,17 @@ class NestBootstraper {
216
217
  * set of standard exception filters for common error types like
217
218
  * `HttpException`, `ValidationException`, `ConflictException`, and others.
218
219
  *
220
+ * The default `DecafExceptionFilter` is constructed with the application's
221
+ * `ModuleRef` so it can resolve the request-scoped `DecafRequestContext` (and
222
+ * its client-bound logger) for the request that threw, instead of logging
223
+ * through the generic global logger.
224
+ *
219
225
  * @param {...ExceptionFilter[]} filters - Optional filters to apply globally.
220
226
  */
221
227
  static useGlobalFilters(...filters) {
222
- this.app.useGlobalFilters(...(filters.length > 0 ? filters : [new index_js_1.DecafExceptionFilter()]));
228
+ this.app.useGlobalFilters(...(filters.length > 0
229
+ ? filters
230
+ : [new index_js_1.DecafExceptionFilter(this.app.get(core_1.ModuleRef, { strict: false }))]));
223
231
  return this;
224
232
  }
225
233
  /**
@@ -263,5 +271,5 @@ class NestBootstraper {
263
271
  }
264
272
  }
265
273
  exports.NestBootstraper = NestBootstraper;
266
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiTmVzdEJvb3RzdHJhcGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2ZhY3RvcnkvTmVzdEJvb3RzdHJhcGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFFTCxNQUFNLEdBR1AsTUFBTSxnQkFBZ0IsQ0FBQztBQUN4QixPQUFPLEVBQUUsb0JBQW9CLEVBQUUsOEJBQXFCO0FBQ3BELE9BQU8sRUFBRSxjQUFjLEVBQUUsMkJBQWtCO0FBRTNDLE9BQU8sRUFBRSxTQUFTLEVBQUUsMEJBQWlCO0FBNENyQzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0ErQ0c7QUFDSCxNQUFNLE9BQU8sZUFBZTtJQUkxQjs7Ozs7Ozs7O09BU0c7SUFDSyxNQUFNLEtBQUssTUFBTTtRQUN2QixJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDO1lBQ2xCLFdBQVc7WUFDWCxJQUFJLENBQUMsT0FBTyxHQUFHLElBQUksTUFBTSxDQUFDLGVBQWUsQ0FBQyxDQUFDO1FBQzdDLENBQUM7UUFDRCxPQUFPLElBQUksQ0FBQyxPQUFPLENBQUM7SUFDdEIsQ0FBQztJQUVEOzs7Ozs7Ozs7O09BVUc7SUFDSCxNQUFNLENBQUMsVUFBVSxDQUFDLEdBQXFCO1FBQ3JDLElBQUksQ0FBQyxHQUFHLEdBQUcsR0FBRyxDQUFDO1FBQ2YsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBRUQ7Ozs7Ozs7Ozs7O09BV0c7SUFDSCxNQUFNLENBQUMsWUFBWSxDQUFDLFlBQXFCO1FBQ3ZDLElBQUksQ0FBQyxPQUFPLEdBQUcsWUFBWSxJQUFJLElBQUksTUFBTSxDQUFDLGVBQWUsQ0FBQyxDQUFDO1FBQzNELElBQUksQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUNqQyxPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFFRDs7Ozs7Ozs7Ozs7OztPQWFH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QyxHQUFHLENBQUMsaUNBQWlDLEdBQUcsRUFBRSxDQUFDLENBQUM7WUFDMUQsQ0FBQztRQUNILENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgSU5lc3RBcHBsaWNhdGlvbixcbiAgTG9nZ2VyLFxuICBOZXN0SW50ZXJjZXB0b3IsXG4gIFBpcGVUcmFuc2Zvcm0sXG59IGZyb20gXCJAbmVzdGpzL2NvbW1vblwiO1xuaW1wb3J0IHsgRGVjYWZFeGNlcHRpb25GaWx0ZXIgfSBmcm9tIFwiLi9leGNlcHRpb25zXCI7XG5pbXBvcnQgeyBTd2FnZ2VyQnVpbGRlciB9IGZyb20gXCIuL29wZW5hcGlcIjtcbmltcG9ydCB7IENvcnNPcHRpb25zIH0gZnJvbSBcIkBuZXN0anMvY29tbW9uL2ludGVyZmFjZXMvZXh0ZXJuYWwvY29ycy1vcHRpb25zLmludGVyZmFjZVwiO1xuaW1wb3J0IHsgQ29yc0Vycm9yIH0gZnJvbSBcIi4vZXJyb3JzXCI7XG5cbi8qKlxuICogQGRlc2NyaXB0aW9uXG4gKiBEZWZpbmVzIGFsbCBjdXN0b21pemFibGUgcGFyYW1ldGVycyBmb3IgU3dhZ2dlciBzZXR1cC5cbiAqXG4gKiBAc3VtbWFyeVxuICogVGhpcyBpbnRlcmZhY2UgYWxsb3dzIGRldmVsb3BlcnMgdG8gY3VzdG9taXplIGhvdyBTd2FnZ2VyIFVJIGlzIGNvbmZpZ3VyZWRcbiAqIHdpdGhpbiB0aGUgTmVzdEpTIGFwcGxpY2F0aW9uLiBJdCBpbmNsdWRlcyBwYXJhbWV0ZXJzIGZvciB0aXRsZXMsIHBhdGhzLFxuICogY29sb3Igc2NoZW1lcywgYW5kIGFzc2V0IHBhdGhzIHRvIHRhaWxvciB0aGUgQVBJIGRvY3VtZW50YXRpb24gZXhwZXJpZW5jZS5cbiAqXG4gKiBAcGFyYW0ge3N0cmluZ30gdGl0bGUgLSBUaXRsZSBkaXNwbGF5ZWQgaW4gU3dhZ2dlciBVSS5cbiAqIEBwYXJhbSB7c3RyaW5nfSBkZXNjcmlwdGlvbiAtIERlc2NyaXB0aW9uIHNob3duIGJlbG93IHRoZSB0aXRsZS5cbiAqIEBwYXJhbSB7c3RyaW5nfSB2ZXJzaW9uIC0gQVBJIHZlcnNpb24gZGlzcGxheWVkIGluIHRoZSBkb2N1bWVudGF0aW9uLlxuICogQHBhcmFtIHtzdHJpbmd9IFtwYXRoXSAtIE9wdGlvbmFsIHBhdGggd2hlcmUgU3dhZ2dlciB3aWxsIGJlIGF2YWlsYWJsZS5cbiAqIEBwYXJhbSB7Ym9vbGVhbn0gW3BlcnNpc3RBdXRob3JpemF0aW9uXSAtIFdoZXRoZXIgYXV0aG9yaXphdGlvbiB0b2tlbnMgcGVyc2lzdCBhY3Jvc3MgcmVsb2Fkcy5cbiAqIEBwYXJhbSB7c3RyaW5nfSBbYXNzZXRzUGF0aF0gLSBQYXRoIHRvIGN1c3RvbSBhc3NldHMgZm9yIFN3YWdnZXIgVUkuXG4gKiBAcGFyYW0ge3N0cmluZ30gW3RvcGJhckJnQ29sb3JdIC0gQ3VzdG9tIGJhY2tncm91bmQgY29sb3IgZm9yIHRoZSBTd2FnZ2VyIHRvcCBiYXIuXG4gKiBAcGFyYW0ge3N0cmluZ30gW3RvcGJhckljb25QYXRoXSAtIFBhdGggdG8gYSBjdXN0b20gaWNvbiBkaXNwbGF5ZWQgaW4gdGhlIHRvcCBiYXIuXG4gKiBAcGFyYW0ge3N0cmluZ30gW2Zhdmljb25QYXRoXSAtIFBhdGggdG8gYSBjdXN0b20gZmF2aWNvbi5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBTd2FnZ2VyU2V0dXBPcHRpb25zIHtcbiAgdGl0bGU6IHN0cmluZztcbiAgZGVzY3JpcHRpb246IHN0cmluZztcbiAgdmVyc2lvbjogc3RyaW5nO1xuICBwYXRoPzogc3RyaW5nO1xuICBwZXJzaXN0QXV0aG9yaXphdGlvbj86IGJvb2xlYW47XG4gIGFzc2V0c1BhdGg/OiBzdHJpbmc7XG4gIHRvcGJhckJnQ29sb3I/OiBzdHJpbmc7XG4gIHRvcGJhckljb25QYXRoPzogc3RyaW5nO1xuICBmYXZpY29uUGF0aD86IHN0cmluZztcbiAgLyoqXG4gICAqIFBhdGggdG8gZXhwb3NlIHRoZSBPcGVuQVBJIHNwZWNpZmljYXRpb24gaW4gSlNPTiBmb3JtYXQuXG4gICAqIEV4YW1wbGU6IC9hcGkvb3BlbmFwaS5qc29uXG4gICAqL1xuICBvcGVuQXBpSnNvblBhdGg/OiBzdHJpbmc7XG4gIC8qKlxuICAgKiBQYXRoIHRvIGV4cG9zZSB0aGUgT3BlbkFQSSBzcGVjaWZpY2F0aW9uIGluIFlBTUwgZm9ybWF0LlxuICAgKiBSZXF1aXJlcyAneWFtbCcgcGFja2FnZSBhcyBwZWVyIGRlcGVuZGVuY3kuXG4gICAqIEV4YW1wbGU6IC9hcGkvb3BlbmFwaS55YW1sXG4gICAqL1xuICBvcGVuQXBpWWFtbFBhdGg/OiBzdHJpbmc7XG59XG5cbi8qKlxuICogQGRlc2NyaXB0aW9uXG4gKiBBIGZsdWVudCwgc3RhdGljIGJvb3RzdHJhcCBjbGFzcyBmb3IgaW5pdGlhbGl6aW5nIGFuZCBjb25maWd1cmluZyBhIE5lc3RKUyBhcHBsaWNhdGlvbi5cbiAqXG4gKiBAc3VtbWFyeVxuICogVGhlIGBOZXN0Qm9vdHN0cmFwZXJgIGNsYXNzIHByb3ZpZGVzIGEgY2hhaW5hYmxlIEFQSSBmb3IgY29uZmlndXJpbmdcbiAqIGEgTmVzdEpTIGFwcGxpY2F0aW9uIGluc3RhbmNlLiBJdCBpbmNsdWRlcyBidWlsdC1pbiBtZXRob2RzIGZvciBlbmFibGluZ1xuICogQ09SUywgSGVsbWV0IHNlY3VyaXR5LCBTd2FnZ2VyIGRvY3VtZW50YXRpb24sIGdsb2JhbCBwaXBlcywgZmlsdGVycyxcbiAqIGludGVyY2VwdG9ycywgYW5kIHN0YXJ0aW5nIHRoZSBzZXJ2ZXIuXG4gKlxuICogVGhpcyBjbGFzcyBwcm9tb3RlcyBjb25zaXN0ZW5jeSBhbmQgcmVkdWNlcyByZXBldGl0aXZlIHNldHVwIGNvZGVcbiAqIGFjcm9zcyBtdWx0aXBsZSBOZXN0SlMgcHJvamVjdHMuXG4gKlxuICogQGV4YW1wbGVcbiAqIGBgYHRzXG4gKiBpbXBvcnQgeyBOZXN0RmFjdG9yeSB9IGZyb20gXCJAbmVzdGpzL2NvcmVcIjtcbiAqIGltcG9ydCB7IEFwcE1vZHVsZSB9IGZyb20gXCIuL2FwcC5tb2R1bGVcIjtcbiAqIGltcG9ydCB7IE15TG9nZ2VyIH0gZnJvbSBcIi4vTXlMb2dnZXJcIjtcbiAqIGltcG9ydCB7IE5lc3RCb290c3RyYXBlciB9IGZyb20gXCJAZGVjYWYtdHMvZm9yLW5lc3RcIjtcbiAqXG4gKiBhc3luYyBmdW5jdGlvbiBib290c3RyYXAoKSB7XG4gKiAgIGNvbnN0IGFwcCA9IGF3YWl0IE5lc3RGYWN0b3J5LmNyZWF0ZShBcHBNb2R1bGUpO1xuICpcbiAqICAgYXdhaXQgTmVzdEJvb3RzdHJhcGVyXG4gKiAgICAgLmluaXRpYWxpemUoYXBwKVxuICogICAgIC5lbmFibGVMb2dnZXIobmV3IE15TG9nZ2VyKCkpXG4gKiAgICAgLmVuYWJsZUNvcnMoW1wiaHR0cDovL2xvY2FsaG9zdDo0MjAwXCJdKVxuICogICAgIC51c2VIZWxtZXQoKVxuICogICAgIC5zZXR1cFN3YWdnZXIoe1xuICogICAgICAgdGl0bGU6IFwiT3BlbkFQSSBieSBUcmFkZU1hcmvihKJcIixcbiAqICAgICAgIGRlc2NyaXB0aW9uOiBcIlRyYWRlTWFya+KEoiBBUEkgZG9jdW1lbnRhdGlvblwiLFxuICogICAgICAgdmVyc2lvbjogXCIxLjAuMFwiLFxuICogICAgICAgcGF0aDogXCJhcGlcIixcbiAqICAgICAgIHBlcnNpc3RBdXRob3JpemF0aW9uOiB0cnVlLFxuICogICAgICAgdG9wYmFyQmdDb2xvcjogXCIjMkMzRTUwXCIsXG4gKiAgICAgICB0b3BiYXJJY29uUGF0aDogXCIvYXNzZXRzL2xvZ28uc3ZnXCIsXG4gKiAgICAgICBmYXZpY29uUGF0aDogXCIvYXNzZXRzL2Zhdmljb24uaWNvXCJcbiAqICAgICB9KVxuICogICAgIC51c2VHbG9iYWxGaWx0ZXJzKClcbiAqICAgICAudXNlR2xvYmFsUGlwZXMoLi4uKVxuICogICAgIC51c2VHbG9iYWxJbnRlcmNlcHRvcnMoLi4uKVxuICogICAgIC5zdGFydCgzMDAwKTtcbiAqIH1cbiAqXG4gKiBib290c3RyYXAoKTtcbiAqIGBgYFxuICogQGNsYXNzXG4gKi9cbmV4cG9ydCBjbGFzcyBOZXN0Qm9vdHN0cmFwZXIge1xuICBwcml2YXRlIHN0YXRpYyBhcHA6IElOZXN0QXBwbGljYXRpb247XG4gIHByaXZhdGUgc3RhdGljIF9sb2dnZXI6IExvZ2dlcjtcblxuICAvKipcbiAgICogQGRlc2NyaXB0aW9uXG4gICAqIFJldHVybnMgdGhlIGN1cnJlbnQgbG9nZ2VyIGluc3RhbmNlLCBjcmVhdGluZyBhIGRlZmF1bHQgb25lIGlmIG5vdCBzZXQuXG4gICAqXG4gICAqIEBzdW1tYXJ5XG4gICAqIEVuc3VyZXMgdGhhdCBhIHZhbGlkIGBMb2dnZXJgIGluc3RhbmNlIGlzIGFsd2F5cyBhdmFpbGFibGVcbiAgICogZm9yIGxvZ2dpbmcgYm9vdHN0cmFwLXJlbGF0ZWQgbWVzc2FnZXMuXG4gICAqXG4gICAqIEByZXR1cm4ge0xvZ2dlcn0gVGhlIGFjdGl2ZSBsb2dnZXIgaW5zdGFuY2UuXG4gICAqL1xuICBwcml2YXRlIHN0YXRpYyBnZXQgbG9nZ2VyKCk6IExvZ2dlciB7XG4gICAgaWYgKCF0aGlzLl9sb2dnZXIpIHtcbiAgICAgIC8vIGZhbGxiYWNrXG4gICAgICB0aGlzLl9sb2dnZXIgPSBuZXcgTG9nZ2VyKFwiTmVzdEJvb3RzdHJhcFwiKTtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMuX2xvZ2dlcjtcbiAgfVxuXG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb25cbiAgICogSW5pdGlhbGl6ZXMgdGhlIGJvb3RzdHJhcHBlciB3aXRoIGEgZ2l2ZW4gTmVzdEpTIGFwcGxpY2F0aW9uLlxuICAgKlxuICAgKiBAc3VtbWFyeVxuICAgKiBCaW5kcyB0aGUgcHJvdmlkZWQgTmVzdEpTIGFwcCBpbnN0YW5jZSB0byB0aGUgYm9vdHN0cmFwcGVyLCBlbmFibGluZ1xuICAgKiBjaGFpbmVkIGNvbmZpZ3VyYXRpb24gbWV0aG9kcy5cbiAgICpcbiAgICogQHBhcmFtIHtJTmVzdEFwcGxpY2F0aW9ufSBhcHAgLSBUaGUgTmVzdEpTIGFwcGxpY2F0aW9uIGluc3RhbmNlIHRvIGluaXRpYWxpemUuXG4gICAqIEByZXR1cm4ge05lc3RCb290c3RyYXBlcn0gUmV0dXJucyB0aGUgY2xhc3MgZm9yIGNoYWluaW5nIGNvbmZpZ3VyYXRpb24gbWV0aG9kcy5cbiAgICovXG4gIHN0YXRpYyBpbml0aWFsaXplKGFwcDogSU5lc3RBcHBsaWNhdGlvbikge1xuICAgIHRoaXMuYXBwID0gYXBwO1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgLyoqXG4gICAqIEBkZXNjcmlwdGlvblxuICAgKiBFbmFibGVzIG9yIHJlcGxhY2VzIHRoZSBnbG9iYWwgbG9nZ2VyIGZvciB0aGUgTmVzdEpTIGFwcGxpY2F0aW9uLlxuICAgKlxuICAgKiBAc3VtbWFyeVxuICAgKiBJZiBhIGN1c3RvbSBsb2dnZXIgaXMgcHJvdmlkZWQsIGl0IHJlcGxhY2VzIHRoZSBkZWZhdWx0IGxvZ2dlci4gT3RoZXJ3aXNlLFxuICAgKiBhIG5ldyBsb2dnZXIgbmFtZWQgYFwiTmVzdEJvb3RzdHJhcFwiYCBpcyB1c2VkLiBUaGlzIGxvZ2dlciBpcyBhbHNvIHJlZ2lzdGVyZWRcbiAgICogd2l0aCB0aGUgTmVzdEpTIGFwcGxpY2F0aW9uLlxuICAgKlxuICAgKiBAcGFyYW0ge0xvZ2dlcn0gW2N1c3RvbUxvZ2dlcl0gLSBPcHRpb25hbCBjdXN0b20gbG9nZ2VyIGluc3RhbmNlLlxuICAgKiBAcmV0dXJuIHtOZXN0Qm9vdHN0cmFwZXJ9IFJldHVybnMgdGhlIGNsYXNzIGZvciBjaGFpbmluZy5cbiAgICovXG4gIHN0YXRpYyBlbmFibGVMb2dnZXIoY3VzdG9tTG9nZ2VyPzogTG9nZ2VyKSB7XG4gICAgdGhpcy5fbG9nZ2VyID0gY3VzdG9tTG9nZ2VyIHx8IG5ldyBMb2dnZXIoXCJOZXN0Qm9vdHN0cmFwXCIpO1xuICAgIHRoaXMuYXBwLnVzZUxvZ2dlcih0aGlzLl9sb2dnZXIpO1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgLyoqXG4gICAqIEBkZXNjcmlwdGlvblxuICAgKiBFbmFibGVzIENyb3NzLU9yaWdpbiBSZXNvdXJjZSBTaGFyaW5nIChDT1JTKSBmb3IgdGhlIGFwcGxpY2F0aW9uLlxuICAgKlxuICAgKiBAc3VtbWFyeVxuICAgKiBBbGxvd3MgZGVmaW5pbmcgZWl0aGVyIGEgd2lsZGNhcmQgb3JpZ2luIChgXCIqXCJgKSBvciBhIGxpc3Qgb2YgYWxsb3dlZCBvcmlnaW5zLlxuICAgKiBBdXRvbWF0aWNhbGx5IGFjY2VwdHMgbG9jYWwgZGV2ZWxvcG1lbnQgcmVxdWVzdHMgYW5kIHRob3NlIHdpdGhvdXQgb3JpZ2luIGhlYWRlcnMuXG4gICAqIFRocm93cyBhIGBDb3JzRXJyb3JgIGZvciB1bmF1dGhvcml6ZWQgb3JpZ2lucy5cbiAgICpcbiAgICogQHBhcmFtIHsnKicgfCBzdHJpbmdbXX0gW29yaWdpbnM9W11dIC0gTGlzdCBvZiBhbGxvd2VkIG9yaWdpbnMgb3IgYFwiKlwiYCB0byBhbGxvdyBhbGwuXG4gICAqIEBwYXJhbSB7c3RyaW5nW119IFthbGxvd01ldGhvZHM9WydHRVQnLCAnUE9TVCcsICdQVVQnLCAnREVMRVRFJ11dIC0gQWxsb3dlZCBIVFRQIG1ldGhvZHMuXG4gICAqIEByZXR1cm4ge05lc3RCb290c3RyYXBlcn0gUmV0dXJucyB0aGUgY2xhc3MgZm9yIGNoYWluaW5nIGNvbmZpZ3VyYXRpb24uXG4gICAqXG4gICAqL1xuICBzdGF0aWMgZW5hYmxlQ29ycyhcbiAgICBvcmlnaW5zOiBcIipcIiB8IHN0cmluZ1tdID0gW10sXG4gICAgYWxsb3dNZXRob2RzOiBzdHJpbmdbXSA9IFtcIkdFVFwiLCBcIlBPU1RcIiwgXCJQVVRcIiwgXCJERUxFVEVcIl1cbiAgKSB7XG4gICAgY29uc3QgYWxsb3dlZE9yaWdpbnMgPVxuICAgICAgb3JpZ2lucyA9PT0gXCIqXCIgPyBcIipcIiA6IG9yaWdpbnMubWFwKChvKSA9PiBvLnRyaW0oKS50b0xvd2VyQ2FzZSgpKTtcblxuICAgIGNvbnN0IGNvcnNPcHRpb25zOiBDb3JzT3B0aW9ucyA9IHtcbiAgICAgIG9yaWdpbjogKG9yaWdpbiwgY2FsbGJhY2spID0+IHtcbiAgICAgICAgLy8gQWxsb3cgcmVxdWVzdCB3aXRob3V0IG9yaWdpbi4uLlxuICAgICAgICBpZiAoIW9yaWdpbikgcmV0dXJuIGNhbGxiYWNrKG51bGwsIHRydWUpO1xuXG4gICAgICAgIGlmIChcbiAgICAgICAgICBhbGxvd2VkT3JpZ2lucyA9PT0gXCIqXCIgfHxcbiAgICAgICAgICAoQXJyYXkuaXNBcnJheShhbGxvd2VkT3JpZ2lucykgJiZcbiAgICAgICAgICAgIGFsbG93ZWRPcmlnaW5zLmluY2x1ZGVzKG9yaWdpbi50b0xvd2VyQ2FzZSgpKSlcbiAgICAgICAgKSB7XG4gICAgICAgICAgcmV0dXJuIGNhbGxiYWNrKG51bGwsIHRydWUpO1xuICAgICAgICB9XG5cbiAgICAgICAgY2FsbGJhY2sobmV3IENvcnNFcnJvcihgT3JpZ2luICR7b3JpZ2lufSBub3QgYWxsb3dlZGApKTtcbiAgICAgIH0sXG4gICAgICBjcmVkZW50aWFsczogdHJ1ZSxcbiAgICAgIG1ldGhvZHM6IGFsbG93TWV0aG9kcy5qb2luKFwiLFwiKSxcbiAgICB9O1xuXG4gICAgdGhpcy5hcHAuZW5hYmxlQ29ycyhjb3JzT3B0aW9ucyk7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICAvKipcbiAgICogQGRlc2NyaXB0aW9uXG4gICAqIEFwcGxpZXMgdGhlIEhlbG1ldCBtaWRkbGV3YXJlIGZvciBlbmhhbmNlZCBzZWN1cml0eS5cbiAgICpcbiAgICogQHN1bW1hcnlcbiAgICogRHluYW1pY2FsbHkgbG9hZHMgdGhlIGBoZWxtZXRgIHBhY2thZ2UgaWYgYXZhaWxhYmxlIGFuZCByZWdpc3RlcnMgaXRcbiAgICogYXMgbWlkZGxld2FyZSB0byBpbXByb3ZlIEhUVFAgaGVhZGVyIHNlY3VyaXR5LiBJZiBub3QgaW5zdGFsbGVkLCBsb2dzIGEgd2FybmluZ1xuICAgKiBhbmQgY29udGludWVzIGV4ZWN1dGlvbiB3aXRob3V0IHRocm93aW5nIGVycm9ycy5cbiAgICpcbiAgICogQHBhcmFtIHtSZWNvcmQ8c3RyaW5nLCBhbnk+fSBbb3B0aW9uc10gLSBPcHRpb25hbCBjb25maWd1cmF0aW9uIHBhc3NlZCB0byBIZWxtZXQuXG4gICAqIEByZXR1cm4ge05lc3RCb290c3RyYXBlcn0gUmV0dXJucyB0aGUgY2xhc3MgZm9yIGNoYWluaW5nIGNvbmZpZ3VyYXRpb24uXG4gICAqL1xuICBzdGF0aWMgdXNlSGVsbWV0KG9wdGlvbnM/OiBSZWNvcmQ8c3RyaW5nLCBhbnk+KSB7XG4gICAgdHJ5IHtcbiAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tcmVxdWlyZS1pbXBvcnRzXG4gICAgICBjb25zdCBoZWxtZXQgPSByZXF1aXJlKFwiaGVsbWV0XCIpOyAvLyBEeW5hbWljIGltcG9ydCB0byBhdm9pZCBoYXJkIGRlcGVuZGVuY3lcbiAgICAgIHRoaXMuYXBwLnVzZShoZWxtZXQob3B0aW9ucykpO1xuICAgICAgdGhpcy5sb2dnZXIubG9nKFwiSGVsbWV0IG1pZGRsZXdhcmUgZW5hYmxlZCBzdWNjZXNzZnVsbHkuXCIpO1xuICAgIH0gY2F0Y2gge1xuICAgICAgdGhpcy5sb2dnZXIud2FybihcIkhlbG1ldCBub3QgaW5zdGFsbGVkLiBTa2lwcGluZyBtaWRkbGV3YXJlLlwiKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb25cbiAgICogQ29uZmlndXJlcyBhbmQgaW5pdGlhbGl6ZXMgU3dhZ2dlciBVSSBmb3IgQVBJIGRvY3VtZW50YXRpb24uXG4gICAqXG4gICAqIEBzdW1tYXJ5XG4gICAqIFVzZXMgdGhlIGBTd2FnZ2VyQnVpbGRlcmAgdXRpbGl0eSB0byBjb25maWd1cmUgQVBJIGRvY3VtZW50YXRpb25cbiAgICogd2l0aCBkZXRhaWxlZCBjdXN0b21pemF0aW9uIGZvciB0aXRsZSwgdmVyc2lvbiwgcGF0aHMsIGFuZCBjb2xvcnMuXG4gICAqIFN3YWdnZXIgaXMgYXV0b21hdGljYWxseSBleHBvc2VkIGF0IHRoZSBjb25maWd1cmVkIHBhdGguXG4gICAqXG4gICAqIEBwYXJhbSB7U3dhZ2dlclNldHVwT3B0aW9uc30gb3B0aW9ucyAtIFN3YWdnZXIgY29uZmlndXJhdGlvbiBvcHRpb25zLlxuICAgKiBAcmV0dXJuIHtOZXN0Qm9vdHN0cmFwZXJ9IFJldHVybnMgdGhlIGNsYXNzIGZvciBjaGFpbmluZyBjb25maWd1cmF0aW9uLlxuICAgKi9cbiAgc3RhdGljIHNldHVwU3dhZ2dlcihvcHRpb25zOiBTd2FnZ2VyU2V0dXBPcHRpb25zKSB7XG4gICAgY29uc3Qgc3dhZ2dlciA9IG5ldyBTd2FnZ2VyQnVpbGRlcih0aGlzLmFwcCwge1xuICAgICAgdGl0bGU6IG9wdGlvbnMudGl0bGUsXG4gICAgICBkZXNjcmlwdGlvbjogb3B0aW9ucy5kZXNjcmlwdGlvbixcbiAgICAgIHZlcnNpb246IG9wdGlvbnMudmVyc2lvbixcbiAgICAgIHBhdGg6IG9wdGlvbnMucGF0aCB8fCBcImFwaVwiLFxuICAgICAgcGVyc2lzdEF1dGhvcml6YXRpb246IG9wdGlvbnMucGVyc2lzdEF1dGhvcml6YXRpb24gPz8gdHJ1ZSxcbiAgICAgIGFzc2V0c1BhdGg6IG9wdGlvbnMuYXNzZXRzUGF0aCxcbiAgICAgIGZhdmljb25GaWxlUGF0aDogb3B0aW9ucy5mYXZpY29uUGF0aCxcbiAgICAgIHRvcGJhckljb25GaWxlUGF0aDogb3B0aW9ucy50b3BiYXJJY29uUGF0aCxcbiAgICAgIHRvcGJhckJnQ29sb3I6IG9wdGlvbnMudG9wYmFyQmdDb2xvcixcbiAgICAgIG9wZW5BcGlKc29uUGF0aDogb3B0aW9ucy5vcGVuQXBpSnNvblBhdGgsXG4gICAgICBvcGVuQXBpWWFtbFBhdGg6IG9wdGlvbnMub3BlbkFwaVlhbWxQYXRoLFxuICAgIH0pO1xuICAgIHN3YWdnZXIuc2V0dXBTd2FnZ2VyKCk7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICAvKipcbiAgICogQGRlc2NyaXB0aW9uXG4gICAqIFJlZ2lzdGVycyBvbmUgb3IgbW9yZSBnbG9iYWwgdmFsaWRhdGlvbiBwaXBlcy5cbiAgICpcbiAgICogQHN1bW1hcnlcbiAgICogRW5hYmxlcyByZXF1ZXN0IHBheWxvYWQgdmFsaWRhdGlvbiBhbmQgdHJhbnNmb3JtYXRpb24gZ2xvYmFsbHkgYWNyb3NzXG4gICAqIHRoZSBlbnRpcmUgTmVzdEpTIGFwcGxpY2F0aW9uLiBNdWx0aXBsZSBwaXBlcyBjYW4gYmUgY2hhaW5lZCB0b2dldGhlclxuICAgKiBmb3IgbW9kdWxhciBpbnB1dCB2YWxpZGF0aW9uLlxuICAgKlxuICAgKiBAcGFyYW0gey4uLlBpcGVUcmFuc2Zvcm1bXX0gcGlwZXMgLSBQaXBlIGluc3RhbmNlcyB0byByZWdpc3RlciBnbG9iYWxseS5cbiAgICogQHJldHVybiB7TmVzdEJvb3RzdHJhcGVyfSBSZXR1cm5zIHRoZSBjbGFzcyBmb3IgY2hhaW5pbmcuXG4gICAqL1xuICBzdGF0aWMgdXNlR2xvYmFsUGlwZXMoLi4ucGlwZXM6IFBpcGVUcmFuc2Zvcm1bXSkge1xuICAgIGlmIChwaXBlcy5sZW5ndGggPiAwKSB0aGlzLmFwcC51c2VHbG9iYWxQaXBlcyguLi5waXBlcyk7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICAvKipcbiAgICogQGRlc2NyaXB0aW9uXG4gICAqIFJlZ2lzdGVycyBvbmUgb3IgbW9yZSBnbG9iYWwgZXhjZXB0aW9uIGZpbHRlcnMuXG4gICAqXG4gICAqIEBzdW1tYXJ5XG4gICAqIElmIG5vIGZpbHRlcnMgYXJlIHByb3ZpZGVkLCBpdCBhdXRvbWF0aWNhbGx5IHJlZ2lzdGVycyBhIGRlZmF1bHRcbiAgICogc2V0IG9mIHN0YW5kYXJkIGV4Y2VwdGlvbiBmaWx0ZXJzIGZvciBjb21tb24gZXJyb3IgdHlwZXMgbGlrZVxuICAgKiBgSHR0cEV4Y2VwdGlvbmAsIGBWYWxpZGF0aW9uRXhjZXB0aW9uYCwgYENvbmZsaWN0RXhjZXB0aW9uYCwgYW5kIG90aGVycy5cbiAgICpcbiAgICogQHBhcmFtIHsuLi5FeGNlcHRpb25GaWx0ZXJbXX0gZmlsdGVycyAtIE9wdGlvbmFsIGZpbHRlcnMgdG8gYXBwbHkgZ2xvYmFsbHkuXG4gICAqL1xuICBzdGF0aWMgdXNlR2xvYmFsRmlsdGVycyguLi5maWx0ZXJzOiBhbnlbXSkge1xuICAgIHRoaXMuYXBwLnVzZUdsb2JhbEZpbHRlcnMoXG4gICAgICAuLi4oZmlsdGVycy5sZW5ndGggPiAwID8gZmlsdGVycyA6IFtuZXcgRGVjYWZFeGNlcHRpb25GaWx0ZXIoKV0pXG4gICAgKTtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb25cbiAgICogUmVnaXN0ZXJzIGdsb2JhbCBpbnRlcmNlcHRvcnMgZm9yIHJlcXVlc3QgYW5kIHJlc3BvbnNlIHRyYW5zZm9ybWF0aW9uLlxuICAgKlxuICAgKiBAc3VtbWFyeVxuICAgKiBJbnRlcmNlcHRvcnMgYWxsb3cgYWR2YW5jZWQgcmVxdWVzdC9yZXNwb25zZSBtYW5pcHVsYXRpb24gc3VjaCBhc1xuICAgKiBzZXJpYWxpemF0aW9uLCBsb2dnaW5nLCBvciB0cmFuc2Zvcm1hdGlvbi4gTXVsdGlwbGUgaW50ZXJjZXB0b3JzXG4gICAqIGNhbiBiZSBhZGRlZCBmb3IgbW9kdWxhciBjb25maWd1cmF0aW9uLlxuICAgKlxuICAgKiBAcGFyYW0gey4uLk5lc3RJbnRlcmNlcHRvcltdfSBpbnRlcmNlcHRvcnMgLSBJbnRlcmNlcHRvciBpbnN0YW5jZXMgdG8gcmVnaXN0ZXIuXG4gICAqIEByZXR1cm4ge05lc3RCb290c3RyYXBlcn0gUmV0dXJucyB0aGUgY2xhc3MgZm9yIGNoYWluaW5nIGNvbmZpZ3VyYXRpb24uXG4gICAqL1xuICBzdGF0aWMgdXNlR2xvYmFsSW50ZXJjZXB0b3JzKC4uLmludGVyY2VwdG9yczogTmVzdEludGVyY2VwdG9yW10pIHtcbiAgICBpZiAoaW50ZXJjZXB0b3JzLmxlbmd0aCA+IDApXG4gICAgICB0aGlzLmFwcC51c2VHbG9iYWxJbnRlcmNlcHRvcnMoLi4uaW50ZXJjZXB0b3JzKTtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb25cbiAgICogU3RhcnRzIHRoZSBOZXN0SlMgYXBwbGljYXRpb24gYW5kIGJpbmRzIGl0IHRvIHRoZSBnaXZlbiBwb3J0IGFuZCBob3N0LlxuICAgKlxuICAgKiBAc3VtbWFyeVxuICAgKiBMaXN0ZW5zIG9uIHRoZSBzcGVjaWZpZWQgcG9ydCBhbmQgb3B0aW9uYWxseSBhIGhvc3QuIE9uY2Ugc3RhcnRlZCxcbiAgICogbG9ncyB0aGUgYXBwbGljYXRpb24gVVJMIGZvciBlYXN5IGFjY2Vzcy4gVGhlIHN0YXJ0dXAgcHJvY2VzcyByZXNvbHZlc1xuICAgKiBvbmNlIHRoZSBhcHBsaWNhdGlvbiBpcyBzdWNjZXNzZnVsbHkgcnVubmluZy5cbiAgICpcbiAgICogQHBhcmFtIHtudW1iZXJ9IFtwb3J0PTMwMDBdIC0gUG9ydCBudW1iZXIgdG8gbGlzdGVuIG9uLlxuICAgKiBAcGFyYW0ge3N0cmluZ30gW2hvc3RdIC0gT3B0aW9uYWwgaG9zdCBvciBJUCBhZGRyZXNzIHRvIGJpbmQgdG8uXG4gICAqIEBwYXJhbSB7Ym9vbGVhbn0gW2xvZz10cnVlXSAtIFdoZXRoZXIgdG8gbG9nIHRoZSBhcHBsaWNhdGlvbiBVUkwgdXBvbiBzdGFydHVwLlxuICAgKiBAcmV0dXJuIHtQcm9taXNlPHZvaWQ+fSBSZXNvbHZlcyBvbmNlIHRoZSBhcHBsaWNhdGlvbiBzdGFydHMgc3VjY2Vzc2Z1bGx5LlxuICAgKi9cbiAgc3RhdGljIGFzeW5jIHN0YXJ0KFxuICAgIHBvcnQ6IG51bWJlciA9IE51bWJlcihwcm9jZXNzLmVudi5QT1JUKSB8fCAzMDAwLFxuICAgIGhvc3Q6IHN0cmluZyB8IHVuZGVmaW5lZCA9IHVuZGVmaW5lZCxcbiAgICBsb2c6IGJvb2xlYW4gPSB0cnVlXG4gICkge1xuICAgIHRoaXMuYXBwLmxpc3Rlbihwb3J0LCBob3N0IGFzIGFueSkudGhlbihhc3luYyAoKSA9PiB7XG4gICAgICBpZiAobG9nKSB7XG4gICAgICAgIGNvbnN0IHVybCA9IGF3YWl0IHRoaXMuYXBwLmdldFVybCgpO1xuICAgICAgICB0aGlzLmxvZ2dlci5sb2coYPCfmoAgQXBwbGljYXRpb24gaXMgcnVubmluZyBhdDogJHt1cmx9YCk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cbn1cbiJdfQ==
267
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiTmVzdEJvb3RzdHJhcGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiTmVzdEJvb3RzdHJhcGVyLmpzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLDJDQUF5QztBQUN6QyxvREFBNkQ7QUFDN0QsaURBQW9EO0FBQ3BELGdEQUE4QztBQUM5Qzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0ErQ0c7QUFDSCxNQUFhLGVBQWU7SUFDeEI7Ozs7Ozs7OztPQVNHO0lBQ0gsTUFBTSxLQUFLLE1BQU07UUFDYixJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDO1lBQ2hCLFdBQVc7WUFDWCxJQUFJLENBQUMsT0FBTyxHQUFHLElBQUksZUFBTSxDQUFDLGVBQWUsQ0FBQyxDQUFDO1FBQy9DLENBQUM7UUFDRCxPQUFPLElBQUksQ0FBQyxPQUFPLENBQUM7SUFDeEIsQ0FBQztJQUNEOzs7Ozs7Ozs7O09BVUc7SUFDSCxNQUFNLENBQUMsVUFBVSxDQUFDLEdBQUc7UUFDakIsSUFBSSxDQUFDLEdBQUcsR0FBRyxHQUFHLENBQUM7UUFDZixPQUFPLElBQUksQ0FBQztJQUNoQixDQUFDO0lBQ0Q7Ozs7Ozs7Ozs7O09BV0c7SUFDSCxNQUFNLENBQUMsWUFBWSxDQUFDLFlBQVk7UUFDNUIsSUFBSSxDQUFDLE9BQU8sR0FBRyxZQUFZLElBQUksSUFBSSxlQUFNLENBQUMsZUFBZSxDQUFDLENBQUM7UUFDM0QsSUFBSSxDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQ2pDLE9BQU8sSUFBSSxDQUFDO0lBQ2hCLENBQUM7SUFDRDs7Ozs7Ozs7Ozs7OztPQWFHO0lBQ0gsTUFBTSxDQUFDLFVBQVUsQ0FBQyxPQUFPLEdBQUcsRUFBRSxFQUFFLFlBQVksR0FBRyxDQUFDLEtBQUssRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLFFBQVEsQ0FBQztRQUMzRSxNQUFNLGNBQWMs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O0FBQ0QsOG1vQkFBOG1vQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IExvZ2dlciwgfSBmcm9tIFwiQG5lc3Rqcy9jb21tb25cIjtcbmltcG9ydCB7IERlY2FmRXhjZXB0aW9uRmlsdGVyIH0gZnJvbSBcIi4vZXhjZXB0aW9ucy9pbmRleC5qc1wiO1xuaW1wb3J0IHsgU3dhZ2dlckJ1aWxkZXIgfSBmcm9tIFwiLi9vcGVuYXBpL2luZGV4LmpzXCI7XG5pbXBvcnQgeyBDb3JzRXJyb3IgfSBmcm9tIFwiLi9lcnJvcnMvaW5kZXguanNcIjtcbi8qKlxuICogQGRlc2NyaXB0aW9uXG4gKiBBIGZsdWVudCwgc3RhdGljIGJvb3RzdHJhcCBjbGFzcyBmb3IgaW5pdGlhbGl6aW5nIGFuZCBjb25maWd1cmluZyBhIE5lc3RKUyBhcHBsaWNhdGlvbi5cbiAqXG4gKiBAc3VtbWFyeVxuICogVGhlIGBOZXN0Qm9vdHN0cmFwZXJgIGNsYXNzIHByb3ZpZGVzIGEgY2hhaW5hYmxlIEFQSSBmb3IgY29uZmlndXJpbmdcbiAqIGEgTmVzdEpTIGFwcGxpY2F0aW9uIGluc3RhbmNlLiBJdCBpbmNsdWRlcyBidWlsdC1pbiBtZXRob2RzIGZvciBlbmFibGluZ1xuICogQ09SUywgSGVsbWV0IHNlY3VyaXR5LCBTd2FnZ2VyIGRvY3VtZW50YXRpb24sIGdsb2JhbCBwaXBlcywgZmlsdGVycyxcbiAqIGludGVyY2VwdG9ycywgYW5kIHN0YXJ0aW5nIHRoZSBzZXJ2ZXIuXG4gKlxuICogVGhpcyBjbGFzcyBwcm9tb3RlcyBjb25zaXN0ZW5jeSBhbmQgcmVkdWNlcyByZXBldGl0aXZlIHNldHVwIGNvZGVcbiAqIGFjcm9zcyBtdWx0aXBsZSBOZXN0SlMgcHJvamVjdHMuXG4gKlxuICogQGV4YW1wbGVcbiAqIGBgYHRzXG4gKiBpbXBvcnQgeyBOZXN0RmFjdG9yeSB9IGZyb20gXCJAbmVzdGpzL2NvcmVcIjtcbiAqIGltcG9ydCB7IEFwcE1vZHVsZSB9IGZyb20gXCIuL2FwcC5tb2R1bGVcIjtcbiAqIGltcG9ydCB7IE15TG9nZ2VyIH0gZnJvbSBcIi4vTXlMb2dnZXJcIjtcbiAqIGltcG9ydCB7IE5lc3RCb290c3RyYXBlciB9IGZyb20gXCJAZGVjYWYtdHMvZm9yLW5lc3RcIjtcbiAqXG4gKiBhc3luYyBmdW5jdGlvbiBib290c3RyYXAoKSB7XG4gKiAgIGNvbnN0IGFwcCA9IGF3YWl0IE5lc3RGYWN0b3J5LmNyZWF0ZShBcHBNb2R1bGUpO1xuICpcbiAqICAgYXdhaXQgTmVzdEJvb3RzdHJhcGVyXG4gKiAgICAgLmluaXRpYWxpemUoYXBwKVxuICogICAgIC5lbmFibGVMb2dnZXIobmV3IE15TG9nZ2VyKCkpXG4gKiAgICAgLmVuYWJsZUNvcnMoW1wiaHR0cDovL2xvY2FsaG9zdDo0MjAwXCJdKVxuICogICAgIC51c2VIZWxtZXQoKVxuICogICAgIC5zZXR1cFN3YWdnZXIoe1xuICogICAgICAgdGl0bGU6IFwiT3BlbkFQSSBieSBUcmFkZU1hcmvihKJcIixcbiAqICAgICAgIGRlc2NyaXB0aW9uOiBcIlRyYWRlTWFya+KEoiBBUEkgZG9jdW1lbnRhdGlvblwiLFxuICogICAgICAgdmVyc2lvbjogXCIxLjAuMFwiLFxuICogICAgICAgcGF0aDogXCJhcGlcIixcbiAqICAgICAgIHBlcnNpc3RBdXRob3JpemF0aW9uOiB0cnVlLFxuICogICAgICAgdG9wYmFyQmdDb2xvcjogXCIjMkMzRTUwXCIsXG4gKiAgICAgICB0b3BiYXJJY29uUGF0aDogXCIvYXNzZXRzL2xvZ28uc3ZnXCIsXG4gKiAgICAgICBmYXZpY29uUGF0aDogXCIvYXNzZXRzL2Zhdmljb24uaWNvXCJcbiAqICAgICB9KVxuICogICAgIC51c2VHbG9iYWxGaWx0ZXJzKClcbiAqICAgICAudXNlR2xvYmFsUGlwZXMoLi4uKVxuICogICAgIC51c2VHbG9iYWxJbnRlcmNlcHRvcnMoLi4uKVxuICogICAgIC5zdGFydCgzMDAwKTtcbiAqIH1cbiAqXG4gKiBib290c3RyYXAoKTtcbiAqIGBgYFxuICogQGNsYXNzXG4gKi9cbmV4cG9ydCBjbGFzcyBOZXN0Qm9vdHN0cmFwZXIge1xuICAgIC8qKlxuICAgICAqIEBkZXNjcmlwdGlvblxuICAgICAqIFJldHVybnMgdGhlIGN1cnJlbnQgbG9nZ2VyIGluc3RhbmNlLCBjcmVhdGluZyBhIGRlZmF1bHQgb25lIGlmIG5vdCBzZXQuXG4gICAgICpcbiAgICAgKiBAc3VtbWFyeVxuICAgICAqIEVuc3VyZXMgdGhhdCBhIHZhbGlkIGBMb2dnZXJgIGluc3RhbmNlIGlzIGFsd2F5cyBhdmFpbGFibGVcbiAgICAgKiBmb3IgbG9nZ2luZyBib290c3RyYXAtcmVsYXRlZCBtZXNzYWdlcy5cbiAgICAgKlxuICAgICAqIEByZXR1cm4ge0xvZ2dlcn0gVGhlIGFjdGl2ZSBsb2dnZXIgaW5zdGFuY2UuXG4gICAgICovXG4gICAgc3RhdGljIGdldCBsb2dnZXIoKSB7XG4gICAgICAgIGlmICghdGhpcy5fbG9nZ2VyKSB7XG4gICAgICAgICAgICAvLyBmYWxsYmFja1xuICAgICAgICAgICAgdGhpcy5fbG9nZ2VyID0gbmV3IExvZ2dlcihcIk5lc3RCb290c3RyYXBcIik7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRoaXMuX2xvZ2dlcjtcbiAgICB9XG4gICAgLyoqXG4gICAgICogQGRlc2NyaXB0aW9uXG4gICAgICogSW5pdGlhbGl6ZXMgdGhlIGJvb3RzdHJhcHBlciB3aXRoIGEgZ2l2ZW4gTmVzdEpTIGFwcGxpY2F0aW9uLlxuICAgICAqXG4gICAgICogQHN1bW1hcnlcbiAgICAgKiBCaW5kcyB0aGUgcHJvdmlkZWQgTmVzdEpTIGFwcCBpbnN0YW5jZSB0byB0aGUgYm9vdHN0cmFwcGVyLCBlbmFibGluZ1xuICAgICAqIGNoYWluZWQgY29uZmlndXJhdGlvbiBtZXRob2RzLlxuICAgICAqXG4gICAgICogQHBhcmFtIHtJTmVzdEFwcGxpY2F0aW9ufSBhcHAgLSBUaGUgTmVzdEpTIGFwcGxpY2F0aW9uIGluc3RhbmNlIHRvIGluaXRpYWxpemUuXG4gICAgICogQHJldHVybiB7TmVzdEJvb3RzdHJhcGVyfSBSZXR1cm5zIHRoZSBjbGFzcyBmb3IgY2hhaW5pbmcgY29uZmlndXJhdGlvbiBtZXRob2RzLlxuICAgICAqL1xuICAgIHN0YXRpYyBpbml0aWFsaXplKGFwcCkge1xuICAgICAgICB0aGlzLmFwcCA9IGFwcDtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuICAgIC8qKlxuICAgICAqIEBkZXNjcmlwdGlvblxuICAgICAqIEVuYWJsZXMgb3IgcmVwbGFjZXMgdGhlIGdsb2JhbCBsb2dnZXIgZm9yIHRoZSBOZXN0SlMgYXBwbGljYXRpb24uXG4gICAgICpcbiAgICAgKiBAc3VtbWFyeVxuICAgICAqIElmIGEgY3VzdG9tIGxvZ2dlciBpcyBwcm92aWRlZCwgaXQgcmVwbGFjZXMgdGhlIGRlZmF1bHQgbG9nZ2VyLiBPdGhlcndpc2UsXG4gICAgICogYSBuZXcgbG9nZ2VyIG5hbWVkIGBcIk5lc3RCb290c3RyYXBcImAgaXMgdXNlZC4gVGhpcyBsb2dnZXIgaXMgYWxzbyByZWdpc3RlcmVkXG4gICAgICogd2l0aCB0aGUgTmVzdEpTIGFwcGxpY2F0aW9uLlxuICAgICAqXG4gICAgICogQHBhcmFtIHtMb2dnZXJ9IFtjdXN0b21Mb2dnZXJdIC0gT3B0aW9uYWwgY3VzdG9tIGxvZ2dlciBpbnN0YW5jZS5cbiAgICAgKiBAcmV0dXJuIHtOZXN0Qm9vdHN0cmFwZXJ9IFJldHVybnMgdGhlIGNsYXNzIGZvciBjaGFpbmluZy5cbiAgICAgKi9cbiAgICBzdGF0aWMgZW5hYmxlTG9nZ2VyKGN1c3RvbUxvZ2dlcikge1xuICAgICAgICB0aGlzLl9sb2dnZXIgPSBjdXN0b21Mb2dnZXIgfHwgbmV3IExvZ2dlcihcIk5lc3RCb290c3RyYXBcIik7XG4gICAgICAgIHRoaXMuYXBwLnVzZUxvZ2dlcih0aGlzLl9sb2dnZXIpO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG4gICAgLyoqXG4gICAgICogQGRlc2NyaXB0aW9uXG4gICAgICogRW5hYmxlcyBDcm9zcy1PcmlnaW4gUmVzb3VyY2UgU2hhcmluZyAoQ09SUykgZm9yIHRoZSBhcHBsaWNhdGlvbi5cbiAgICAgKlxuICAgICAqIEBzdW1tYXJ5XG4gICAgICogQWxsb3dzIGRlZmluaW5nIGVpdGhlciBhIHdpbGRjYXJkIG9yaWdpbiAoYFwiKlwiYCkgb3IgYSBsaXN0IG9mIGFsbG93ZWQgb3JpZ2lucy5cbiAgICAgKiBBdXRvbWF0aWNhbGx5IGFjY2VwdHMgbG9jYWwgZGV2ZWxvcG1lbnQgcmVxdWVzdHMgYW5kIHRob3NlIHdpdGhvdXQgb3JpZ2luIGhlYWRlcnMuXG4gICAgICogVGhyb3dzIGEgYENvcnNFcnJvcmAgZm9yIHVuYXV0aG9yaXplZCBvcmlnaW5zLlxuICAgICAqXG4gICAgICogQHBhcmFtIHsnKicgfCBzdHJpbmdbXX0gW29yaWdpbnM9W11dIC0gTGlzdCBvZiBhbGxvd2VkIG9yaWdpbnMgb3IgYFwiKlwiYCB0byBhbGxvdyBhbGwuXG4gICAgICogQHBhcmFtIHtzdHJpbmdbXX0gW2FsbG93TWV0aG9kcz1bJ0dFVCcsICdQT1NUJywgJ1BVVCcsICdERUxFVEUnXV0gLSBBbGxvd2VkIEhUVFAgbWV0aG9kcy5cbiAgICAgKiBAcmV0dXJuIHtOZXN0Qm9vdHN0cmFwZXJ9IFJldHVybnMgdGhlIGNsYXNzIGZvciBjaGFpbmluZyBjb25maWd1cmF0aW9uLlxuICAgICAqXG4gICAgICovXG4gICAgc3RhdGljIGVuYWJsZUNvcnMob3JpZ2lucyA9IFtdLCBhbGxvd01ldGhvZHMgPSBbXCJHRVRcIiwgXCJQT1NUXCIsIFwiUFVUXCIsIFwiREVMRVRFXCJdKSB7XG4gICAgICAgIGNvbnN0IGFsbG93ZWRPcmlnaW5zID0gb3JpZ2lucyA9PT0gXCIqXCIgPyBcIipcIiA6IG9yaWdpbnMubWFwKChvKSA9PiBvLnRyaW0oKS50b0xvd2VyQ2FzZSgpKTtcbiAgICAgICAgY29uc3QgY29yc09wdGlvbnMgPSB7XG4gICAgICAgICAgICBvcmlnaW46IChvcmlnaW4sIGNhbGxiYWNrKSA9PiB7XG4gICAgICAgICAgICAgICAgLy8gQWxsb3cgcmVxdWVzdCB3aXRob3V0IG9yaWdpbi4uLlxuICAgICAgICAgICAgICAgIGlmICghb3JpZ2luKVxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gY2FsbGJhY2sobnVsbCwgdHJ1ZSk7XG4gICAgICAgICAgICAgICAgaWYgKGFsbG93ZWRPcmlnaW5zID09PSBcIipcIiB8fFxuICAgICAgICAgICAgICAgICAgICAoQXJyYXkuaXNBcnJheShhbGxvd2VkT3JpZ2lucykgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgIGFsbG93ZWRPcmlnaW5zLmluY2x1ZGVzKG9yaWdpbi50b0xvd2VyQ2FzZSgpKSkpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGNhbGxiYWNrKG51bGwsIHRydWUpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBjYWxsYmFjayhuZXcgQ29yc0Vycm9yKGBPcmlnaW4gJHtvcmlnaW59IG5vdCBhbGxvd2VkYCkpO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGNyZWRlbnRpYWxzOiB0cnVlLFxuICAgICAgICAgICAgbWV0aG9kczogYWxsb3dNZXRob2RzLmpvaW4oXCIsXCIpLFxuICAgICAgICB9O1xuICAgICAgICB0aGlzLmFwcC5lbmFibGVDb3JzKGNvcnNPcHRpb25zKTtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuICAgIC8qKlxuICAgICAqIEBkZXNjcmlwdGlvblxuICAgICAqIEFwcGxpZXMgdGhlIEhlbG1ldCBtaWRkbGV3YXJlIGZvciBlbmhhbmNlZCBzZWN1cml0eS5cbiAgICAgKlxuICAgICAqIEBzdW1tYXJ5XG4gICAgICogRHluYW1pY2FsbHkgbG9hZHMgdGhlIGBoZWxtZXRgIHBhY2thZ2UgaWYgYXZhaWxhYmxlIGFuZCByZWdpc3RlcnMgaXRcbiAgICAgKiBhcyBtaWRkbGV3YXJlIHRvIGltcHJvdmUgSFRUUCBoZWFkZXIgc2VjdXJpdHkuIElmIG5vdCBpbnN0YWxsZWQsIGxvZ3MgYSB3YXJuaW5nXG4gICAgICogYW5kIGNvbnRpbnVlcyBleGVjdXRpb24gd2l0aG91dCB0aHJvd2luZyBlcnJvcnMuXG4gICAgICpcbiAgICAgKiBAcGFyYW0ge1JlY29yZDxzdHJpbmcsIGFueT59IFtvcHRpb25zXSAtIE9wdGlvbmFsIGNvbmZpZ3VyYXRpb24gcGFzc2VkIHRvIEhlbG1ldC5cbiAgICAgKiBAcmV0dXJuIHtOZXN0Qm9vdHN0cmFwZXJ9IFJldHVybnMgdGhlIGNsYXNzIGZvciBjaGFpbmluZyBjb25maWd1cmF0aW9uLlxuICAgICAqL1xuICAgIHN0YXRpYyB1c2VIZWxtZXQob3B0aW9ucykge1xuICAgICAgICB0cnkge1xuICAgICAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1yZXF1aXJlLWltcG9ydHNcbiAgICAgICAgICAgIGNvbnN0IGhlbG1ldCA9IHJlcXVpcmUoXCJoZWxtZXRcIik7IC8vIER5bmFtaWMgaW1wb3J0IHRvIGF2b2lkIGhhcmQgZGVwZW5kZW5jeVxuICAgICAgICAgICAgdGhpcy5hcHAudXNlKGhlbG1ldChvcHRpb25zKSk7XG4gICAgICAgICAgICB0aGlzLmxvZ2dlci5sb2coXCJIZWxtZXQgbWlkZGxld2FyZSBlbmFibGVkIHN1Y2Nlc3NmdWxseS5cIik7XG4gICAgICAgIH1cbiAgICAgICAgY2F0Y2gge1xuICAgICAgICAgICAgdGhpcy5sb2dnZXIud2FybihcIkhlbG1ldCBub3QgaW5zdGFsbGVkLiBTa2lwcGluZyBtaWRkbGV3YXJlLlwiKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG4gICAgLyoqXG4gICAgICogQGRlc2NyaXB0aW9uXG4gICAgICogQ29uZmlndXJlcyBhbmQgaW5pdGlhbGl6ZXMgU3dhZ2dlciBVSSBmb3IgQVBJIGRvY3VtZW50YXRpb24uXG4gICAgICpcbiAgICAgKiBAc3VtbWFyeVxuICAgICAqIFVzZXMgdGhlIGBTd2FnZ2VyQnVpbGRlcmAgdXRpbGl0eSB0byBjb25maWd1cmUgQVBJIGRvY3VtZW50YXRpb25cbiAgICAgKiB3aXRoIGRldGFpbGVkIGN1c3RvbWl6YXRpb24gZm9yIHRpdGxlLCB2ZXJzaW9uLCBwYXRocywgYW5kIGNvbG9ycy5cbiAgICAgKiBTd2FnZ2VyIGlzIGF1dG9tYXRpY2FsbHkgZXhwb3NlZCBhdCB0aGUgY29uZmlndXJlZCBwYXRoLlxuICAgICAqXG4gICAgICogQHBhcmFtIHtTd2FnZ2VyU2V0dXBPcHRpb25zfSBvcHRpb25zIC0gU3dhZ2dlciBjb25maWd1cmF0aW9uIG9wdGlvbnMuXG4gICAgICogQHJldHVybiB7TmVzdEJvb3RzdHJhcGVyfSBSZXR1cm5zIHRoZSBjbGFzcyBmb3IgY2hhaW5pbmcgY29uZmlndXJhdGlvbi5cbiAgICAgKi9cbiAgICBzdGF0aWMgc2V0dXBTd2FnZ2VyKG9wdGlvbnMpIHtcbiAgICAgICAgY29uc3Qgc3dhZ2dlciA9IG5ldyBTd2FnZ2VyQnVpbGRlcih0aGlzLmFwcCwge1xuICAgICAgICAgICAgdGl0bGU6IG9wdGlvbnMudGl0bGUsXG4gICAgICAgICAgICBkZXNjcmlwdGlvbjogb3B0aW9ucy5kZXNjcmlwdGlvbixcbiAgICAgICAgICAgIHZlcnNpb246IG9wdGlvbnMudmVyc2lvbixcbiAgICAgICAgICAgIHBhdGg6IG9wdGlvbnMucGF0aCB8fCBcImFwaVwiLFxuICAgICAgICAgICAgcGVyc2lzdEF1dGhvcml6YXRpb246IG9wdGlvbnMucGVyc2lzdEF1dGhvcml6YXRpb24gPz8gdHJ1ZSxcbiAgICAgICAgICAgIGFzc2V0c1BhdGg6IG9wdGlvbnMuYXNzZXRzUGF0aCxcbiAgICAgICAgICAgIGZhdmljb25GaWxlUGF0aDogb3B0aW9ucy5mYXZpY29uUGF0aCxcbiAgICAgICAgICAgIHRvcGJhckljb25GaWxlUGF0aDogb3B0aW9ucy50b3BiYXJJY29uUGF0aCxcbiAgICAgICAgICAgIHRvcGJhckJnQ29sb3I6IG9wdGlvbnMudG9wYmFyQmdDb2xvcixcbiAgICAgICAgICAgIG9wZW5BcGlKc29uUGF0aDogb3B0aW9ucy5vcGVuQXBpSnNvblBhdGgsXG4gICAgICAgICAgICBvcGVuQXBpWWFtbFBhdGg6IG9wdGlvbnMub3BlbkFwaVlhbWxQYXRoLFxuICAgICAgICB9KTtcbiAgICAgICAgc3dhZ2dlci5zZXR1cFN3YWdnZXIoKTtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuICAgIC8qKlxuICAgICAqIEBkZXNjcmlwdGlvblxuICAgICAqIFJlZ2lzdGVycyBvbmUgb3IgbW9yZSBnbG9iYWwgdmFsaWRhdGlvbiBwaXBlcy5cbiAgICAgKlxuICAgICAqIEBzdW1tYXJ5XG4gICAgICogRW5hYmxlcyByZXF1ZXN0IHBheWxvYWQgdmFsaWRhdGlvbiBhbmQgdHJhbnNmb3JtYXRpb24gZ2xvYmFsbHkgYWNyb3NzXG4gICAgICogdGhlIGVudGlyZSBOZXN0SlMgYXBwbGljYXRpb24uIE11bHRpcGxlIHBpcGVzIGNhbiBiZSBjaGFpbmVkIHRvZ2V0aGVyXG4gICAgICogZm9yIG1vZHVsYXIgaW5wdXQgdmFsaWRhdGlvbi5cbiAgICAgKlxuICAgICAqIEBwYXJhbSB7Li4uUGlwZVRyYW5zZm9ybVtdfSBwaXBlcyAtIFBpcGUgaW5zdGFuY2VzIHRvIHJlZ2lzdGVyIGdsb2JhbGx5LlxuICAgICAqIEByZXR1cm4ge05lc3RCb290c3RyYXBlcn0gUmV0dXJucyB0aGUgY2xhc3MgZm9yIGNoYWluaW5nLlxuICAgICAqL1xuICAgIHN0YXRpYyB1c2VHbG9iYWxQaXBlcyguLi5waXBlcykge1xuICAgICAgICBpZiAocGlwZXMubGVuZ3RoID4gMClcbiAgICAgICAgICAgIHRoaXMuYXBwLnVzZUdsb2JhbFBpcGVzKC4uLnBpcGVzKTtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuICAgIC8qKlxuICAgICAqIEBkZXNjcmlwdGlvblxuICAgICAqIFJlZ2lzdGVycyBvbmUgb3IgbW9yZSBnbG9iYWwgZXhjZXB0aW9uIGZpbHRlcnMuXG4gICAgICpcbiAgICAgKiBAc3VtbWFyeVxuICAgICAqIElmIG5vIGZpbHRlcnMgYXJlIHByb3ZpZGVkLCBpdCBhdXRvbWF0aWNhbGx5IHJlZ2lzdGVycyBhIGRlZmF1bHRcbiAgICAgKiBzZXQgb2Ygc3RhbmRhcmQgZXhjZXB0aW9uIGZpbHRlcnMgZm9yIGNvbW1vbiBlcnJvciB0eXBlcyBsaWtlXG4gICAgICogYEh0dHBFeGNlcHRpb25gLCBgVmFsaWRhdGlvbkV4Y2VwdGlvbmAsIGBDb25mbGljdEV4Y2VwdGlvbmAsIGFuZCBvdGhlcnMuXG4gICAgICpcbiAgICAgKiBAcGFyYW0gey4uLkV4Y2VwdGlvbkZpbHRlcltdfSBmaWx0ZXJzIC0gT3B0aW9uYWwgZmlsdGVycyB0byBhcHBseSBnbG9iYWxseS5cbiAgICAgKi9cbiAgICBzdGF0aWMgdXNlR2xvYmFsRmlsdGVycyguLi5maWx0ZXJzKSB7XG4gICAgICAgIHRoaXMuYXBwLnVzZUdsb2JhbEZpbHRlcnMoLi4uKGZpbHRlcnMubGVuZ3RoID4gMCA/IGZpbHRlcnMgOiBbbmV3IERlY2FmRXhjZXB0aW9uRmlsdGVyKCldKSk7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBAZGVzY3JpcHRpb25cbiAgICAgKiBSZWdpc3RlcnMgZ2xvYmFsIGludGVyY2VwdG9ycyBmb3IgcmVxdWVzdCBhbmQgcmVzcG9uc2UgdHJhbnNmb3JtYXRpb24uXG4gICAgICpcbiAgICAgKiBAc3VtbWFyeVxuICAgICAqIEludGVyY2VwdG9ycyBhbGxvdyBhZHZhbmNlZCByZXF1ZXN0L3Jlc3BvbnNlIG1hbmlwdWxhdGlvbiBzdWNoIGFzXG4gICAgICogc2VyaWFsaXphdGlvbiwgbG9nZ2luZywgb3IgdHJhbnNmb3JtYXRpb24uIE11bHRpcGxlIGludGVyY2VwdG9yc1xuICAgICAqIGNhbiBiZSBhZGRlZCBmb3IgbW9kdWxhciBjb25maWd1cmF0aW9uLlxuICAgICAqXG4gICAgICogQHBhcmFtIHsuLi5OZXN0SW50ZXJjZXB0b3JbXX0gaW50ZXJjZXB0b3JzIC0gSW50ZXJjZXB0b3IgaW5zdGFuY2VzIHRvIHJlZ2lzdGVyLlxuICAgICAqIEByZXR1cm4ge05lc3RCb290c3RyYXBlcn0gUmV0dXJucyB0aGUgY2xhc3MgZm9yIGNoYWluaW5nIGNvbmZpZ3VyYXRpb24uXG4gICAgICovXG4gICAgc3RhdGljIHVzZUdsb2JhbEludGVyY2VwdG9ycyguLi5pbnRlcmNlcHRvcnMpIHtcbiAgICAgICAgaWYgKGludGVyY2VwdG9ycy5sZW5ndGggPiAwKVxuICAgICAgICAgICAgdGhpcy5hcHAudXNlR2xvYmFsSW50ZXJjZXB0b3JzKC4uLmludGVyY2VwdG9ycyk7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBAZGVzY3JpcHRpb25cbiAgICAgKiBTdGFydHMgdGhlIE5lc3RKUyBhcHBsaWNhdGlvbiBhbmQgYmluZHMgaXQgdG8gdGhlIGdpdmVuIHBvcnQgYW5kIGhvc3QuXG4gICAgICpcbiAgICAgKiBAc3VtbWFyeVxuICAgICAqIExpc3RlbnMgb24gdGhlIHNwZWNpZmllZCBwb3J0IGFuZCBvcHRpb25hbGx5IGEgaG9zdC4gT25jZSBzdGFydGVkLFxuICAgICAqIGxvZ3MgdGhlIGFwcGxpY2F0aW9uIFVSTCBmb3IgZWFzeSBhY2Nlc3MuIFRoZSBzdGFydHVwIHByb2Nlc3MgcmVzb2x2ZXNcbiAgICAgKiBvbmNlIHRoZSBhcHBsaWNhdGlvbiBpcyBzdWNjZXNzZnVsbHkgcnVubmluZy5cbiAgICAgKlxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSBbcG9ydD0zMDAwXSAtIFBvcnQgbnVtYmVyIHRvIGxpc3RlbiBvbi5cbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gW2hvc3RdIC0gT3B0aW9uYWwgaG9zdCBvciBJUCBhZGRyZXNzIHRvIGJpbmQgdG8uXG4gICAgICogQHBhcmFtIHtib29sZWFufSBbbG9nPXRydWVdIC0gV2hldGhlciB0byBsb2cgdGhlIGFwcGxpY2F0aW9uIFVSTCB1cG9uIHN0YXJ0dXAuXG4gICAgICogQHJldHVybiB7UHJvbWlzZTx2b2lkPn0gUmVzb2x2ZXMgb25jZSB0aGUgYXBwbGljYXRpb24gc3RhcnRzIHN1Y2Nlc3NmdWxseS5cbiAgICAgKi9cbiAgICBzdGF0aWMgYXN5bmMgc3RhcnQocG9ydCA9IE51bWJlcihwcm9jZXNzLmVudi5QT1JUKSB8fCAzMDAwLCBob3N0ID0gdW5kZWZpbmVkLCBsb2cgPSB0cnVlKSB7XG4gICAgICAgIHRoaXMuYXBwLmxpc3Rlbihwb3J0LCBob3N0KS50aGVuKGFzeW5jICgpID0+IHtcbiAgICAgICAgICAgIGlmIChsb2cpIHtcbiAgICAgICAgICAgICAgICBjb25zdCB1cmwgPSBhd2FpdCB0aGlzLmFwcC5nZXRVcmwoKTtcbiAgICAgICAgICAgICAgICB0aGlzLmxvZ2dlci5sb2coYPCfmoAgQXBwbGljYXRpb24gaXMgcnVubmluZyBhdDogJHt1cmx9YCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH1cbn1cbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWRhdGE6YXBwbGljYXRpb24vanNvbjtiYXNlNjQsZXlKMlpYSnphVzl1SWpvekxDSm1hV3hsSWpvaVRtVnpkRUp2YjNSemRISmhjR1Z5TG1weklpd2ljMjkxY21ObFVtOXZkQ0k2SWlJc0luTnZkWEpqWlhNaU9sc2lMaTR2TGk0dkxpNHZjM0pqTDJaaFkzUnZjbmt2VG1WemRFSnZiM1J6ZEhKaGNHVnlMblJ6SWwwc0ltNWhiV1Z6SWpwYlhTd2liV0Z3Y0dsdVozTWlPaUpCUVVGQkxFOUJRVThzUlVGRlRDeE5RVUZOTEVkQlIxQXNUVUZCVFN4blFrRkJaMElzUTBGQlF6dEJRVU40UWl4UFFVRlBMRVZCUVVVc2IwSkJRVzlDTEVWQlFVVXNPRUpCUVhGQ08wRkJRM0JFTEU5QlFVOHNSVUZCUlN4alFVRmpMRVZCUVVVc01rSkJRV3RDTzBGQlJUTkRMRTlCUVU4c1JVRkJSU3hUUVVGVExFVkJRVVVzTUVKQlFXbENPMEZCTkVOeVF6czdPenM3T3pzN096czdPenM3T3pzN096czdPenM3T3pzN096czdPenM3T3pzN096czdPenM3T3pzN096czdSMEVyUTBjN1FVRkRTQ3hOUVVGTkxFOUJRVThzWlVGQlpUdEpRVWt4UWpzN096czdPenM3TzA5QlUwYzdTVUZEU3l4TlFVRk5MRXRCUVVzc1RVRkJUVHRSUVVOMlFpeEpRVUZKTEVOQlFVTXNTVUZCU1N4RFFVRkRMRTlCUVU4c1JVRkJSU3hEUVVGRE8xbEJRMnhDTEZkQlFWYzdXVUZEV0N4SlFVRkpMRU5CUVVNc1QwRkJUeXhIUVVGSExFbEJRVWtzVFVGQlRTeERRVUZETEdWQlFXVXNRMEZCUXl4RFFVRkRPMUZCUXpkRExFTkJRVU03VVVGRFJDeFBRVUZQTEVsQlFVa3NRMEZCUXl4UFFVRlBMRU5CUVVNN1NVRkRkRUlzUTBGQlF6dEpRVVZFT3pzN096czdPenM3TzA5QlZVYzdTVUZEU0N4TlFVRk5MRU5CUVVNc1ZVRkJWU3hEUVVGRExFZEJRWEZDTzFGQlEzSkRMRWxCUVVrc1EwRkJReXhIUVVGSExFZEJRVWNzUjBGQlJ5eERRVUZETzFGQlEyWXNUMEZCVHl4SlFVRkpMRU5CUVVNN1NVRkRaQ3hEUVVGRE8wbEJSVVE3T3pzN096czdPenM3TzA5QlYwYzdTVUZEU0N4TlFVRk5MRU5CUVVNc1dVRkJXU3hEUVVGRExGbEJRWEZDTzFGQlEzWkRMRWxCUVVrc1EwRkJReXhQUVVGUExFZEJRVWNzV1VGQldTeEpRVUZKTEVsQlFVa3NUVUZCVFN4RFFVRkRMR1ZCUVdVc1EwRkJReXhEUVVGRE8xRkJRek5FTEVsQlFVa3NRMEZCUXl4SFFVRkhMRU5CUVVNc1UwRkJVeXhEUVVGRExFbEJRVWtzUTBGQlF5eFBRVUZQTEVOQlFVTXNRMEZCUXp0UlFVTnFReXhQUVVGUExFbEJRVWtzUTBGQlF6dEpRVU5rTEVOQlFVTTdTVUZGUkRzN096czdPenM3T3pzN096dFBRV0ZITzBsQlEwZ3NUVUZCVFN4RFFVRkRMRlZCUVZVc1EwRkRaaXhWUVVFd1FpeEZRVUZGTEVWQlF6VkNMR1ZCUVhsQ0xFTkJRVU1zUzBGQlN5eEZRVUZGTEUxQlFVMHNSVUZCUlN4TFFVRkxMRVZCUVVVc1VVRkJVU3hEUVVGRE8xRkJSWHBFTEUxQlFVMHNZMEZCWXl4SFFVTnNRaXhQUVVGUExFdEJRVXNzUjBGQlJ5eERRVUZETEVOQlFVTXNRMEZCUXl4SFFVRkhMRU5CUVVNc1EwRkJReXhEUVVGRExFOUJRVThzUTBGQlF5eEhRVUZITEVOQlFVTXNRMEZCUXl4RFFVRkRMRVZCUVVVc1JVRkJSU3hEUVVGRExFTkJRVU1zUTBGQlF5eEpRVUZKTEVWQlFVVXNRMEZCUXl4WFFVRlhMRVZCUVVVc1EwRkJReXhEUVVGRE8xRkJSWEpGTEUxQlFVMHNWMEZCVnl4SFFVRm5RanRaUVVNdlFpeE5RVUZOTEVWQlFVVXNRMEZCUXl4TlFVRk5MRVZCUVVVc1VVRkJVU3hGUVVGRkxFVkJRVVU3WjBKQlF6TkNMR3REUVVGclF6dG5Ra0ZEYkVNc1NVRkJTU3hEUVVGRExFMUJRVTA3YjBKQlFVVXNUMEZCVHl4UlFVRlJMRU5CUVVNc1NVRkJTU3hGUVVGRkxFbEJRVWtzUTBGQlF5eERRVUZETzJkQ1FVVjZReXhKUVVORkxHTkJRV01zUzBGQlN5eEhRVUZITzI5Q1FVTjBRaXhEUVVGRExFdEJRVXNzUTBGQlF5eFBRVUZQTEVOQlFVTXNZMEZCWXl4RFFVRkRPM2RDUVVNMVFpeGpRVUZqTEVOQlFVTXNVVUZCVVN4RFFVRkRMRTFCUVUwc1EwRkJReXhYUVVGWExFVkJRVVVzUTBGQlF5eERRVUZETEVWQlEyaEVMRU5CUVVNN2IwSkJRMFFzVDBGQlR5eFJRVUZSTEVOQlFVTXNTVUZCU1N4RlFVRkZMRWxCUVVrc1EwRkJReXhEUVVGRE8yZENRVU01UWl4RFFVRkRPMmRDUVVWRUxGRkJRVkVzUTBGQlF5eEpRVUZKTEZOQlFWTXNRMEZCUXl4VlFVRlZMRTFCUVUwc1kwRkJZeXhEUVVGRExFTkJRVU1zUTBGQlF6dFpRVU14UkN4RFFVRkRPMWxCUTBRc1YwRkJWeXhGUVVGRkxFbEJRVWs3V1VGRGFrSXNUMEZCVHl4RlFVRkZMRmxCUVZrc1EwRkJReXhKUVVGSkxFTkJRVU1zUjBGQlJ5eERRVUZETzFOQlEyaERMRU5CUVVNN1VVRkZSaXhKUVVGSkxFTkJRVU1zUjBGQlJ5eERRVUZETEZWQlFWVXNRMEZCUXl4WFFVRlhMRU5CUVVNc1EwRkJRenRSUVVOcVF5eFBRVUZQTEVsQlFVa3NRMEZCUXp0SlFVTmtMRU5CUVVNN1NVRkZSRHM3T3pzN096czdPenM3VDBGWFJ6dEpRVU5JTEUxQlFVMHNRMEZCUXl4VFFVRlRMRU5CUVVNc1QwRkJOa0k3VVVGRE5VTXNTVUZCU1N4RFFVRkRPMWxCUTBnc2FVVkJRV2xGTzFsQlEycEZMRTFCUVUwc1RVRkJUU3hIUVVGSExFOUJRVThzUTBGQlF5eFJRVUZSTEVOQlFVTXNRMEZCUXl4RFFVRkRMREJEUVVFd1F6dFpRVU0xUlN4SlFVRkpMRU5CUVVNc1IwRkJSeXhEUVVGRExFZEJRVWNzUTBGQlF5eE5RVUZOTEVOQlFVTXNUMEZCVHl4RFFVRkRMRU5CUVVNc1EwRkJRenRaUVVNNVFpeEpRVUZKTEVOQlFVTXNUVUZCVFN4RFFVRkRMRWRCUVVjc1EwRkJReXg1UTBGQmVVTXNRMEZCUXl4RFFVRkRPMUZCUXpkRUxFTkJRVU03VVVGQlF5eE5RVUZOTEVOQlFVTTdXVUZEVUN4SlFVRkpMRU5CUVVNc1RVRkJUU3hEUVVGRExFbEJRVWtzUTBGQlF5dzBRMEZCTkVNc1EwRkJReXhEUVVGRE8xRkJRMnBGTEVOQlFVTTdVVUZGUkN4UFFVRlBMRWxCUVVrc1EwRkJRenRKUVVOa0xFTkJRVU03U1VGRlJEczdPenM3T3pzN096czdUMEZYUnp0SlFVTklMRTFCUVUwc1EwRkJReXhaUVVGWkxFTkJRVU1zVDBGQk5FSTdVVUZET1VNc1RVRkJUU3hQUVVGUExFZEJRVWNzU1VGQlNTeGpRVUZqTEVOQlFVTXNTVUZCU1N4RFFVRkRMRWRCUVVjc1JVRkJSVHRaUVVNelF5eExRVUZMTEVWQlFVVXNUMEZCVHl4RFFVRkRMRXRCUVVzN1dVRkRjRUlzVjBGQlZ5eEZRVUZGTEU5QlFVOHNRMEZCUXl4WFFVRlhPMWxCUTJoRExFOUJRVThzUlVGQlJTeFBRVUZQTEVOQlFVTXNUMEZCVHp0WlFVTjRRaXhKUVVGSkxFVkJRVVVzVDBGQlR5eERRVUZETEVsQlFVa3NTVUZCU1N4TFFVRkxPMWxCUXpOQ0xHOUNRVUZ2UWl4RlFVRkZMRTlCUVU4c1EwRkJReXh2UWtGQmIwSXNTVUZCU1N4SlFVRkpPMWxCUXpGRUxGVkJRVlVzUlVGQlJTeFBRVUZQTEVOQlFVTXNWVUZCVlR0WlFVTTVRaXhsUVVGbExFVkJRVVVzVDBGQlR5eERRVUZETEZkQlFWYzdXVUZEY0VNc2EwSkJRV3RDTEVWQlFVVXNUMEZCVHl4RFFVRkRMR05CUVdNN1dVRkRNVU1zWVVGQllTeEZRVUZGTEU5QlFVOHNRMEZCUXl4aFFVRmhPMWxCUTNCRExHVkJRV1VzUlVGQlJTeFBRVUZQTEVOQlFVTXNaVUZCWlR0WlFVTjRReXhsUVVGbExFVkJRVVVzVDBGQlR5eERRVUZETEdWQlFXVTdVMEZEZWtNc1EwRkJReXhEUVVGRE8xRkJRMGdzVDBGQlR5eERRVUZETEZsQlFWa3NSVUZCUlN4RFFVRkRPMUZCUTNaQ0xFOUJRVThzU1VGQlNTeERRVUZETzBsQlEyUXNRMEZCUXp0SlFVVkVPenM3T3pzN096czdPenRQUVZkSE8wbEJRMGdzVFVGQlRTeERRVUZETEdOQlFXTXNRMEZCUXl4SFFVRkhMRXRCUVhOQ08xRkJRemRETEVsQlFVa3NTMEZCU3l4RFFVRkRMRTFCUVUwc1IwRkJSeXhEUVVGRE8xbEJRVVVzU1VGQlNTeERRVUZETEVkQlFVY3NRMEZCUXl4alFVRmpMRU5CUVVNc1IwRkJSeXhMUVVGTExFTkJRVU1zUTBGQlF6dFJRVU40UkN4UFFVRlBMRWxCUVVrc1EwRkJRenRKUVVOa0xFTkJRVU03U1VGRlJEczdPenM3T3pzN096dFBRVlZITzBsQlEwZ3NUVUZCVFN4RFFVRkRMR2RDUVVGblFpeERRVUZETEVkQlFVY3NUMEZCWXp0UlFVTjJReXhKUVVGSkxFTkJRVU1zUjBGQlJ5eERRVUZETEdkQ1FVRm5RaXhEUVVOMlFpeEhRVUZITEVOQlFVTXNUMEZCVHl4RFFVRkRMRTFCUVUwc1IwRkJSeXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEU5QlFVOHNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhKUVVGSkxHOUNRVUZ2UWl4RlFVRkZMRU5CUVVNc1EwRkJReXhEUVVOcVJTeERRVUZETzFGQlEwWXNUMEZCVHl4SlFVRkpMRU5CUVVNN1NVRkRaQ3hEUVVGRE8wbEJSVVE3T3pzN096czdPenM3TzA5QlYwYzdTVUZEU0N4TlFVRk5MRU5CUVVNc2NVSkJRWEZDTEVOQlFVTXNSMEZCUnl4WlFVRXJRanRSUVVNM1JDeEpRVUZKTEZsQlFWa3NRMEZCUXl4TlFVRk5MRWRCUVVjc1EwRkJRenRaUVVONlFpeEpRVUZKTEVOQlFVTXNSMEZCUnl4RFFVRkRMSEZDUVVGeFFpeERRVUZETEVkQlFVY3NXVUZCV1N4RFFVRkRMRU5CUVVNN1VVRkRiRVFzVDBGQlR5eEpRVUZKTEVOQlFVTTdTVUZEWkN4RFFVRkRPMGxCUlVRN096czdPenM3T3pzN096czdUMEZoUnp0SlFVTklMRTFCUVUwc1EwRkJReXhMUVVGTExFTkJRVU1zUzBGQlN5eERRVU5vUWl4UFFVRmxMRTFCUVUwc1EwRkJReXhQUVVGUExFTkJRVU1zUjBGQlJ5eERRVUZETEVsQlFVa3NRMEZCUXl4SlFVRkpMRWxCUVVrc1JVRkRMME1zVDBGQk1rSXNVMEZCVXl4RlFVTndReXhOUVVGbExFbEJRVWs3VVVGRmJrSXNTVUZCU1N4RFFVRkRMRWRCUVVjc1EwRkJReXhOUVVGTkxFTkJRVU1zU1VGQlNTeEZRVUZGTEVsQlFWY3NRMEZCUXl4RFFVRkRMRWxCUVVrc1EwRkJReXhMUVVGTExFbEJRVWtzUlVGQlJUdFpRVU5xUkN4SlFVRkpMRWRCUVVjc1JVRkJSU3hEUVVGRE8yZENRVU5TTEUxQlFVMHNSMEZCUnl4SFFVRkhMRTFCUVUwc1NVRkJTU3hEUVVGRExFZEJRVWNzUTBGQlF5eE5RVUZOTEVWQlFVVXNRMEZCUXp0blFrRkRjRU1zU1VGQlNTeERRVUZETEUxQlFVMHNRMEZCUXl4SFFVRkhMRU5CUVVNc2FVTkJRV2xETEVkQlFVY3NSVUZCUlN4RFFVRkRMRU5CUVVNN1dVRkRNVVFzUTBGQlF6dFJRVU5JTEVOQlFVTXNRMEZCUXl4RFFVRkRPMGxCUTB3c1EwRkJRenREUVVOR0lpd2ljMjkxY21ObGMwTnZiblJsYm5RaU9sc2lhVzF3YjNKMElIdGNiaUFnU1U1bGMzUkJjSEJzYVdOaGRHbHZiaXhjYmlBZ1RHOW5aMlZ5TEZ4dUlDQk9aWE4wU1c1MFpYSmpaWEIwYjNJc1hHNGdJRkJwY0dWVWNtRnVjMlp2Y20wc1hHNTlJR1p5YjIwZ1hDSkFibVZ6ZEdwekwyTnZiVzF2Ymx3aU8xeHVhVzF3YjNKMElIc2dSR1ZqWVdaRmVHTmxjSFJwYjI1R2FXeDBaWElnZlNCbWNtOXRJRndpTGk5bGVHTmxjSFJwYjI1elhDSTdYRzVwYlhCdmNuUWdleUJUZDJGbloyVnlRblZwYkdSbGNpQjlJR1p5YjIwZ1hDSXVMMjl3Wlc1aGNHbGNJanRjYm1sdGNHOXlkQ0I3SUVOdmNuTlBjSFJwYjI1eklIMGdabkp2YlNCY0lrQnVaWE4wYW5NdlkyOXRiVzl1TDJsdWRHVnlabUZqWlhNdlpYaDBaWEp1WVd3dlkyOXljeTF2Y0hScGIyNXpMbWx1ZEdWeVptRmpaVndpTzF4dWFXMXdiM0owSUhzZ1EyOXljMFZ5Y205eUlIMGdabkp2YlNCY0lpNHZaWEp5YjNKelhDSTdYRzVjYmk4cUtseHVJQ29nUUdSbGMyTnlhWEIwYVc5dVhHNGdLaUJFWldacGJtVnpJR0ZzYkNCamRYTjBiMjFwZW1GaWJHVWdjR0Z5WVcxbGRHVnljeUJtYjNJZ1UzZGhaMmRsY2lCelpYUjFjQzVjYmlBcVhHNGdLaUJBYzNWdGJXRnllVnh1SUNvZ1ZHaHBjeUJwYm5SbGNtWmhZMlVnWVd4c2IzZHpJR1JsZG1Wc2IzQmxjbk1nZEc4Z1kzVnpkRzl0YVhwbElHaHZkeUJUZDJGbloyVnlJRlZKSUdseklHTnZibVpwWjNWeVpXUmNiaUFxSUhkcGRHaHBiaUIwYUdVZ1RtVnpkRXBUSUdGd2NHeHBZMkYwYVc5dUxpQkpkQ0JwYm1Oc2RXUmxjeUJ3WVhKaGJXVjBaWEp6SUdadmNpQjBhWFJzWlhNc0lIQmhkR2h6TEZ4dUlDb2dZMjlzYjNJZ2MyTm9aVzFsY3l3Z1lXNWtJR0Z6YzJWMElIQmhkR2h6SUhSdklIUmhhV3h2Y2lCMGFHVWdRVkJKSUdSdlkzVnRaVzUwWVhScGIyNGdaWGh3WlhKcFpXNWpaUzVjYmlBcVhHNGdLaUJBY0dGeVlXMGdlM04wY21sdVozMGdkR2wwYkdVZ0xTQlVhWFJzWlNCa2FYTndiR0Y1WldRZ2FXNGdVM2RoWjJkbGNpQlZTUzVjYmlBcUlFQndZWEpoYlNCN2MzUnlhVzVuZlNCa1pYTmpjbWx3ZEdsdmJpQXRJRVJsYzJOeWFYQjBhVzl1SUhOb2IzZHVJR0psYkc5M0lIUm9aU0IwYVhSc1pTNWNiaUFxSUVCd1lYSmhiU0I3YzNSeWFXNW5mU0IyWlhKemFXOXVJQzBnUVZCSklIWmxjbk5wYjI0Z1pHbHpjR3hoZVdWa0lHbHVJSFJvWlNCa2IyTjFiV1Z1ZEdGMGFXOXVMbHh1SUNvZ1FIQmhjbUZ0SUh0emRISnBibWQ5SUZ0d1lYUm9YU0F0SUU5d2RHbHZibUZzSUhCaGRHZ2dkMmhsY21VZ1UzZGhaMmRsY2lCM2FXeHNJR0psSUdGMllXbHNZV0pzWlM1Y2JpQXFJRUJ3WVhKaGJTQjdZbTl2YkdWaGJuMGdXM0JsY25OcGMzUkJkWFJvYjNKcGVtRjBhVzl1WFNBdElGZG9aWFJvWlhJZ1lYVjBhRzl5YVhwaGRHbHZiaUIwYjJ0bGJuTWdjR1Z5YzJsemRDQmhZM0p2YzNNZ2NtVnNiMkZrY3k1Y2JpQXFJRUJ3WVhKaGJTQjdjM1J5YVc1bmZTQmJZWE56WlhSelVHRjBhRjBnTFNCUVlYUm9JSFJ2SUdOMWMzUnZiU0JoYzNObGRITWdabTl5SUZOM1lXZG5aWElnVlVrdVhHNGdLaUJBY0dGeVlXMGdlM04wY21sdVozMGdXM1J2Y0dKaGNrSm5RMjlzYjNKZElDMGdRM1Z6ZEc5dElHSmhZMnRuY205MWJtUWdZMjlzYjNJZ1ptOXlJSFJvWlNCVGQyRm5aMlZ5SUhSdmNDQmlZWEl1WEc0Z0tpQkFjR0Z5WVcwZ2UzTjBjbWx1WjMwZ1czUnZjR0poY2tsamIyNVFZWFJvWFNBdElGQmhkR2dnZEc4Z1lTQmpkWE4wYjIwZ2FXTnZiaUJrYVhOd2JHRjVaV1FnYVc0Z2RHaGxJSFJ2Y0NCaVlYSXVYRzRnS2lCQWNHRnlZVzBnZTNOMGNtbHVaMzBnVzJaaGRtbGpiMjVRWVhSb1hTQXRJRkJoZEdnZ2RHOGdZU0JqZFhOMGIyMGdabUYyYVdOdmJpNWNiaUFxTDF4dVpYaHdiM0owSUdsdWRHVnlabUZqWlNCVGQyRm5aMlZ5VTJWMGRYQlBjSFJwYjI1eklIdGNiaUFnZEdsMGJHVTZJSE4wY21sdVp6dGNiaUFnWkdWelkzSnBjSFJwYjI0NklITjBjbWx1Wnp0Y2JpQWdkbVZ5YzJsdmJqb2djM1J5YVc1bk8xeHVJQ0J3WVhSb1B6b2djM1J5YVc1bk8xeHVJQ0J3WlhKemFYTjBRWFYwYUc5eWFYcGhkR2x2Ymo4NklHSnZiMnhsWVc0N1hHNGdJR0Z6YzJWMGMxQmhkR2cvT2lCemRISnBibWM3WEc0Z0lIUnZjR0poY2tKblEyOXNiM0kvT2lCemRISnBibWM3WEc0Z0lIUnZjR0poY2tsamIyNVFZWFJvUHpvZ2MzUnlhVzVuTzF4dUlDQm1ZWFpwWTI5dVVHRjBhRDg2SUhOMGNtbHVaenRjYmlBZ0x5b3FYRzRnSUNBcUlGQmhkR2dnZEc4Z1pYaHdiM05sSUhSb1pTQlBjR1Z1UVZCSklITndaV05wWm1sallYUnBiMjRnYVc0Z1NsTlBUaUJtYjNKdFlYUXVYRzRnSUNBcUlFVjRZVzF3YkdVNklDOWhjR2t2YjNCbGJtRndhUzVxYzI5dVhHNGdJQ0FxTDF4dUlDQnZjR1Z1UVhCcFNuTnZibEJoZEdnL09pQnpkSEpwYm1jN1hHNGdJQzhxS2x4dUlDQWdLaUJRWVhSb0lIUnZJR1Y0Y0c5elpTQjBhR1VnVDNCbGJrRlFTU0J6Y0dWamFXWnBZMkYwYVc5dUlHbHVJRmxCVFV3Z1ptOXliV0YwTGx4dUlDQWdLaUJTWlhGMWFYSmxjeUFuZVdGdGJDY2djR0ZqYTJGblpTQmhjeUJ3WldWeUlHUmxjR1Z1WkdWdVkza3VYRzRnSUNBcUlFVjRZVzF3YkdVNklDOWhjR2t2YjNCbGJtRndhUzU1WVcxc1hHNGdJQ0FxTDF4dUlDQnZjR1Z1UVhCcFdXRnRiRkJoZEdnL09pQnpkSEpwYm1jN1hHNTlYRzVjYmk4cUtseHVJQ29nUUdSbGMyTnlhWEIwYVc5dVhHNGdLaUJCSUdac2RXVnVkQ3dnYzNSaGRHbGpJR0p2YjNSemRISmhjQ0JqYkdGemN5Qm1iM0lnYVc1cGRHbGhiR2w2YVc1bklHRnVaQ0JqYjI1bWFXZDFjbWx1WnlCaElFNWxjM1JLVXlCaGNIQnNhV05oZEdsdmJpNWNiaUFxWEc0Z0tpQkFjM1Z0YldGeWVWeHVJQ29nVkdobElHQk9aWE4wUW05dmRITjBjbUZ3WlhKZ0lHTnNZWE56SUhCeWIzWnBaR1Z6SUdFZ1kyaGhhVzVoWW14bElFRlFTU0JtYjNJZ1kyOXVabWxuZFhKcGJtZGNiaUFxSUdFZ1RtVnpkRXBUSUdGd2NHeHBZMkYwYVc5dUlHbHVjM1JoYm1ObExpQkpkQ0JwYm1Oc2RXUmxjeUJpZFdsc2RDMXBiaUJ0WlhSb2IyUnpJR1p2Y2lCbGJtRmliR2x1WjF4dUlDb2dRMDlTVXl3Z1NHVnNiV1YwSUhObFkzVnlhWFI1TENCVGQyRm5aMlZ5SUdSdlkzVnRaVzUwWVhScGIyNHNJR2RzYjJKaGJDQndhWEJsY3l3Z1ptbHNkR1Z5Y3l4Y2JpQXFJR2x1ZEdWeVkyVndkRzl5Y3l3Z1lXNWtJSE4wWVhKMGFXNW5JSFJvWlNCelpYSjJaWEl1WEc0Z0tseHVJQ29nVkdocGN5QmpiR0Z6Y3lCd2NtOXRiM1JsY3lCamIyNXphWE4wWlc1amVTQmhibVFnY21Wa2RXTmxjeUJ5WlhCbGRHbDBhWFpsSUhObGRIVndJR052WkdWY2JpQXFJR0ZqY205emN5QnRkV3gwYVhCc1pTQk9aWE4wU2xNZ2NISnZhbVZqZEhNdVhHNGdLbHh1SUNvZ1FHVjRZVzF3YkdWY2JpQXFJR0JnWUhSelhHNGdLaUJwYlhCdmNuUWdleUJPWlhOMFJtRmpkRzl5ZVNCOUlHWnliMjBnWENKQWJtVnpkR3B6TDJOdmNtVmNJanRjYmlBcUlHbHRjRzl5ZENCN0lFRndjRTF2WkhWc1pTQjlJR1p5YjIwZ1hDSXVMMkZ3Y0M1dGIyUjFiR1ZjSWp0Y2JpQXFJR2x0Y0c5eWRDQjdJRTE1VEc5bloyVnlJSDBnWm5KdmJTQmNJaTR2VFhsTWIyZG5aWEpjSWp0Y2JpQXFJR2x0Y0c5eWRDQjdJRTVsYzNSQ2IyOTBjM1J5WVhCbGNpQjlJR1p5YjIwZ1hDSkFaR1ZqWVdZdGRITXZabTl5TFc1bGMzUmNJanRjYmlBcVhHNGdLaUJoYzNsdVl5Qm1kVzVqZEdsdmJpQmliMjkwYzNSeVlYQW9LU0I3WEc0Z0tpQWdJR052Ym5OMElHRndjQ0E5SUdGM1lXbDBJRTVsYzNSR1lXTjBiM0o1TG1OeVpXRjBaU2hCY0hCTmIyUjFiR1VwTzF4dUlDcGNiaUFxSUNBZ1lYZGhhWFFnVG1WemRFSnZiM1J6ZEhKaGNHVnlYRzRnS2lBZ0lDQWdMbWx1YVhScFlXeHBlbVVvWVhCd0tWeHVJQ29nSUNBZ0lDNWxibUZpYkdWTWIyZG5aWElvYm1WM0lFMTVURzluWjJWeUtDa3BYRzRnS2lBZ0lDQWdMbVZ1WVdKc1pVTnZjbk1vVzF3aWFIUjBjRG92TDJ4dlkyRnNhRzl6ZERvME1qQXdYQ0pkS1Z4dUlDb2dJQ0FnSUM1MWMyVklaV3h0WlhRb0tWeHVJQ29nSUNBZ0lDNXpaWFIxY0ZOM1lXZG5aWElvZTF4dUlDb2dJQ0FnSUNBZ2RHbDBiR1U2SUZ3aVQzQmxia0ZRU1NCaWVTQlVjbUZrWlUxaGNtdmloS0pjSWl4Y2JpQXFJQ0FnSUNBZ0lHUmxjMk55YVhCMGFXOXVPaUJjSWxSeVlXUmxUV0Z5YStLRW9pQkJVRWtnWkc5amRXMWxiblJoZEdsdmJsd2lMRnh1SUNvZ0lDQWdJQ0FnZG1WeWMybHZiam9nWENJeExqQXVNRndpTEZ4dUlDb2dJQ0FnSUNBZ2NHRjBhRG9nWENKaGNHbGNJaXhjYmlBcUlDQWdJQ0FnSUhCbGNuTnBjM1JCZFhSb2IzSnBlbUYwYVc5dU9pQjBjblZsTEZ4dUlDb2dJQ0FnSUNBZ2RHOXdZbUZ5UW1kRGIyeHZjam9nWENJak1rTXpSVFV3WENJc1hHNGdLaUFnSUNBZ0lDQjBiM0JpWVhKSlkyOXVVR0YwYURvZ1hDSXZZWE56WlhSekwyeHZaMjh1YzNablhDSXNYRzRnS2lBZ0lDQWdJQ0JtWVhacFkyOXVVR0YwYURvZ1hDSXZZWE56WlhSekwyWmhkbWxqYjI0dWFXTnZYQ0pjYmlBcUlDQWdJQ0I5S1Z4dUlDb2dJQ0FnSUM1MWMyVkhiRzlpWVd4R2FXeDBaWEp6S0NsY2JpQXFJQ0FnSUNBdWRYTmxSMnh2WW1Gc1VHbHdaWE1vTGk0dUtWeHVJQ29nSUNBZ0lDNTFjMlZIYkc5aVlXeEpiblJsY21ObGNIUnZjbk1vTGk0dUtWeHVJQ29nSUNBZ0lDNXpkR0Z5ZENnek1EQXdLVHRjYmlBcUlIMWNiaUFxWEc0Z0tpQmliMjkwYzNSeVlYQW9LVHRjYmlBcUlHQmdZRnh1SUNvZ1FHTnNZWE56WEc0Z0tpOWNibVY0Y0c5eWRDQmpiR0Z6Y3lCT1pYTjBRbTl2ZEhOMGNtRndaWElnZTF4dUlDQndjbWwyWVhSbElITjBZWFJwWXlCaGNIQTZJRWxPWlhOMFFYQndiR2xqWVhScGIyNDdYRzRnSUhCeWFYWmhkR1VnYzNSaGRHbGpJRjlzYjJkblpYSTZJRXh2WjJkbGNqdGNibHh1SUNBdktpcGNiaUFnSUNvZ1FHUmxjMk55YVhCMGFXOXVYRzRnSUNBcUlGSmxkSFZ5Ym5NZ2RHaGxJR04xY25KbGJuUWdiRzluWjJWeUlHbHVjM1JoYm1ObExDQmpjbVZoZEdsdVp5QmhJR1JsWm1GMWJIUWdiMjVsSUdsbUlHNXZkQ0J6WlhRdVhHNGdJQ0FxWEc0Z0lDQXFJRUJ6ZFcxdFlYSjVYRzRnSUNBcUlFVnVjM1Z5WlhNZ2RHaGhkQ0JoSUhaaGJHbGtJR0JNYjJkblpYSmdJR2x1YzNSaGJtTmxJR2x6SUdGc2QyRjVjeUJoZG1GcGJHRmliR1ZjYmlBZ0lDb2dabTl5SUd4dloyZHBibWNnWW05dmRITjBjbUZ3TFhKbGJHRjBaV1FnYldWemMyRm5aWE11WEc0Z0lDQXFYRzRnSUNBcUlFQnlaWFIxY200Z2UweHZaMmRsY24wZ1ZHaGxJR0ZqZEdsMlpTQnNiMmRuWlhJZ2FXNXpkR0Z1WTJVdVhHNGdJQ0FxTDF4dUlDQndjbWwyWVhSbElITjBZWFJwWXlCblpYUWdiRzluWjJWeUtDazZJRXh2WjJkbGNpQjdYRzRnSUNBZ2FXWWdLQ0YwYUdsekxsOXNiMmRuWlhJcElIdGNiaUFnSUNBZ0lDOHZJR1poYkd4aVlXTnJYRzRnSUNBZ0lDQjBhR2x6TGw5c2IyZG5aWElnUFNCdVpYY2dURzluWjJWeUtGd2lUbVZ6ZEVKdmIzUnpkSEpoY0Z3aUtUdGNiaUFnSUNCOVhHNGdJQ0FnY21WMGRYSnVJSFJvYVhNdVgyeHZaMmRsY2p0Y2JpQWdmVnh1WEc0Z0lDOHFLbHh1SUNBZ0tpQkFaR1Z6WTNKcGNIUnBiMjVjYmlBZ0lDb2dTVzVwZEdsaGJHbDZaWE1nZEdobElHSnZiM1J6ZEhKaGNIQmxjaUIzYVhSb0lHRWdaMmwyWlc0Z1RtVnpkRXBUSUdGd2NHeHBZMkYwYVc5dUxseHVJQ0FnS2x4dUlDQWdLaUJBYzNWdGJXRnllVnh1SUNBZ0tpQkNhVzVrY3lCMGFHVWdjSEp2ZG1sa1pXUWdUbVZ6ZEVwVElHRndjQ0JwYm5OMFlXNWpaU0IwYnlCMGFHVWdZbTl2ZEhOMGNtRndjR1Z5TENCbGJtRmliR2x1WjF4dUlDQWdLaUJqYUdGcGJtVmtJR052Ym1acFozVnlZWFJwYjI0Z2JXVjBhRzlrY3k1Y2JpQWdJQ3BjYmlBZ0lDb2dRSEJoY21GdElIdEpUbVZ6ZEVGd2NHeHBZMkYwYVc5dWZTQmhjSEFnTFNCVWFHVWdUbVZ6ZEVwVElHRndjR3hwWTJGMGFXOXVJR2x1YzNSaGJtTmxJSFJ2SUdsdWFYUnBZV3hwZW1VdVhHNGdJQ0FxSUVCeVpYUjFjbTRnZTA1bGMzUkNiMjkwYzNSeVlYQmxjbjBnVW1WMGRYSnVjeUIwYUdVZ1kyeGhjM01nWm05eUlHTm9ZV2x1YVc1bklHTnZibVpwWjNWeVlYUnBiMjRnYldWMGFHOWtjeTVjYmlBZ0lDb3ZYRzRnSUhOMFlYUnBZeUJwYm1sMGFXRnNhWHBsS0dGd2NEb2dTVTVsYzNSQmNIQnNhV05oZEdsdmJpa2dlMXh1SUNBZ0lIUm9hWE11WVhCd0lEMGdZWEJ3TzF4dUlDQWdJSEpsZEhWeWJpQjBhR2x6TzF4dUlDQjlYRzVjYmlBZ0x5b3FYRzRnSUNBcUlFQmtaWE5qY21sd2RHbHZibHh1SUNBZ0tpQkZibUZpYkdWeklHOXlJSEpsY0d4aFkyVnpJSFJvWlNCbmJHOWlZV3dnYkc5bloyVnlJR1p2Y2lCMGFHVWdUbVZ6ZEVwVElHRndjR3hwWTJGMGFXOXVMbHh1SUNBZ0tseHVJQ0FnS2lCQWMzVnRiV0Z5ZVZ4dUlDQWdLaUJKWmlCaElHTjFjM1J2YlNCc2IyZG5aWElnYVhNZ2NISnZkbWxrWldRc0lHbDBJSEpsY0d4aFkyVnpJSFJvWlNCa1pXWmhkV3gwSUd4dloyZGxjaTRnVDNSb1pYSjNhWE5sTEZ4dUlDQWdLaUJoSUc1bGR5QnNiMmRuWlhJZ2JtRnRaV1FnWUZ3aVRtVnpkRUp2YjNSemRISmhjRndpWUNCcGN5QjFjMlZrTGlCVWFHbHpJR3h2WjJkbGNpQnBjeUJoYkhOdklISmxaMmx6ZEdWeVpXUmNiaUFnSUNvZ2QybDBhQ0IwYUdVZ1RtVnpkRXBUSUdGd2NHeHBZMkYwYVc5dUxseHVJQ0FnS2x4dUlDQWdLaUJBY0dGeVlXMGdlMHh2WjJkbGNuMGdXMk4xYzNSdmJVeHZaMmRsY2wwZ0xTQlBjSFJwYjI1aGJDQmpkWE4wYjIwZ2JHOW5aMlZ5SUdsdWMzUmhibU5sTGx4dUlDQWdLaUJBY21WMGRYSnVJSHRPWlhOMFFtOXZkSE4wY21Gd1pYSjlJRkpsZEhWeWJuTWdkR2hsSUdOc1lYTnpJR1p2Y2lCamFHRnBibWx1Wnk1Y2JpQWdJQ292WEc0Z0lITjBZWFJwWXlCbGJtRmliR1ZNYjJkblpYSW9ZM1Z6ZEc5dFRHOW5aMlZ5UHpvZ1RHOW5aMlZ5S1NCN1hHNGdJQ0FnZEdocGN5NWZiRzluWjJWeUlEMGdZM1Z6ZEc5dFRHOW5aMlZ5SUh4OElHNWxkeUJNYjJkblpYSW9YQ0pPWlhOMFFtOXZkSE4wY21Gd1hDSXBPMXh1SUNBZ0lIUm9hWE11WVhCd0xuVnpaVXh2WjJkbGNpaDBhR2x6TGw5c2IyZG5aWElwTzF4dUlDQWdJSEpsZEhWeWJpQjBhR2x6TzF4dUlDQjlYRzVjYmlBZ0x5b3FYRzRnSUNBcUlFQmtaWE5qY21sd2RHbHZibHh1SUNBZ0tpQkZibUZpYkdWeklFTnliM056TFU5eWFXZHBiaUJTWlhOdmRYSmpaU0JUYUdGeWFXNW5JQ2hEVDFKVEtTQm1iM0lnZEdobElHRndjR3hwWTJGMGFXOXVMbHh1SUNBZ0tseHVJQ0FnS2lCQWMzVnRiV0Z5ZVZ4dUlDQWdLaUJCYkd4dmQzTWdaR1ZtYVc1cGJtY2daV2wwYUdWeUlHRWdkMmxzWkdOaGNtUWdiM0pwWjJsdUlDaGdYQ0lxWENKZ0tTQnZjaUJoSUd4cGMzUWdiMllnWVd4c2IzZGxaQ0J2Y21sbmFXNXpMbHh1SUNBZ0tpQkJkWFJ2YldGMGFXTmhiR3g1SUdGalkyVndkSE1nYkc5allXd2daR1YyWld4dmNHMWxiblFnY21WeGRXVnpkSE1nWVc1a0lIUm9iM05sSUhkcGRHaHZkWFFnYjNKcFoybHVJR2hsWVdSbGNuTXVYRzRnSUNBcUlGUm9jbTkzY3lCaElHQkRiM0p6UlhKeWIzSmdJR1p2Y2lCMWJtRjFkR2h2Y21sNlpXUWdiM0pwWjJsdWN5NWNiaUFnSUNwY2JpQWdJQ29nUUhCaGNtRnRJSHNuS2ljZ2ZDQnpkSEpwYm1kYlhYMGdXMjl5YVdkcGJuTTlXMTFkSUMwZ1RHbHpkQ0J2WmlCaGJHeHZkMlZrSUc5eWFXZHBibk1nYjNJZ1lGd2lLbHdpWUNCMGJ5QmhiR3h2ZHlCaGJHd3VYRzRnSUNBcUlFQndZWEpoYlNCN2MzUnlhVzVuVzExOUlGdGhiR3h2ZDAxbGRHaHZaSE05V3lkSFJWUW5MQ0FuVUU5VFZDY3NJQ2RRVlZRbkxDQW5SRVZNUlZSRkoxMWRJQzBnUVd4c2IzZGxaQ0JJVkZSUUlHMWxkR2h2WkhNdVhHNGdJQ0FxSUVCeVpYUjFjbTRnZTA1bGMzUkNiMjkwYzNSeVlYQmxjbjBnVW1WMGRYSnVjeUIwYUdVZ1kyeGhjM01nWm05eUlHTm9ZV2x1YVc1bklHTnZibVpwWjNWeVlYUnBiMjR1WEc0Z0lDQXFYRzRnSUNBcUwxeHVJQ0J6ZEdGMGFXTWdaVzVoWW14bFEyOXljeWhjYmlBZ0lDQnZjbWxuYVc1ek9pQmNJaXBjSWlCOElITjBjbWx1WjF0ZElEMGdXMTBzWEc0Z0lDQWdZV3hzYjNkTlpYUm9iMlJ6T2lCemRISnBibWRiWFNBOUlGdGNJa2RGVkZ3aUxDQmNJbEJQVTFSY0lpd2dYQ0pRVlZSY0lpd2dYQ0pFUlV4RlZFVmNJbDFjYmlBZ0tTQjdYRzRnSUNBZ1kyOXVjM1FnWVd4c2IzZGxaRTl5YVdkcGJuTWdQVnh1SUNBZ0lDQWdiM0pwWjJsdWN5QTlQVDBnWENJcVhDSWdQeUJjSWlwY0lpQTZJRzl5YVdkcGJuTXViV0Z3S0NodktTQTlQaUJ2TG5SeWFXMG9LUzUwYjB4dmQyVnlRMkZ6WlNncEtUdGNibHh1SUNBZ0lHTnZibk4wSUdOdmNuTlBjSFJwYjI1ek9pQkRiM0p6VDNCMGFXOXVjeUE5SUh0Y2JpQWdJQ0FnSUc5eWFXZHBiam9nS0c5eWFXZHBiaXdnWTJGc2JHSmhZMnNwSUQwK0lIdGNiaUFnSUNBZ0lDQWdMeThnUVd4c2IzY2djbVZ4ZFdWemRDQjNhWFJvYjNWMElHOXlhV2RwYmk0dUxseHVJQ0FnSUNBZ0lDQnBaaUFvSVc5eWFXZHBiaWtnY21WMGRYSnVJR05oYkd4aVlXTnJLRzUxYkd3c0lIUnlkV1VwTzF4dVhHNGdJQ0FnSUNBZ0lHbG1JQ2hjYmlBZ0lDQWdJQ0FnSUNCaGJHeHZkMlZrVDNKcFoybHVjeUE5UFQwZ1hDSXFYQ0lnZkh4Y2JpQWdJQ0FnSUNBZ0lDQW9RWEp5WVhrdWFYTkJjbkpoZVNoaGJHeHZkMlZrVDNKcFoybHVjeWtnSmlaY2JpQWdJQ0FnSUNBZ0lDQWdJR0ZzYkc5M1pXUlBjbWxuYVc1ekxtbHVZMngxWkdWektHOXlhV2RwYmk1MGIweHZkMlZ5UTJGelpTZ3BLU2xjYmlBZ0lDQWdJQ0FnS1NCN1hHNGdJQ0FnSUNBZ0lDQWdjbVYwZFhKdUlHTmhiR3hpWVdOcktHNTFiR3dzSUhSeWRXVXBPMXh1SUNBZ0lDQWdJQ0I5WEc1Y2JpQWdJQ0FnSUNBZ1kyRnNiR0poWTJzb2JtVjNJRU52Y25ORmNuSnZjaWhnVDNKcFoybHVJQ1I3YjNKcFoybHVmU0J1YjNRZ1lXeHNiM2RsWkdBcEtUdGNiaUFnSUNBZ0lIMHNYRzRnSUNBZ0lDQmpjbVZrWlc1MGFXRnNjem9nZEhKMVpTeGNiaUFnSUNBZ0lHMWxkR2h2WkhNNklHRnNiRzkzVFdWMGFHOWtjeTVxYjJsdUtGd2lMRndpS1N4Y2JpQWdJQ0I5TzF4dVhHNGdJQ0FnZEdocGN5NWhjSEF1Wlc1aFlteGxRMjl5Y3loamIzSnpUM0IwYVc5dWN5azdYRzRnSUNBZ2NtVjBkWEp1SUhSb2FYTTdYRzRnSUgxY2JseHVJQ0F2S2lwY2JpQWdJQ29nUUdSbGMyTnlhWEIwYVc5dVhHNGdJQ0FxSUVGd2NHeHBaWE1nZEdobElFaGxiRzFsZENCdGFXUmtiR1YzWVhKbElHWnZjaUJsYm1oaGJtTmxaQ0J6WldOMWNtbDBlUzVjYmlBZ0lDcGNiaUFnSUNvZ1FITjFiVzFoY25sY2JpQWdJQ29nUkhsdVlXMXBZMkZzYkhrZ2JHOWhaSE1nZEdobElHQm9aV3h0WlhSZ0lIQmhZMnRoWjJVZ2FXWWdZWFpoYVd4aFlteGxJR0Z1WkNCeVpXZHBjM1JsY25NZ2FYUmNiaUFnSUNvZ1lYTWdiV2xrWkd4bGQyRnlaU0IwYnlCcGJYQnliM1psSUVoVVZGQWdhR1ZoWkdWeUlITmxZM1Z5YVhSNUxpQkpaaUJ1YjNRZ2FXNXpkR0ZzYkdWa0xDQnNiMmR6SUdFZ2QyRnlibWx1WjF4dUlDQWdLaUJoYm1RZ1kyOXVkR2x1ZFdWeklHVjRaV04xZEdsdmJpQjNhWFJvYjNWMElIUm9jbTkzYVc1bklHVnljbTl5Y3k1Y2JpQWdJQ3BjYmlBZ0lDb2dRSEJoY21GdElIdFNaV052Y21ROGMzUnlhVzVuTENCaGJuaytmU0JiYjNCMGFXOXVjMTBnTFNCUGNIUnBiMjVoYkNCamIyNW1hV2QxY21GMGFXOXVJSEJoYzNObFpDQjBieUJJWld4dFpYUXVYRzRnSUNBcUlFQnlaWFIxY200Z2UwNWxjM1JDYjI5MGMzUnlZWEJsY24wZ1VtVjBkWEp1Y3lCMGFHVWdZMnhoYzNNZ1ptOXlJR05vWVdsdWFXNW5JR052Ym1acFozVnlZWFJwYjI0dVhHNGdJQ0FxTDF4dUlDQnpkR0YwYVdNZ2RYTmxTR1ZzYldWMEtHOXdkR2x2Ym5NL09pQlNaV052Y21ROGMzUnlhVzVuTENCaGJuaytLU0I3WEc0Z0lDQWdkSEo1SUh0Y2JpQWdJQ0FnSUM4dklHVnpiR2x1ZEMxa2FYTmhZbXhsTFc1bGVIUXRiR2x1WlNCQWRIbHdaWE5qY21sd2RDMWxjMnhwYm5RdmJtOHRjbVZ4ZFdseVpTMXBiWEJ2Y25SelhHNGdJQ0FnSUNCamIyNXpkQ0JvWld4dFpYUWdQU0J5WlhGMWFYSmxLRndpYUdWc2JXVjBYQ0lwT3lBdkx5QkVlVzVoYldsaklHbHRjRzl5ZENCMGJ5QmhkbTlwWkNCb1lYSmtJR1JsY0dWdVpHVnVZM2xjYmlBZ0lDQWdJSFJvYVhNdVlYQndMblZ6WlNob1pXeHRaWFFvYjNCMGFXOXVjeWtwTzF4dUlDQWdJQ0FnZEdocGN5NXNiMmRuWlhJdWJHOW5LRndpU0dWc2JXVjBJRzFwWkdSc1pYZGhjbVVnWlc1aFlteGxaQ0J6ZFdOalpYTnpablZzYkhrdVhDSXBPMXh1SUNBZ0lIMGdZMkYwWTJnZ2UxeHVJQ0FnSUNBZ2RHaHBjeTVzYjJkblpYSXVkMkZ5YmloY0lraGxiRzFsZENCdWIzUWdhVzV6ZEdGc2JHVmtMaUJUYTJsd2NHbHVaeUJ0YVdSa2JHVjNZWEpsTGx3aUtUdGNiaUFnSUNCOVhHNWNiaUFnSUNCeVpYUjFjbTRnZEdocGN6dGNiaUFnZlZ4dVhHNGdJQzhxS2x4dUlDQWdLaUJBWkdWelkzSnBjSFJwYjI1Y2JpQWdJQ29nUTI5dVptbG5kWEpsY3lCaGJtUWdhVzVwZEdsaGJHbDZaWE1nVTNkaFoyZGxjaUJWU1NCbWIzSWdRVkJKSUdSdlkzVnRaVzUwWVhScGIyNHVYRzRnSUNBcVhHNGdJQ0FxSUVCemRXMXRZWEo1WEc0Z0lDQXFJRlZ6WlhNZ2RHaGxJR0JUZDJGbloyVnlRblZwYkdSbGNtQWdkWFJwYkdsMGVTQjBieUJqYjI1bWFXZDFjbVVnUVZCSklHUnZZM1Z0Wlc1MFlYUnBiMjVjYmlBZ0lDb2dkMmwwYUNCa1pYUmhhV3hsWkNCamRYTjBiMjFwZW1GMGFXOXVJR1p2Y2lCMGFYUnNaU3dnZG1WeWMybHZiaXdnY0dGMGFITXNJR0Z1WkNCamIyeHZjbk11WEc0Z0lDQXFJRk4zWVdkblpYSWdhWE1nWVhWMGIyMWhkR2xqWVd4c2VTQmxlSEJ2YzJWa0lHRjBJSFJvWlNCamIyNW1hV2QxY21Wa0lIQmhkR2d1WEc0Z0lDQXFYRzRnSUNBcUlFQndZWEpoYlNCN1UzZGhaMmRsY2xObGRIVndUM0IwYVc5dWMzMGdiM0IwYVc5dWN5QXRJRk4zWVdkblpYSWdZMjl1Wm1sbmRYSmhkR2x2YmlCdmNIUnBiMjV6TGx4dUlDQWdLaUJBY21WMGRYSnVJSHRPWlhOMFFtOXZkSE4wY21Gd1pYSjlJRkpsZEhWeWJuTWdkR2hsSUdOc1lYTnpJR1p2Y2lCamFHRnBibWx1WnlCamIyNW1hV2QxY21GMGFXOXVMbHh1SUNBZ0tpOWNiaUFnYzNSaGRHbGpJSE5sZEhWd1UzZGhaMmRsY2lodmNIUnBiMjV6T2lCVGQyRm5aMlZ5VTJWMGRYQlBjSFJwYjI1ektTQjdYRzRnSUNBZ1kyOXVjM1FnYzNkaFoyZGxjaUE5SUc1bGR5QlRkMkZuWjJWeVFuVnBiR1JsY2loMGFHbHpMbUZ3Y0N3Z2UxeHVJQ0FnSUNBZ2RHbDBiR1U2SUc5d2RHbHZibk11ZEdsMGJHVXNYRzRnSUNBZ0lDQmtaWE5qY21sd2RHbHZiam9nYjNCMGFXOXVjeTVrWlhOamNtbHdkR2x2Yml4Y2JpQWdJQ0FnSUhabGNuTnBiMjQ2SUc5d2RHbHZibk11ZG1WeWMybHZiaXhjYmlBZ0lDQWdJSEJoZEdnNklHOXdkR2x2Ym5NdWNHRjBhQ0I4ZkNCY0ltRndhVndpTEZ4dUlDQWdJQ0FnY0dWeWMybHpkRUYxZEdodmNtbDZZWFJwYjI0NklHOXdkR2x2Ym5NdWNHVnljMmx6ZEVGMWRHaHZjbWw2WVhScGIyNGdQejhnZEhKMVpTeGNiaUFnSUNBZ0lHRnpjMlYwYzFCaGRHZzZJRzl3ZEdsdmJuTXVZWE56WlhSelVHRjBhQ3hjYmlBZ0lDQWdJR1poZG1samIyNUdhV3hsVUdGMGFEb2diM0IwYVc5dWN5NW1ZWFpwWTI5dVVHRjBhQ3hjYmlBZ0lDQWdJSFJ2Y0dKaGNrbGpiMjVHYVd4bFVHRjBhRG9nYjNCMGFXOXVjeTUwYjNCaVlYSkpZMjl1VUdGMGFDeGNiaUFnSUNBZ0lIUnZjR0poY2tKblEyOXNiM0k2SUc5d2RHbHZibk11ZEc5d1ltRnlRbWREYjJ4dmNpeGNiaUFnSUNBZ0lHOXdaVzVCY0dsS2MyOXVVR0YwYURvZ2IzQjBhVzl1Y3k1dmNHVnVRWEJwU25OdmJsQmhkR2dzWEc0Z0lDQWdJQ0J2Y0dWdVFYQnBXV0Z0YkZCaGRHZzZJRzl3ZEdsdmJuTXViM0JsYmtGd2FWbGhiV3hRWVhSb0xGeHVJQ0FnSUgwcE8xeHVJQ0FnSUhOM1lXZG5aWEl1YzJWMGRYQlRkMkZuWjJWeUtDazdYRzRnSUNBZ2NtVjBkWEp1SUhSb2FYTTdYRzRnSUgxY2JseHVJQ0F2S2lwY2JpQWdJQ29nUUdSbGMyTnlhWEIwYVc5dVhHNGdJQ0FxSUZKbFoybHpkR1Z5Y3lCdmJtVWdiM0lnYlc5eVpTQm5iRzlpWVd3Z2RtRnNhV1JoZEdsdmJpQndhWEJsY3k1Y2JpQWdJQ3BjYmlBZ0lDb2dRSE4xYlcxaGNubGNiaUFnSUNvZ1JXNWhZbXhsY3lCeVpYRjFaWE4wSUhCaGVXeHZZV1FnZG1Gc2FXUmhkR2x2YmlCaGJtUWdkSEpoYm5ObWIzSnRZWFJwYjI0Z1oyeHZZbUZzYkhrZ1lXTnliM056WEc0Z0lDQXFJSFJvWlNCbGJuUnBjbVVnVG1WemRFcFRJR0Z3Y0d4cFkyRjBhVzl1TGlCTmRXeDBhWEJzWlNCd2FYQmxjeUJqWVc0Z1ltVWdZMmhoYVc1bFpDQjBiMmRsZEdobGNseHVJQ0FnS2lCbWIzSWdiVzlrZFd4aGNpQnBibkIxZENCMllXeHBaR0YwYVc5dUxseHVJQ0FnS2x4dUlDQWdLaUJBY0dGeVlXMGdleTR1TGxCcGNHVlVjbUZ1YzJadmNtMWJYWDBnY0dsd1pYTWdMU0JRYVhCbElHbHVjM1JoYm1ObGN5QjBieUJ5WldkcGMzUmxjaUJuYkc5aVlXeHNlUzVjYmlBZ0lDb2dRSEpsZEhWeWJpQjdUbVZ6ZEVKdmIzUnpkSEpoY0dWeWZTQlNaWFIxY201eklIUm9aU0JqYkdGemN5Qm1iM0lnWTJoaGFXNXBibWN1WEc0Z0lDQXFMMXh1SUNCemRHRjBhV01nZFhObFIyeHZZbUZzVUdsd1pYTW9MaTR1Y0dsd1pYTTZJRkJwY0dWVWNtRnVjMlp2Y20xYlhTa2dlMXh1SUNBZ0lHbG1JQ2h3YVhCbGN5NXNaVzVuZEdnZ1BpQXdLU0IwYUdsekxtRndjQzUxYzJWSGJHOWlZV3hRYVhCbGN5Z3VMaTV3YVhCbGN5azdYRzRnSUNBZ2NtVjBkWEp1SUhSb2FYTTdYRzRnSUgxY2JseHVJQ0F2S2lwY2JpQWdJQ29nUUdSbGMyTnlhWEIwYVc5dVhHNGdJQ0FxSUZKbFoybHpkR1Z5Y3lCdmJtVWdiM0lnYlc5eVpTQm5iRzlpWVd3Z1pYaGpaWEIwYVc5dUlHWnBiSFJsY25NdVhHNGdJQ0FxWEc0Z0lDQXFJRUJ6ZFcxdFlYSjVYRzRnSUNBcUlFbG1JRzV2SUdacGJIUmxjbk1nWVhKbElIQnliM1pwWkdWa0xDQnBkQ0JoZFhSdmJXRjBhV05oYkd4NUlISmxaMmx6ZEdWeWN5QmhJR1JsWm1GMWJIUmNiaUFnSUNvZ2MyVjBJRzltSUhOMFlXNWtZWEprSUdWNFkyVndkR2x2YmlCbWFXeDBaWEp6SUdadmNpQmpiMjF0YjI0Z1pYSnliM0lnZEhsd1pYTWdiR2xyWlZ4dUlDQWdLaUJnU0hSMGNFVjRZMlZ3ZEdsdmJtQXNJR0JXWVd4cFpHRjBhVzl1UlhoalpYQjBhVzl1WUN3Z1lFTnZibVpzYVdOMFJYaGpaWEIwYVc5dVlDd2dZVzVrSUc5MGFHVnljeTVjYmlBZ0lDcGNiaUFnSUNvZ1FIQmhjbUZ0SUhzdUxpNUZlR05sY0hScGIyNUdhV3gwWlhKYlhYMGdabWxzZEdWeWN5QXRJRTl3ZEdsdmJtRnNJR1pwYkhSbGNuTWdkRzhnWVhCd2JIa2daMnh2WW1Gc2JIa3VYRzRnSUNBcUwxeHVJQ0J6ZEdGMGFXTWdkWE5sUjJ4dlltRnNSbWxzZEdWeWN5Z3VMaTVtYVd4MFpYSnpPaUJoYm5sYlhTa2dlMXh1SUNBZ0lIUm9hWE11WVhCd0xuVnpaVWRzYjJKaGJFWnBiSFJsY25Nb1hHNGdJQ0FnSUNBdUxpNG9abWxzZEdWeWN5NXNaVzVuZEdnZ1BpQXdJRDhnWm1sc2RHVnljeUE2SUZ0dVpYY2dSR1ZqWVdaRmVHTmxjSFJwYjI1R2FXeDBaWElvS1YwcFhHNGdJQ0FnS1R0Y2JpQWdJQ0J5WlhSMWNtNGdkR2hwY3p0Y2JpQWdmVnh1WEc0Z0lDOHFLbHh1SUNBZ0tpQkFaR1Z6WTNKcGNIUnBiMjVjYmlBZ0lDb2dVbVZuYVhOMFpYSnpJR2RzYjJKaGJDQnBiblJsY21ObGNIUnZjbk1nWm05eUlISmxjWFZsYzNRZ1lXNWtJSEpsYzNCdmJuTmxJSFJ5WVc1elptOXliV0YwYVc5dUxseHVJQ0FnS2x4dUlDQWdLaUJBYzNWdGJXRnllVnh1SUNBZ0tpQkpiblJsY21ObGNIUnZjbk1nWVd4c2IzY2dZV1IyWVc1alpXUWdjbVZ4ZFdWemRDOXlaWE53YjI1elpTQnRZVzVwY0hWc1lYUnBiMjRnYzNWamFDQmhjMXh1SUNBZ0tpQnpaWEpwWVd4cGVtRjBhVzl1TENCc2IyZG5hVzVuTENCdmNpQjBjbUZ1YzJadmNtMWhkR2x2Ymk0Z1RYVnNkR2x3YkdVZ2FXNTBaWEpqWlhCMGIzSnpYRzRnSUNBcUlHTmhiaUJpWlNCaFpHUmxaQ0JtYjNJZ2JXOWtkV3hoY2lCamIyNW1hV2QxY21GMGFXOXVMbHh1SUNBZ0tseHVJQ0FnS2lCQWNHRnlZVzBnZXk0dUxrNWxjM1JKYm5SbGNtTmxjSFJ2Y2x0ZGZTQnBiblJsY21ObGNIUnZjbk1nTFNCSmJuUmxjbU5sY0hSdmNpQnBibk4wWVc1alpYTWdkRzhnY21WbmFYTjBaWEl1WEc0Z0lDQXFJRUJ5WlhSMWNtNGdlMDVsYzNSQ2IyOTBjM1J5WVhCbGNuMGdVbVYwZFhKdWN5QjBhR1VnWTJ4aGMzTWdabTl5SUdOb1lXbHVhVzVuSUdOdmJtWnBaM1Z5WVhScGIyNHVYRzRnSUNBcUwxeHVJQ0J6ZEdGMGFXTWdkWE5sUjJ4dlltRnNTVzUwWlhKalpYQjBiM0p6S0M0dUxtbHVkR1Z5WTJWd2RHOXljem9nVG1WemRFbHVkR1Z5WTJWd2RHOXlXMTBwSUh0Y2JpQWdJQ0JwWmlBb2FXNTBaWEpqWlhCMGIzSnpMbXhsYm1kMGFDQStJREFwWEc0Z0lDQWdJQ0IwYUdsekxtRndjQzUxYzJWSGJHOWlZV3hKYm5SbGNtTmxjSFJ2Y25Nb0xpNHVhVzUwWlhKalpYQjBiM0p6S1R0Y2JpQWdJQ0J5WlhSMWNtNGdkR2hwY3p0Y2JpQWdmVnh1WEc0Z0lDOHFLbHh1SUNBZ0tpQkFaR1Z6WTNKcGNIUnBiMjVjYmlBZ0lDb2dVM1JoY25SeklIUm9aU0JPWlhOMFNsTWdZWEJ3YkdsallYUnBiMjRnWVc1a0lHSnBibVJ6SUdsMElIUnZJSFJvWlNCbmFYWmxiaUJ3YjNKMElHRnVaQ0JvYjNOMExseHVJQ0FnS2x4dUlDQWdLaUJBYzNWdGJXRnllVnh1SUNBZ0tpQk1hWE4wWlc1eklHOXVJSFJvWlNCemNHVmphV1pwWldRZ2NHOXlkQ0JoYm1RZ2IzQjBhVzl1WVd4c2VTQmhJR2h2YzNRdUlFOXVZMlVnYzNSaGNuUmxaQ3hjYmlBZ0lDb2diRzluY3lCMGFHVWdZWEJ3YkdsallYUnBiMjRnVlZKTUlHWnZjaUJsWVhONUlHRmpZMlZ6Y3k0Z1ZHaGxJSE4wWVhKMGRYQWdjSEp2WTJWemN5QnlaWE52YkhabGMxeHVJQ0FnS2lCdmJtTmxJSFJvWlNCaGNIQnNhV05oZEdsdmJpQnBjeUJ6ZFdOalpYTnpablZzYkhrZ2NuVnVibWx1Wnk1Y2JpQWdJQ3BjYmlBZ0lDb2dRSEJoY21GdElIdHVkVzFpWlhKOUlGdHdiM0owUFRNd01EQmRJQzBnVUc5eWRDQnVkVzFpWlhJZ2RHOGdiR2x6ZEdWdUlHOXVMbHh1SUNBZ0tpQkFjR0Z5WVcwZ2UzTjBjbWx1WjMwZ1cyaHZjM1JkSUMwZ1QzQjBhVzl1WVd3Z2FHOXpkQ0J2Y2lCSlVDQmhaR1J5WlhOeklIUnZJR0pwYm1RZ2RHOHVYRzRnSUNBcUlFQndZWEpoYlNCN1ltOXZiR1ZoYm4wZ1cyeHZaejEwY25WbFhTQXRJRmRvWlhSb1pYSWdkRzhnYkc5bklIUm9aU0JoY0hCc2FXTmhkR2x2YmlCVlVrd2dkWEJ2YmlCemRHRnlkSFZ3TGx4dUlDQWdLaUJBY21WMGRYSnVJSHRRY205dGFYTmxQSFp2YVdRK2ZTQlNaWE52YkhabGN5QnZibU5sSUhSb1pTQmhjSEJzYVdOaGRHbHZiaUJ6ZEdGeWRITWdjM1ZqWTJWemMyWjFiR3g1TGx4dUlDQWdLaTljYmlBZ2MzUmhkR2xqSUdGemVXNWpJSE4wWVhKMEtGeHVJQ0FnSUhCdmNuUTZJRzUxYldKbGNpQTlJRTUxYldKbGNpaHdjbTlqWlhOekxtVnVkaTVRVDFKVUtTQjhmQ0F6TURBd0xGeHVJQ0FnSUdodmMzUTZJSE4wY21sdVp5QjhJSFZ1WkdWbWFXNWxaQ0E5SUhWdVpHVm1hVzVsWkN4Y2JpQWdJQ0JzYjJjNklHSnZiMnhsWVc0Z1BTQjBjblZsWEc0Z0lDa2dlMXh1SUNBZ0lIUm9hWE11WVhCd0xteHBjM1JsYmlod2IzSjBMQ0JvYjNOMElHRnpJR0Z1ZVNrdWRHaGxiaWhoYzNsdVl5QW9LU0E5UGlCN1hHNGdJQ0FnSUNCcFppQW9iRzluS1NCN1hHNGdJQ0FnSUNBZ0lHTnZibk4wSUhWeWJDQTlJR0YzWVdsMElIUm9hWE11WVhCd0xtZGxkRlZ5YkNncE8xeHVJQ0FnSUNBZ0lDQjBhR2x6TG14dloyZGxjaTVzYjJjb1lQQ2Ztb0FnUVhCd2JHbGpZWFJwYjI0Z2FYTWdjblZ1Ym1sdVp5QmhkRG9nSkh0MWNteDlZQ2s3WEc0Z0lDQWdJQ0I5WEc0Z0lDQWdmU2s3WEc0Z0lIMWNibjFjYmlKZGZRPT0iXX0=
274
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiTmVzdEJvb3RzdHJhcGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2ZhY3RvcnkvTmVzdEJvb3RzdHJhcGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFFTCxNQUFNLEdBR1AsTUFBTSxnQkFBZ0IsQ0FBQztBQUN4QixPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sY0FBYyxDQUFDO0FBQ3pDLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSw4QkFBcUI7QUFDcEQsT0FBTyxFQUFFLGNBQWMsRUFBRSwyQkFBa0I7QUFFM0MsT0FBTyxFQUFFLFNBQVMsRUFBRSwwQkFBaUI7QUE0Q3JDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQStDRztBQUNILE1BQU0sT0FBTyxlQUFlO0lBSTFCOzs7Ozs7Ozs7T0FTRztJQUNLLE1BQU0sS0FBSyxNQUFNO1FBQ3ZCLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7WUFDbEIsV0FBVztZQUNYLElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxNQUFNLENBQUMsZUFBZSxDQUFDLENBQUM7UUFDN0MsQ0FBQztRQUNELE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQztJQUN0QixDQUFDO0lBRUQ7Ozs7Ozs7Ozs7T0FVRztJQUNILE1BQU0sQ0FBQyxVQUFVLENBQUMsR0FBcUI7UUFDckMsSUFBSSxDQUFDLEdBQUcsR0FBRyxHQUFHLENBQUM7UUFDZixPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFFRDs7Ozs7Ozs7Ozs7T0FXRztJQUNILE1BQU0sQ0FBQyxZQUFZLENBQUMsWUFBcUI7UUFDdkMsSUFBSSxDQUFDLE9BQU8sR0FBRyxZQUFZLElBQUksSUFBSSxNQUFNLENBQUMsZUFBZSxDQUFDLENBQUM7UUFDM0QsSUFBSSxDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQ2pDLE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQUVEOzs7Ozs7Ozs7Ozs7O09BYUc7SUFDSCxNQUFNLENBQUMsVUFBVSxDQUNmLFVBQTBCLEVBQUUsRUFDNUIsZUFBeUIsQ0FBQyxLQUFLLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxRQUFRLENBQUM7UUFFekQsTUFBTSxjQUFjLEdBQ2xCLE9BQU8sS0FBSyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDLFdBQVcsRUFBRSxDQUFDLENBQUM7UUFFckUsTUFBTSxXQUFXLEdBQWdCO1lBQy9CLE1BQU0sRUFBRSxDQUFDLE1BQU0sRUFBRSxRQUFRLEVBQUUsRUFBRTtnQkFDM0Isa0NBQWtDO2dCQUNsQyxJQUFJLENBQUMsTUFBTTtvQkFBRSxPQUFPLFFBQVEsQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLENBQUM7Z0JBRXpDLElBQ0UsY0FBYyxLQUFLLEdBQUc7b0JBQ3RCLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxjQUFjLENBQUM7d0JBQzVCLGNBQWMsQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLFdBQVcsRUFBRSxDQUFDLENBQUMsRUFDaEQsQ0FBQztvQkFDRCxPQUFPLFFBQVEsQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLENBQUM7Z0JBQzlCLENBQUM7Z0JBRUQsUUFBUSxDQUFDLElBQUksU0FBUyxDQUFDLFVBQVUsTUFBTSxjQUFjLENBQUMsQ0FBQyxDQUFDO1lBQzFELENBQUM7WUFDRCxXQUFXLEVBQUUsSUFBSTtZQUNqQixPQUFPLEVBQUUsWUFBWSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUM7U0FDaEMsQ0FBQztRQUVGLElBQUksQ0FBQyxHQUFHLENBQUMsVUFBVSxDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBQ2pDLE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQUVEOzs7Ozs7Ozs7OztPQVdHO0lBQ0gsTUFBTSxDQUFDLFNBQVMsQ0FBQyxPQUE2QjtRQUM1QyxJQUFJLENBQUM7WUFDSCxpRUFBaUU7WUFDakUsTUFBTSxNQUFNLEdBQUcsT0FBTyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsMENBQTBDO1lBQzVFLElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDO1lBQzlCLElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLHlDQUF5QyxDQUFDLENBQUM7UUFDN0QsQ0FBQztRQUFDLE1BQU0sQ0FBQztZQUNQLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLDRDQUE0QyxDQUFDLENBQUM7UUFDakUsQ0FBQztRQUVELE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQUVEOzs7Ozs7Ozs7OztPQVdHO0lBQ0gsTUFBTSxDQUFDLFlBQVksQ0FBQyxPQUE0QjtRQUM5QyxNQUFNLE9BQU8sR0FBRyxJQUFJLGNBQWMsQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFFO1lBQzNDLEtBQUssRUFBRSxPQUFPLENBQUMsS0FBSztZQUNwQixXQUFXLEVBQUUsT0FBTyxDQUFDLFdBQVc7WUFDaEMsT0FBTyxFQUFFLE9BQU8sQ0FBQyxPQUFPO1lBQ3hCLElBQUksRUFBRSxPQUFPLENBQUMsSUFBSSxJQUFJLEtBQUs7WUFDM0Isb0JBQW9CLEVBQUUsT0FBTyxDQUFDLG9CQUFvQixJQUFJLElBQUk7WUFDMUQsVUFBVSxFQUFFLE9BQU8sQ0FBQyxVQUFVO1lBQzlCLGVBQWUsRUFBRSxPQUFPLENBQUMsV0FBVztZQUNwQyxrQkFBa0IsRUFBRSxPQUFPLENBQUMsY0FBYztZQUMxQyxhQUFhLEVBQUUsT0FBTyxDQUFDLGFBQWE7WUFDcEMsZUFBZSxFQUFFLE9BQU8sQ0FBQyxlQUFlO1lBQ3hDLGVBQWUsRUFBRSxPQUFPLENBQUMsZUFBZTtTQUN6QyxDQUFDLENBQUM7UUFDSCxPQUFPLENBQUMsWUFBWSxFQUFFLENBQUM7UUFDdkIsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBRUQ7Ozs7Ozs7Ozs7O09BV0c7SUFDSCxNQUFNLENBQUMsY0FBYyxDQUFDLEdBQUcsS0FBc0I7UUFDN0MsSUFBSSxLQUFLLENBQUMsTUFBTSxHQUFHLENBQUM7WUFBRSxJQUFJLENBQUMsR0FBRyxDQUFDLGNBQWMsQ0FBQyxHQUFHLEtBQUssQ0FBQyxDQUFDO1FBQ3hELE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQUVEOzs7Ozs7Ozs7Ozs7Ozs7T0FlRztJQUNILE1BQU0sQ0FBQyxnQkFBZ0IsQ0FBQyxHQUFHLE9BQWM7UUFDdkMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxnQkFBZ0IsQ0FDdkIsR0FBRyxDQUFDLE9BQU8sQ0FBQyxNQUFNLEdBQUcsQ0FBQztZQUNwQixDQUFDLENBQUMsT0FBTztZQUNULENBQUMsQ0FBQyxDQUFDLElBQUksb0JBQW9CLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsU0FBUyxFQUFFLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQzVFLENBQUM7UUFDRixPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFFRDs7Ozs7Ozs7Ozs7T0FXRztJQUNILE1BQU0sQ0FBQyxxQkFBcUIsQ0FBQyxHQUFHLFlBQStCO1FBQzdELElBQUksWUFBWSxDQUFDLE1BQU0sR0FBRyxDQUFDO1lBQ3pCLElBQUksQ0FBQyxHQUFHLENBQUMscUJBQXFCLENBQUMsR0FBRyxZQUFZLENBQUMsQ0FBQztRQUNsRCxPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFFRDs7Ozs7Ozs7Ozs7OztPQWFHO0lBQ0gsTUFBTSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQ2hCLE9BQWUsTUFBTSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLElBQUksSUFBSSxFQUMvQyxPQUEyQixTQUFTLEVBQ3BDLE1BQWUsSUFBSTtRQUVuQixJQUFJLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxJQUFJLEVBQUUsSUFBVyxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssSUFBSSxFQUFFO1lBQ2pELElBQUksR0FBRyxFQUFFLENBQUM7Z0JBQ1IsTUFBTSxHQUFHLEdBQUcsTUFBTSxJQUFJLENBQUMsR0FBRyxDQUFDLE1BQU0sRUFBRSxDQUFDO2dCQUNwQyxJQUFJLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxpQ0FBaUMsR0FBRyxFQUFFLENBQUMsQ0FBQztZQUMxRCxDQUFDO1FBQ0gsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBJTmVzdEFwcGxpY2F0aW9uLFxuICBMb2dnZXIsXG4gIE5lc3RJbnRlcmNlcHRvcixcbiAgUGlwZVRyYW5zZm9ybSxcbn0gZnJvbSBcIkBuZXN0anMvY29tbW9uXCI7XG5pbXBvcnQgeyBNb2R1bGVSZWYgfSBmcm9tIFwiQG5lc3Rqcy9jb3JlXCI7XG5pbXBvcnQgeyBEZWNhZkV4Y2VwdGlvbkZpbHRlciB9IGZyb20gXCIuL2V4Y2VwdGlvbnNcIjtcbmltcG9ydCB7IFN3YWdnZXJCdWlsZGVyIH0gZnJvbSBcIi4vb3BlbmFwaVwiO1xuaW1wb3J0IHsgQ29yc09wdGlvbnMgfSBmcm9tIFwiQG5lc3Rqcy9jb21tb24vaW50ZXJmYWNlcy9leHRlcm5hbC9jb3JzLW9wdGlvbnMuaW50ZXJmYWNlXCI7XG5pbXBvcnQgeyBDb3JzRXJyb3IgfSBmcm9tIFwiLi9lcnJvcnNcIjtcblxuLyoqXG4gKiBAZGVzY3JpcHRpb25cbiAqIERlZmluZXMgYWxsIGN1c3RvbWl6YWJsZSBwYXJhbWV0ZXJzIGZvciBTd2FnZ2VyIHNldHVwLlxuICpcbiAqIEBzdW1tYXJ5XG4gKiBUaGlzIGludGVyZmFjZSBhbGxvd3MgZGV2ZWxvcGVycyB0byBjdXN0b21pemUgaG93IFN3YWdnZXIgVUkgaXMgY29uZmlndXJlZFxuICogd2l0aGluIHRoZSBOZXN0SlMgYXBwbGljYXRpb24uIEl0IGluY2x1ZGVzIHBhcmFtZXRlcnMgZm9yIHRpdGxlcywgcGF0aHMsXG4gKiBjb2xvciBzY2hlbWVzLCBhbmQgYXNzZXQgcGF0aHMgdG8gdGFpbG9yIHRoZSBBUEkgZG9jdW1lbnRhdGlvbiBleHBlcmllbmNlLlxuICpcbiAqIEBwYXJhbSB7c3RyaW5nfSB0aXRsZSAtIFRpdGxlIGRpc3BsYXllZCBpbiBTd2FnZ2VyIFVJLlxuICogQHBhcmFtIHtzdHJpbmd9IGRlc2NyaXB0aW9uIC0gRGVzY3JpcHRpb24gc2hvd24gYmVsb3cgdGhlIHRpdGxlLlxuICogQHBhcmFtIHtzdHJpbmd9IHZlcnNpb24gLSBBUEkgdmVyc2lvbiBkaXNwbGF5ZWQgaW4gdGhlIGRvY3VtZW50YXRpb24uXG4gKiBAcGFyYW0ge3N0cmluZ30gW3BhdGhdIC0gT3B0aW9uYWwgcGF0aCB3aGVyZSBTd2FnZ2VyIHdpbGwgYmUgYXZhaWxhYmxlLlxuICogQHBhcmFtIHtib29sZWFufSBbcGVyc2lzdEF1dGhvcml6YXRpb25dIC0gV2hldGhlciBhdXRob3JpemF0aW9uIHRva2VucyBwZXJzaXN0IGFjcm9zcyByZWxvYWRzLlxuICogQHBhcmFtIHtzdHJpbmd9IFthc3NldHNQYXRoXSAtIFBhdGggdG8gY3VzdG9tIGFzc2V0cyBmb3IgU3dhZ2dlciBVSS5cbiAqIEBwYXJhbSB7c3RyaW5nfSBbdG9wYmFyQmdDb2xvcl0gLSBDdXN0b20gYmFja2dyb3VuZCBjb2xvciBmb3IgdGhlIFN3YWdnZXIgdG9wIGJhci5cbiAqIEBwYXJhbSB7c3RyaW5nfSBbdG9wYmFySWNvblBhdGhdIC0gUGF0aCB0byBhIGN1c3RvbSBpY29uIGRpc3BsYXllZCBpbiB0aGUgdG9wIGJhci5cbiAqIEBwYXJhbSB7c3RyaW5nfSBbZmF2aWNvblBhdGhdIC0gUGF0aCB0byBhIGN1c3RvbSBmYXZpY29uLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFN3YWdnZXJTZXR1cE9wdGlvbnMge1xuICB0aXRsZTogc3RyaW5nO1xuICBkZXNjcmlwdGlvbjogc3RyaW5nO1xuICB2ZXJzaW9uOiBzdHJpbmc7XG4gIHBhdGg/OiBzdHJpbmc7XG4gIHBlcnNpc3RBdXRob3JpemF0aW9uPzogYm9vbGVhbjtcbiAgYXNzZXRzUGF0aD86IHN0cmluZztcbiAgdG9wYmFyQmdDb2xvcj86IHN0cmluZztcbiAgdG9wYmFySWNvblBhdGg/OiBzdHJpbmc7XG4gIGZhdmljb25QYXRoPzogc3RyaW5nO1xuICAvKipcbiAgICogUGF0aCB0byBleHBvc2UgdGhlIE9wZW5BUEkgc3BlY2lmaWNhdGlvbiBpbiBKU09OIGZvcm1hdC5cbiAgICogRXhhbXBsZTogL2FwaS9vcGVuYXBpLmpzb25cbiAgICovXG4gIG9wZW5BcGlKc29uUGF0aD86IHN0cmluZztcbiAgLyoqXG4gICAqIFBhdGggdG8gZXhwb3NlIHRoZSBPcGVuQVBJIHNwZWNpZmljYXRpb24gaW4gWUFNTCBmb3JtYXQuXG4gICAqIFJlcXVpcmVzICd5YW1sJyBwYWNrYWdlIGFzIHBlZXIgZGVwZW5kZW5jeS5cbiAgICogRXhhbXBsZTogL2FwaS9vcGVuYXBpLnlhbWxcbiAgICovXG4gIG9wZW5BcGlZYW1sUGF0aD86IHN0cmluZztcbn1cblxuLyoqXG4gKiBAZGVzY3JpcHRpb25cbiAqIEEgZmx1ZW50LCBzdGF0aWMgYm9vdHN0cmFwIGNsYXNzIGZvciBpbml0aWFsaXppbmcgYW5kIGNvbmZpZ3VyaW5nIGEgTmVzdEpTIGFwcGxpY2F0aW9uLlxuICpcbiAqIEBzdW1tYXJ5XG4gKiBUaGUgYE5lc3RCb290c3RyYXBlcmAgY2xhc3MgcHJvdmlkZXMgYSBjaGFpbmFibGUgQVBJIGZvciBjb25maWd1cmluZ1xuICogYSBOZXN0SlMgYXBwbGljYXRpb24gaW5zdGFuY2UuIEl0IGluY2x1ZGVzIGJ1aWx0LWluIG1ldGhvZHMgZm9yIGVuYWJsaW5nXG4gKiBDT1JTLCBIZWxtZXQgc2VjdXJpdHksIFN3YWdnZXIgZG9jdW1lbnRhdGlvbiwgZ2xvYmFsIHBpcGVzLCBmaWx0ZXJzLFxuICogaW50ZXJjZXB0b3JzLCBhbmQgc3RhcnRpbmcgdGhlIHNlcnZlci5cbiAqXG4gKiBUaGlzIGNsYXNzIHByb21vdGVzIGNvbnNpc3RlbmN5IGFuZCByZWR1Y2VzIHJlcGV0aXRpdmUgc2V0dXAgY29kZVxuICogYWNyb3NzIG11bHRpcGxlIE5lc3RKUyBwcm9qZWN0cy5cbiAqXG4gKiBAZXhhbXBsZVxuICogYGBgdHNcbiAqIGltcG9ydCB7IE5lc3RGYWN0b3J5IH0gZnJvbSBcIkBuZXN0anMvY29yZVwiO1xuICogaW1wb3J0IHsgQXBwTW9kdWxlIH0gZnJvbSBcIi4vYXBwLm1vZHVsZVwiO1xuICogaW1wb3J0IHsgTXlMb2dnZXIgfSBmcm9tIFwiLi9NeUxvZ2dlclwiO1xuICogaW1wb3J0IHsgTmVzdEJvb3RzdHJhcGVyIH0gZnJvbSBcIkBkZWNhZi10cy9mb3ItbmVzdFwiO1xuICpcbiAqIGFzeW5jIGZ1bmN0aW9uIGJvb3RzdHJhcCgpIHtcbiAqICAgY29uc3QgYXBwID0gYXdhaXQgTmVzdEZhY3RvcnkuY3JlYXRlKEFwcE1vZHVsZSk7XG4gKlxuICogICBhd2FpdCBOZXN0Qm9vdHN0cmFwZXJcbiAqICAgICAuaW5pdGlhbGl6ZShhcHApXG4gKiAgICAgLmVuYWJsZUxvZ2dlcihuZXcgTXlMb2dnZXIoKSlcbiAqICAgICAuZW5hYmxlQ29ycyhbXCJodHRwOi8vbG9jYWxob3N0OjQyMDBcIl0pXG4gKiAgICAgLnVzZUhlbG1ldCgpXG4gKiAgICAgLnNldHVwU3dhZ2dlcih7XG4gKiAgICAgICB0aXRsZTogXCJPcGVuQVBJIGJ5IFRyYWRlTWFya+KEolwiLFxuICogICAgICAgZGVzY3JpcHRpb246IFwiVHJhZGVNYXJr4oSiIEFQSSBkb2N1bWVudGF0aW9uXCIsXG4gKiAgICAgICB2ZXJzaW9uOiBcIjEuMC4wXCIsXG4gKiAgICAgICBwYXRoOiBcImFwaVwiLFxuICogICAgICAgcGVyc2lzdEF1dGhvcml6YXRpb246IHRydWUsXG4gKiAgICAgICB0b3BiYXJCZ0NvbG9yOiBcIiMyQzNFNTBcIixcbiAqICAgICAgIHRvcGJhckljb25QYXRoOiBcIi9hc3NldHMvbG9nby5zdmdcIixcbiAqICAgICAgIGZhdmljb25QYXRoOiBcIi9hc3NldHMvZmF2aWNvbi5pY29cIlxuICogICAgIH0pXG4gKiAgICAgLnVzZUdsb2JhbEZpbHRlcnMoKVxuICogICAgIC51c2VHbG9iYWxQaXBlcyguLi4pXG4gKiAgICAgLnVzZUdsb2JhbEludGVyY2VwdG9ycyguLi4pXG4gKiAgICAgLnN0YXJ0KDMwMDApO1xuICogfVxuICpcbiAqIGJvb3RzdHJhcCgpO1xuICogYGBgXG4gKiBAY2xhc3NcbiAqL1xuZXhwb3J0IGNsYXNzIE5lc3RCb290c3RyYXBlciB7XG4gIHByaXZhdGUgc3RhdGljIGFwcDogSU5lc3RBcHBsaWNhdGlvbjtcbiAgcHJpdmF0ZSBzdGF0aWMgX2xvZ2dlcjogTG9nZ2VyO1xuXG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb25cbiAgICogUmV0dXJucyB0aGUgY3VycmVudCBsb2dnZXIgaW5zdGFuY2UsIGNyZWF0aW5nIGEgZGVmYXVsdCBvbmUgaWYgbm90IHNldC5cbiAgICpcbiAgICogQHN1bW1hcnlcbiAgICogRW5zdXJlcyB0aGF0IGEgdmFsaWQgYExvZ2dlcmAgaW5zdGFuY2UgaXMgYWx3YXlzIGF2YWlsYWJsZVxuICAgKiBmb3IgbG9nZ2luZyBib290c3RyYXAtcmVsYXRlZCBtZXNzYWdlcy5cbiAgICpcbiAgICogQHJldHVybiB7TG9nZ2VyfSBUaGUgYWN0aXZlIGxvZ2dlciBpbnN0YW5jZS5cbiAgICovXG4gIHByaXZhdGUgc3RhdGljIGdldCBsb2dnZXIoKTogTG9nZ2VyIHtcbiAgICBpZiAoIXRoaXMuX2xvZ2dlcikge1xuICAgICAgLy8gZmFsbGJhY2tcbiAgICAgIHRoaXMuX2xvZ2dlciA9IG5ldyBMb2dnZXIoXCJOZXN0Qm9vdHN0cmFwXCIpO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy5fbG9nZ2VyO1xuICB9XG5cbiAgLyoqXG4gICAqIEBkZXNjcmlwdGlvblxuICAgKiBJbml0aWFsaXplcyB0aGUgYm9vdHN0cmFwcGVyIHdpdGggYSBnaXZlbiBOZXN0SlMgYXBwbGljYXRpb24uXG4gICAqXG4gICAqIEBzdW1tYXJ5XG4gICAqIEJpbmRzIHRoZSBwcm92aWRlZCBOZXN0SlMgYXBwIGluc3RhbmNlIHRvIHRoZSBib290c3RyYXBwZXIsIGVuYWJsaW5nXG4gICAqIGNoYWluZWQgY29uZmlndXJhdGlvbiBtZXRob2RzLlxuICAgKlxuICAgKiBAcGFyYW0ge0lOZXN0QXBwbGljYXRpb259IGFwcCAtIFRoZSBOZXN0SlMgYXBwbGljYXRpb24gaW5zdGFuY2UgdG8gaW5pdGlhbGl6ZS5cbiAgICogQHJldHVybiB7TmVzdEJvb3RzdHJhcGVyfSBSZXR1cm5zIHRoZSBjbGFzcyBmb3IgY2hhaW5pbmcgY29uZmlndXJhdGlvbiBtZXRob2RzLlxuICAgKi9cbiAgc3RhdGljIGluaXRpYWxpemUoYXBwOiBJTmVzdEFwcGxpY2F0aW9uKSB7XG4gICAgdGhpcy5hcHAgPSBhcHA7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICAvKipcbiAgICogQGRlc2NyaXB0aW9uXG4gICAqIEVuYWJsZXMgb3IgcmVwbGFjZXMgdGhlIGdsb2JhbCBsb2dnZXIgZm9yIHRoZSBOZXN0SlMgYXBwbGljYXRpb24uXG4gICAqXG4gICAqIEBzdW1tYXJ5XG4gICAqIElmIGEgY3VzdG9tIGxvZ2dlciBpcyBwcm92aWRlZCwgaXQgcmVwbGFjZXMgdGhlIGRlZmF1bHQgbG9nZ2VyLiBPdGhlcndpc2UsXG4gICAqIGEgbmV3IGxvZ2dlciBuYW1lZCBgXCJOZXN0Qm9vdHN0cmFwXCJgIGlzIHVzZWQuIFRoaXMgbG9nZ2VyIGlzIGFsc28gcmVnaXN0ZXJlZFxuICAgKiB3aXRoIHRoZSBOZXN0SlMgYXBwbGljYXRpb24uXG4gICAqXG4gICAqIEBwYXJhbSB7TG9nZ2VyfSBbY3VzdG9tTG9nZ2VyXSAtIE9wdGlvbmFsIGN1c3RvbSBsb2dnZXIgaW5zdGFuY2UuXG4gICAqIEByZXR1cm4ge05lc3RCb290c3RyYXBlcn0gUmV0dXJucyB0aGUgY2xhc3MgZm9yIGNoYWluaW5nLlxuICAgKi9cbiAgc3RhdGljIGVuYWJsZUxvZ2dlcihjdXN0b21Mb2dnZXI/OiBMb2dnZXIpIHtcbiAgICB0aGlzLl9sb2dnZXIgPSBjdXN0b21Mb2dnZXIgfHwgbmV3IExvZ2dlcihcIk5lc3RCb290c3RyYXBcIik7XG4gICAgdGhpcy5hcHAudXNlTG9nZ2VyKHRoaXMuX2xvZ2dlcik7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICAvKipcbiAgICogQGRlc2NyaXB0aW9uXG4gICAqIEVuYWJsZXMgQ3Jvc3MtT3JpZ2luIFJlc291cmNlIFNoYXJpbmcgKENPUlMpIGZvciB0aGUgYXBwbGljYXRpb24uXG4gICAqXG4gICAqIEBzdW1tYXJ5XG4gICAqIEFsbG93cyBkZWZpbmluZyBlaXRoZXIgYSB3aWxkY2FyZCBvcmlnaW4gKGBcIipcImApIG9yIGEgbGlzdCBvZiBhbGxvd2VkIG9yaWdpbnMuXG4gICAqIEF1dG9tYXRpY2FsbHkgYWNjZXB0cyBsb2NhbCBkZXZlbG9wbWVudCByZXF1ZXN0cyBhbmQgdGhvc2Ugd2l0aG91dCBvcmlnaW4gaGVhZGVycy5cbiAgICogVGhyb3dzIGEgYENvcnNFcnJvcmAgZm9yIHVuYXV0aG9yaXplZCBvcmlnaW5zLlxuICAgKlxuICAgKiBAcGFyYW0geycqJyB8IHN0cmluZ1tdfSBbb3JpZ2lucz1bXV0gLSBMaXN0IG9mIGFsbG93ZWQgb3JpZ2lucyBvciBgXCIqXCJgIHRvIGFsbG93IGFsbC5cbiAgICogQHBhcmFtIHtzdHJpbmdbXX0gW2FsbG93TWV0aG9kcz1bJ0dFVCcsICdQT1NUJywgJ1BVVCcsICdERUxFVEUnXV0gLSBBbGxvd2VkIEhUVFAgbWV0aG9kcy5cbiAgICogQHJldHVybiB7TmVzdEJvb3RzdHJhcGVyfSBSZXR1cm5zIHRoZSBjbGFzcyBmb3IgY2hhaW5pbmcgY29uZmlndXJhdGlvbi5cbiAgICpcbiAgICovXG4gIHN0YXRpYyBlbmFibGVDb3JzKFxuICAgIG9yaWdpbnM6IFwiKlwiIHwgc3RyaW5nW10gPSBbXSxcbiAgICBhbGxvd01ldGhvZHM6IHN0cmluZ1tdID0gW1wiR0VUXCIsIFwiUE9TVFwiLCBcIlBVVFwiLCBcIkRFTEVURVwiXVxuICApIHtcbiAgICBjb25zdCBhbGxvd2VkT3JpZ2lucyA9XG4gICAgICBvcmlnaW5zID09PSBcIipcIiA/IFwiKlwiIDogb3JpZ2lucy5tYXAoKG8pID0+IG8udHJpbSgpLnRvTG93ZXJDYXNlKCkpO1xuXG4gICAgY29uc3QgY29yc09wdGlvbnM6IENvcnNPcHRpb25zID0ge1xuICAgICAgb3JpZ2luOiAob3JpZ2luLCBjYWxsYmFjaykgPT4ge1xuICAgICAgICAvLyBBbGxvdyByZXF1ZXN0IHdpdGhvdXQgb3JpZ2luLi4uXG4gICAgICAgIGlmICghb3JpZ2luKSByZXR1cm4gY2FsbGJhY2sobnVsbCwgdHJ1ZSk7XG5cbiAgICAgICAgaWYgKFxuICAgICAgICAgIGFsbG93ZWRPcmlnaW5zID09PSBcIipcIiB8fFxuICAgICAgICAgIChBcnJheS5pc0FycmF5KGFsbG93ZWRPcmlnaW5zKSAmJlxuICAgICAgICAgICAgYWxsb3dlZE9yaWdpbnMuaW5jbHVkZXMob3JpZ2luLnRvTG93ZXJDYXNlKCkpKVxuICAgICAgICApIHtcbiAgICAgICAgICByZXR1cm4gY2FsbGJhY2sobnVsbCwgdHJ1ZSk7XG4gICAgICAgIH1cblxuICAgICAgICBjYWxsYmFjayhuZXcgQ29yc0Vycm9yKGBPcmlnaW4gJHtvcmlnaW59IG5vdCBhbGxvd2VkYCkpO1xuICAgICAgfSxcbiAgICAgIGNyZWRlbnRpYWxzOiB0cnVlLFxuICAgICAgbWV0aG9kczogYWxsb3dNZXRob2RzLmpvaW4oXCIsXCIpLFxuICAgIH07XG5cbiAgICB0aGlzLmFwcC5lbmFibGVDb3JzKGNvcnNPcHRpb25zKTtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb25cbiAgICogQXBwbGllcyB0aGUgSGVsbWV0IG1pZGRsZXdhcmUgZm9yIGVuaGFuY2VkIHNlY3VyaXR5LlxuICAgKlxuICAgKiBAc3VtbWFyeVxuICAgKiBEeW5hbWljYWxseSBsb2FkcyB0aGUgYGhlbG1ldGAgcGFja2FnZSBpZiBhdmFpbGFibGUgYW5kIHJlZ2lzdGVycyBpdFxuICAgKiBhcyBtaWRkbGV3YXJlIHRvIGltcHJvdmUgSFRUUCBoZWFkZXIgc2VjdXJpdHkuIElmIG5vdCBpbnN0YWxsZWQsIGxvZ3MgYSB3YXJuaW5nXG4gICAqIGFuZCBjb250aW51ZXMgZXhlY3V0aW9uIHdpdGhvdXQgdGhyb3dpbmcgZXJyb3JzLlxuICAgKlxuICAgKiBAcGFyYW0ge1JlY29yZDxzdHJpbmcsIGFueT59IFtvcHRpb25zXSAtIE9wdGlvbmFsIGNvbmZpZ3VyYXRpb24gcGFzc2VkIHRvIEhlbG1ldC5cbiAgICogQHJldHVybiB7TmVzdEJvb3RzdHJhcGVyfSBSZXR1cm5zIHRoZSBjbGFzcyBmb3IgY2hhaW5pbmcgY29uZmlndXJhdGlvbi5cbiAgICovXG4gIHN0YXRpYyB1c2VIZWxtZXQob3B0aW9ucz86IFJlY29yZDxzdHJpbmcsIGFueT4pIHtcbiAgICB0cnkge1xuICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1yZXF1aXJlLWltcG9ydHNcbiAgICAgIGNvbnN0IGhlbG1ldCA9IHJlcXVpcmUoXCJoZWxtZXRcIik7IC8vIER5bmFtaWMgaW1wb3J0IHRvIGF2b2lkIGhhcmQgZGVwZW5kZW5jeVxuICAgICAgdGhpcy5hcHAudXNlKGhlbG1ldChvcHRpb25zKSk7XG4gICAgICB0aGlzLmxvZ2dlci5sb2coXCJIZWxtZXQgbWlkZGxld2FyZSBlbmFibGVkIHN1Y2Nlc3NmdWxseS5cIik7XG4gICAgfSBjYXRjaCB7XG4gICAgICB0aGlzLmxvZ2dlci53YXJuKFwiSGVsbWV0IG5vdCBpbnN0YWxsZWQuIFNraXBwaW5nIG1pZGRsZXdhcmUuXCIpO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgLyoqXG4gICAqIEBkZXNjcmlwdGlvblxuICAgKiBDb25maWd1cmVzIGFuZCBpbml0aWFsaXplcyBTd2FnZ2VyIFVJIGZvciBBUEkgZG9jdW1lbnRhdGlvbi5cbiAgICpcbiAgICogQHN1bW1hcnlcbiAgICogVXNlcyB0aGUgYFN3YWdnZXJCdWlsZGVyYCB1dGlsaXR5IHRvIGNvbmZpZ3VyZSBBUEkgZG9jdW1lbnRhdGlvblxuICAgKiB3aXRoIGRldGFpbGVkIGN1c3RvbWl6YXRpb24gZm9yIHRpdGxlLCB2ZXJzaW9uLCBwYXRocywgYW5kIGNvbG9ycy5cbiAgICogU3dhZ2dlciBpcyBhdXRvbWF0aWNhbGx5IGV4cG9zZWQgYXQgdGhlIGNvbmZpZ3VyZWQgcGF0aC5cbiAgICpcbiAgICogQHBhcmFtIHtTd2FnZ2VyU2V0dXBPcHRpb25zfSBvcHRpb25zIC0gU3dhZ2dlciBjb25maWd1cmF0aW9uIG9wdGlvbnMuXG4gICAqIEByZXR1cm4ge05lc3RCb290c3RyYXBlcn0gUmV0dXJucyB0aGUgY2xhc3MgZm9yIGNoYWluaW5nIGNvbmZpZ3VyYXRpb24uXG4gICAqL1xuICBzdGF0aWMgc2V0dXBTd2FnZ2VyKG9wdGlvbnM6IFN3YWdnZXJTZXR1cE9wdGlvbnMpIHtcbiAgICBjb25zdCBzd2FnZ2VyID0gbmV3IFN3YWdnZXJCdWlsZGVyKHRoaXMuYXBwLCB7XG4gICAgICB0aXRsZTogb3B0aW9ucy50aXRsZSxcbiAgICAgIGRlc2NyaXB0aW9uOiBvcHRpb25zLmRlc2NyaXB0aW9uLFxuICAgICAgdmVyc2lvbjogb3B0aW9ucy52ZXJzaW9uLFxuICAgICAgcGF0aDogb3B0aW9ucy5wYXRoIHx8IFwiYXBpXCIsXG4gICAgICBwZXJzaXN0QXV0aG9yaXphdGlvbjogb3B0aW9ucy5wZXJzaXN0QXV0aG9yaXphdGlvbiA/PyB0cnVlLFxuICAgICAgYXNzZXRzUGF0aDogb3B0aW9ucy5hc3NldHNQYXRoLFxuICAgICAgZmF2aWNvbkZpbGVQYXRoOiBvcHRpb25zLmZhdmljb25QYXRoLFxuICAgICAgdG9wYmFySWNvbkZpbGVQYXRoOiBvcHRpb25zLnRvcGJhckljb25QYXRoLFxuICAgICAgdG9wYmFyQmdDb2xvcjogb3B0aW9ucy50b3BiYXJCZ0NvbG9yLFxuICAgICAgb3BlbkFwaUpzb25QYXRoOiBvcHRpb25zLm9wZW5BcGlKc29uUGF0aCxcbiAgICAgIG9wZW5BcGlZYW1sUGF0aDogb3B0aW9ucy5vcGVuQXBpWWFtbFBhdGgsXG4gICAgfSk7XG4gICAgc3dhZ2dlci5zZXR1cFN3YWdnZXIoKTtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb25cbiAgICogUmVnaXN0ZXJzIG9uZSBvciBtb3JlIGdsb2JhbCB2YWxpZGF0aW9uIHBpcGVzLlxuICAgKlxuICAgKiBAc3VtbWFyeVxuICAgKiBFbmFibGVzIHJlcXVlc3QgcGF5bG9hZCB2YWxpZGF0aW9uIGFuZCB0cmFuc2Zvcm1hdGlvbiBnbG9iYWxseSBhY3Jvc3NcbiAgICogdGhlIGVudGlyZSBOZXN0SlMgYXBwbGljYXRpb24uIE11bHRpcGxlIHBpcGVzIGNhbiBiZSBjaGFpbmVkIHRvZ2V0aGVyXG4gICAqIGZvciBtb2R1bGFyIGlucHV0IHZhbGlkYXRpb24uXG4gICAqXG4gICAqIEBwYXJhbSB7Li4uUGlwZVRyYW5zZm9ybVtdfSBwaXBlcyAtIFBpcGUgaW5zdGFuY2VzIHRvIHJlZ2lzdGVyIGdsb2JhbGx5LlxuICAgKiBAcmV0dXJuIHtOZXN0Qm9vdHN0cmFwZXJ9IFJldHVybnMgdGhlIGNsYXNzIGZvciBjaGFpbmluZy5cbiAgICovXG4gIHN0YXRpYyB1c2VHbG9iYWxQaXBlcyguLi5waXBlczogUGlwZVRyYW5zZm9ybVtdKSB7XG4gICAgaWYgKHBpcGVzLmxlbmd0aCA+IDApIHRoaXMuYXBwLnVzZUdsb2JhbFBpcGVzKC4uLnBpcGVzKTtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb25cbiAgICogUmVnaXN0ZXJzIG9uZSBvciBtb3JlIGdsb2JhbCBleGNlcHRpb24gZmlsdGVycy5cbiAgICpcbiAgICogQHN1bW1hcnlcbiAgICogSWYgbm8gZmlsdGVycyBhcmUgcHJvdmlkZWQsIGl0IGF1dG9tYXRpY2FsbHkgcmVnaXN0ZXJzIGEgZGVmYXVsdFxuICAgKiBzZXQgb2Ygc3RhbmRhcmQgZXhjZXB0aW9uIGZpbHRlcnMgZm9yIGNvbW1vbiBlcnJvciB0eXBlcyBsaWtlXG4gICAqIGBIdHRwRXhjZXB0aW9uYCwgYFZhbGlkYXRpb25FeGNlcHRpb25gLCBgQ29uZmxpY3RFeGNlcHRpb25gLCBhbmQgb3RoZXJzLlxuICAgKlxuICAgKiBUaGUgZGVmYXVsdCBgRGVjYWZFeGNlcHRpb25GaWx0ZXJgIGlzIGNvbnN0cnVjdGVkIHdpdGggdGhlIGFwcGxpY2F0aW9uJ3NcbiAgICogYE1vZHVsZVJlZmAgc28gaXQgY2FuIHJlc29sdmUgdGhlIHJlcXVlc3Qtc2NvcGVkIGBEZWNhZlJlcXVlc3RDb250ZXh0YCAoYW5kXG4gICAqIGl0cyBjbGllbnQtYm91bmQgbG9nZ2VyKSBmb3IgdGhlIHJlcXVlc3QgdGhhdCB0aHJldywgaW5zdGVhZCBvZiBsb2dnaW5nXG4gICAqIHRocm91Z2ggdGhlIGdlbmVyaWMgZ2xvYmFsIGxvZ2dlci5cbiAgICpcbiAgICogQHBhcmFtIHsuLi5FeGNlcHRpb25GaWx0ZXJbXX0gZmlsdGVycyAtIE9wdGlvbmFsIGZpbHRlcnMgdG8gYXBwbHkgZ2xvYmFsbHkuXG4gICAqL1xuICBzdGF0aWMgdXNlR2xvYmFsRmlsdGVycyguLi5maWx0ZXJzOiBhbnlbXSkge1xuICAgIHRoaXMuYXBwLnVzZUdsb2JhbEZpbHRlcnMoXG4gICAgICAuLi4oZmlsdGVycy5sZW5ndGggPiAwXG4gICAgICAgID8gZmlsdGVyc1xuICAgICAgICA6IFtuZXcgRGVjYWZFeGNlcHRpb25GaWx0ZXIodGhpcy5hcHAuZ2V0KE1vZHVsZVJlZiwgeyBzdHJpY3Q6IGZhbHNlIH0pKV0pXG4gICAgKTtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb25cbiAgICogUmVnaXN0ZXJzIGdsb2JhbCBpbnRlcmNlcHRvcnMgZm9yIHJlcXVlc3QgYW5kIHJlc3BvbnNlIHRyYW5zZm9ybWF0aW9uLlxuICAgKlxuICAgKiBAc3VtbWFyeVxuICAgKiBJbnRlcmNlcHRvcnMgYWxsb3cgYWR2YW5jZWQgcmVxdWVzdC9yZXNwb25zZSBtYW5pcHVsYXRpb24gc3VjaCBhc1xuICAgKiBzZXJpYWxpemF0aW9uLCBsb2dnaW5nLCBvciB0cmFuc2Zvcm1hdGlvbi4gTXVsdGlwbGUgaW50ZXJjZXB0b3JzXG4gICAqIGNhbiBiZSBhZGRlZCBmb3IgbW9kdWxhciBjb25maWd1cmF0aW9uLlxuICAgKlxuICAgKiBAcGFyYW0gey4uLk5lc3RJbnRlcmNlcHRvcltdfSBpbnRlcmNlcHRvcnMgLSBJbnRlcmNlcHRvciBpbnN0YW5jZXMgdG8gcmVnaXN0ZXIuXG4gICAqIEByZXR1cm4ge05lc3RCb290c3RyYXBlcn0gUmV0dXJucyB0aGUgY2xhc3MgZm9yIGNoYWluaW5nIGNvbmZpZ3VyYXRpb24uXG4gICAqL1xuICBzdGF0aWMgdXNlR2xvYmFsSW50ZXJjZXB0b3JzKC4uLmludGVyY2VwdG9yczogTmVzdEludGVyY2VwdG9yW10pIHtcbiAgICBpZiAoaW50ZXJjZXB0b3JzLmxlbmd0aCA+IDApXG4gICAgICB0aGlzLmFwcC51c2VHbG9iYWxJbnRlcmNlcHRvcnMoLi4uaW50ZXJjZXB0b3JzKTtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb25cbiAgICogU3RhcnRzIHRoZSBOZXN0SlMgYXBwbGljYXRpb24gYW5kIGJpbmRzIGl0IHRvIHRoZSBnaXZlbiBwb3J0IGFuZCBob3N0LlxuICAgKlxuICAgKiBAc3VtbWFyeVxuICAgKiBMaXN0ZW5zIG9uIHRoZSBzcGVjaWZpZWQgcG9ydCBhbmQgb3B0aW9uYWxseSBhIGhvc3QuIE9uY2Ugc3RhcnRlZCxcbiAgICogbG9ncyB0aGUgYXBwbGljYXRpb24gVVJMIGZvciBlYXN5IGFjY2Vzcy4gVGhlIHN0YXJ0dXAgcHJvY2VzcyByZXNvbHZlc1xuICAgKiBvbmNlIHRoZSBhcHBsaWNhdGlvbiBpcyBzdWNjZXNzZnVsbHkgcnVubmluZy5cbiAgICpcbiAgICogQHBhcmFtIHtudW1iZXJ9IFtwb3J0PTMwMDBdIC0gUG9ydCBudW1iZXIgdG8gbGlzdGVuIG9uLlxuICAgKiBAcGFyYW0ge3N0cmluZ30gW2hvc3RdIC0gT3B0aW9uYWwgaG9zdCBvciBJUCBhZGRyZXNzIHRvIGJpbmQgdG8uXG4gICAqIEBwYXJhbSB7Ym9vbGVhbn0gW2xvZz10cnVlXSAtIFdoZXRoZXIgdG8gbG9nIHRoZSBhcHBsaWNhdGlvbiBVUkwgdXBvbiBzdGFydHVwLlxuICAgKiBAcmV0dXJuIHtQcm9taXNlPHZvaWQ+fSBSZXNvbHZlcyBvbmNlIHRoZSBhcHBsaWNhdGlvbiBzdGFydHMgc3VjY2Vzc2Z1bGx5LlxuICAgKi9cbiAgc3RhdGljIGFzeW5jIHN0YXJ0KFxuICAgIHBvcnQ6IG51bWJlciA9IE51bWJlcihwcm9jZXNzLmVudi5QT1JUKSB8fCAzMDAwLFxuICAgIGhvc3Q6IHN0cmluZyB8IHVuZGVmaW5lZCA9IHVuZGVmaW5lZCxcbiAgICBsb2c6IGJvb2xlYW4gPSB0cnVlXG4gICkge1xuICAgIHRoaXMuYXBwLmxpc3Rlbihwb3J0LCBob3N0IGFzIGFueSkudGhlbihhc3luYyAoKSA9PiB7XG4gICAgICBpZiAobG9nKSB7XG4gICAgICAgIGNvbnN0IHVybCA9IGF3YWl0IHRoaXMuYXBwLmdldFVybCgpO1xuICAgICAgICB0aGlzLmxvZ2dlci5sb2coYPCfmoAgQXBwbGljYXRpb24gaXMgcnVubmluZyBhdDogJHt1cmx9YCk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cbn1cbiJdfQ==
275
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiTmVzdEJvb3RzdHJhcGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiTmVzdEJvb3RzdHJhcGVyLmpzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLDJDQUF5QztBQUN6Qyx1Q0FBeUM7QUFDekMsb0RBQTZEO0FBQzdELGlEQUFvRDtBQUNwRCxnREFBOEM7QUFDOUM7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBK0NHO0FBQ0gsTUFBYSxlQUFlO0lBQ3hCOzs7Ozs7Ozs7T0FTRztJQUNILE1BQU0sS0FBSyxNQUFNO1FBQ2IsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQztZQUNoQixXQUFXO1lBQ1gsSUFBSSxDQUFDLE9BQU8sR0FBRyxJQUFJLGVBQU0sQ0FBQyxlQUFlLENBQUMsQ0FBQztRQUMvQyxDQUFDO1FBQ0QsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDO0lBQ3hCLENBQUM7SUFDRDs7Ozs7Ozs7OztPQVVHO0lBQ0gsTUFBTSxDQUFDLFVBQVUsQ0FBQyxHQUFHO1FBQ2pCLElBQUksQ0FBQyxHQUFHLEdBQUcsR0FBRyxDQUFDO1FBQ2YsT0FBTyxJQUFJLENBQUM7SUFDaEIsQ0FBQztJQUNEOzs7Ozs7Ozs7OztPQVdHO0lBQ0gsTUFBTSxDQUFDLFlBQVksQ0FBQyxZQUFZO1FBQzVCLElBQUksQ0FBQyxPQUFPLEdBQUcsWUFBWSxJQUFJLElBQUksZUFBTSxDQUFDLGVBQWUsQ0FBQyxDQUFDO1FBQzNELElBQUksQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUNqQyxPQUFPLElBQUksQ0FBQztJQUNoQixDQUFDO0lBQ0Q7Ozs7Ozs7Ozs7Ozs7T0FhRztJQUNILE1BQU0sQ0FBQyxVQUFVLENBQUMsT0FBTyxHQUFHLEVBQUUsRUFBRSxZQUFZLEdBQUcsQ0FBQyxLQUFLLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxRQUFRLENBQUM7UUFD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R0FBRyxDQUFDLGlDQUFpQyxHQUFHLEVBQUUsQ0FBQyxDQUFDO1lBQzVELENBQUM7UUFDTCxDQUFDLENBQUMsQ0FBQztJQUNQLENBQUM7Q0FDSjtBQXZORCwwQ0F1TkM7QUFDRCwweHBCQUEweHBCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTG9nZ2VyLCB9IGZyb20gXCJAbmVzdGpzL2NvbW1vblwiO1xuaW1wb3J0IHsgTW9kdWxlUmVmIH0gZnJvbSBcIkBuZXN0anMvY29yZVwiO1xuaW1wb3J0IHsgRGVjYWZFeGNlcHRpb25GaWx0ZXIgfSBmcm9tIFwiLi9leGNlcHRpb25zL2luZGV4LmpzXCI7XG5pbXBvcnQgeyBTd2FnZ2VyQnVpbGRlciB9IGZyb20gXCIuL29wZW5hcGkvaW5kZXguanNcIjtcbmltcG9ydCB7IENvcnNFcnJvciB9IGZyb20gXCIuL2Vycm9ycy9pbmRleC5qc1wiO1xuLyoqXG4gKiBAZGVzY3JpcHRpb25cbiAqIEEgZmx1ZW50LCBzdGF0aWMgYm9vdHN0cmFwIGNsYXNzIGZvciBpbml0aWFsaXppbmcgYW5kIGNvbmZpZ3VyaW5nIGEgTmVzdEpTIGFwcGxpY2F0aW9uLlxuICpcbiAqIEBzdW1tYXJ5XG4gKiBUaGUgYE5lc3RCb290c3RyYXBlcmAgY2xhc3MgcHJvdmlkZXMgYSBjaGFpbmFibGUgQVBJIGZvciBjb25maWd1cmluZ1xuICogYSBOZXN0SlMgYXBwbGljYXRpb24gaW5zdGFuY2UuIEl0IGluY2x1ZGVzIGJ1aWx0LWluIG1ldGhvZHMgZm9yIGVuYWJsaW5nXG4gKiBDT1JTLCBIZWxtZXQgc2VjdXJpdHksIFN3YWdnZXIgZG9jdW1lbnRhdGlvbiwgZ2xvYmFsIHBpcGVzLCBmaWx0ZXJzLFxuICogaW50ZXJjZXB0b3JzLCBhbmQgc3RhcnRpbmcgdGhlIHNlcnZlci5cbiAqXG4gKiBUaGlzIGNsYXNzIHByb21vdGVzIGNvbnNpc3RlbmN5IGFuZCByZWR1Y2VzIHJlcGV0aXRpdmUgc2V0dXAgY29kZVxuICogYWNyb3NzIG11bHRpcGxlIE5lc3RKUyBwcm9qZWN0cy5cbiAqXG4gKiBAZXhhbXBsZVxuICogYGBgdHNcbiAqIGltcG9ydCB7IE5lc3RGYWN0b3J5IH0gZnJvbSBcIkBuZXN0anMvY29yZVwiO1xuICogaW1wb3J0IHsgQXBwTW9kdWxlIH0gZnJvbSBcIi4vYXBwLm1vZHVsZVwiO1xuICogaW1wb3J0IHsgTXlMb2dnZXIgfSBmcm9tIFwiLi9NeUxvZ2dlclwiO1xuICogaW1wb3J0IHsgTmVzdEJvb3RzdHJhcGVyIH0gZnJvbSBcIkBkZWNhZi10cy9mb3ItbmVzdFwiO1xuICpcbiAqIGFzeW5jIGZ1bmN0aW9uIGJvb3RzdHJhcCgpIHtcbiAqICAgY29uc3QgYXBwID0gYXdhaXQgTmVzdEZhY3RvcnkuY3JlYXRlKEFwcE1vZHVsZSk7XG4gKlxuICogICBhd2FpdCBOZXN0Qm9vdHN0cmFwZXJcbiAqICAgICAuaW5pdGlhbGl6ZShhcHApXG4gKiAgICAgLmVuYWJsZUxvZ2dlcihuZXcgTXlMb2dnZXIoKSlcbiAqICAgICAuZW5hYmxlQ29ycyhbXCJodHRwOi8vbG9jYWxob3N0OjQyMDBcIl0pXG4gKiAgICAgLnVzZUhlbG1ldCgpXG4gKiAgICAgLnNldHVwU3dhZ2dlcih7XG4gKiAgICAgICB0aXRsZTogXCJPcGVuQVBJIGJ5IFRyYWRlTWFya+KEolwiLFxuICogICAgICAgZGVzY3JpcHRpb246IFwiVHJhZGVNYXJr4oSiIEFQSSBkb2N1bWVudGF0aW9uXCIsXG4gKiAgICAgICB2ZXJzaW9uOiBcIjEuMC4wXCIsXG4gKiAgICAgICBwYXRoOiBcImFwaVwiLFxuICogICAgICAgcGVyc2lzdEF1dGhvcml6YXRpb246IHRydWUsXG4gKiAgICAgICB0b3BiYXJCZ0NvbG9yOiBcIiMyQzNFNTBcIixcbiAqICAgICAgIHRvcGJhckljb25QYXRoOiBcIi9hc3NldHMvbG9nby5zdmdcIixcbiAqICAgICAgIGZhdmljb25QYXRoOiBcIi9hc3NldHMvZmF2aWNvbi5pY29cIlxuICogICAgIH0pXG4gKiAgICAgLnVzZUdsb2JhbEZpbHRlcnMoKVxuICogICAgIC51c2VHbG9iYWxQaXBlcyguLi4pXG4gKiAgICAgLnVzZUdsb2JhbEludGVyY2VwdG9ycyguLi4pXG4gKiAgICAgLnN0YXJ0KDMwMDApO1xuICogfVxuICpcbiAqIGJvb3RzdHJhcCgpO1xuICogYGBgXG4gKiBAY2xhc3NcbiAqL1xuZXhwb3J0IGNsYXNzIE5lc3RCb290c3RyYXBlciB7XG4gICAgLyoqXG4gICAgICogQGRlc2NyaXB0aW9uXG4gICAgICogUmV0dXJucyB0aGUgY3VycmVudCBsb2dnZXIgaW5zdGFuY2UsIGNyZWF0aW5nIGEgZGVmYXVsdCBvbmUgaWYgbm90IHNldC5cbiAgICAgKlxuICAgICAqIEBzdW1tYXJ5XG4gICAgICogRW5zdXJlcyB0aGF0IGEgdmFsaWQgYExvZ2dlcmAgaW5zdGFuY2UgaXMgYWx3YXlzIGF2YWlsYWJsZVxuICAgICAqIGZvciBsb2dnaW5nIGJvb3RzdHJhcC1yZWxhdGVkIG1lc3NhZ2VzLlxuICAgICAqXG4gICAgICogQHJldHVybiB7TG9nZ2VyfSBUaGUgYWN0aXZlIGxvZ2dlciBpbnN0YW5jZS5cbiAgICAgKi9cbiAgICBzdGF0aWMgZ2V0IGxvZ2dlcigpIHtcbiAgICAgICAgaWYgKCF0aGlzLl9sb2dnZXIpIHtcbiAgICAgICAgICAgIC8vIGZhbGxiYWNrXG4gICAgICAgICAgICB0aGlzLl9sb2dnZXIgPSBuZXcgTG9nZ2VyKFwiTmVzdEJvb3RzdHJhcFwiKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdGhpcy5fbG9nZ2VyO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBAZGVzY3JpcHRpb25cbiAgICAgKiBJbml0aWFsaXplcyB0aGUgYm9vdHN0cmFwcGVyIHdpdGggYSBnaXZlbiBOZXN0SlMgYXBwbGljYXRpb24uXG4gICAgICpcbiAgICAgKiBAc3VtbWFyeVxuICAgICAqIEJpbmRzIHRoZSBwcm92aWRlZCBOZXN0SlMgYXBwIGluc3RhbmNlIHRvIHRoZSBib290c3RyYXBwZXIsIGVuYWJsaW5nXG4gICAgICogY2hhaW5lZCBjb25maWd1cmF0aW9uIG1ldGhvZHMuXG4gICAgICpcbiAgICAgKiBAcGFyYW0ge0lOZXN0QXBwbGljYXRpb259IGFwcCAtIFRoZSBOZXN0SlMgYXBwbGljYXRpb24gaW5zdGFuY2UgdG8gaW5pdGlhbGl6ZS5cbiAgICAgKiBAcmV0dXJuIHtOZXN0Qm9vdHN0cmFwZXJ9IFJldHVybnMgdGhlIGNsYXNzIGZvciBjaGFpbmluZyBjb25maWd1cmF0aW9uIG1ldGhvZHMuXG4gICAgICovXG4gICAgc3RhdGljIGluaXRpYWxpemUoYXBwKSB7XG4gICAgICAgIHRoaXMuYXBwID0gYXBwO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG4gICAgLyoqXG4gICAgICogQGRlc2NyaXB0aW9uXG4gICAgICogRW5hYmxlcyBvciByZXBsYWNlcyB0aGUgZ2xvYmFsIGxvZ2dlciBmb3IgdGhlIE5lc3RKUyBhcHBsaWNhdGlvbi5cbiAgICAgKlxuICAgICAqIEBzdW1tYXJ5XG4gICAgICogSWYgYSBjdXN0b20gbG9nZ2VyIGlzIHByb3ZpZGVkLCBpdCByZXBsYWNlcyB0aGUgZGVmYXVsdCBsb2dnZXIuIE90aGVyd2lzZSxcbiAgICAgKiBhIG5ldyBsb2dnZXIgbmFtZWQgYFwiTmVzdEJvb3RzdHJhcFwiYCBpcyB1c2VkLiBUaGlzIGxvZ2dlciBpcyBhbHNvIHJlZ2lzdGVyZWRcbiAgICAgKiB3aXRoIHRoZSBOZXN0SlMgYXBwbGljYXRpb24uXG4gICAgICpcbiAgICAgKiBAcGFyYW0ge0xvZ2dlcn0gW2N1c3RvbUxvZ2dlcl0gLSBPcHRpb25hbCBjdXN0b20gbG9nZ2VyIGluc3RhbmNlLlxuICAgICAqIEByZXR1cm4ge05lc3RCb290c3RyYXBlcn0gUmV0dXJucyB0aGUgY2xhc3MgZm9yIGNoYWluaW5nLlxuICAgICAqL1xuICAgIHN0YXRpYyBlbmFibGVMb2dnZXIoY3VzdG9tTG9nZ2VyKSB7XG4gICAgICAgIHRoaXMuX2xvZ2dlciA9IGN1c3RvbUxvZ2dlciB8fCBuZXcgTG9nZ2VyKFwiTmVzdEJvb3RzdHJhcFwiKTtcbiAgICAgICAgdGhpcy5hcHAudXNlTG9nZ2VyKHRoaXMuX2xvZ2dlcik7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBAZGVzY3JpcHRpb25cbiAgICAgKiBFbmFibGVzIENyb3NzLU9yaWdpbiBSZXNvdXJjZSBTaGFyaW5nIChDT1JTKSBmb3IgdGhlIGFwcGxpY2F0aW9uLlxuICAgICAqXG4gICAgICogQHN1bW1hcnlcbiAgICAgKiBBbGxvd3MgZGVmaW5pbmcgZWl0aGVyIGEgd2lsZGNhcmQgb3JpZ2luIChgXCIqXCJgKSBvciBhIGxpc3Qgb2YgYWxsb3dlZCBvcmlnaW5zLlxuICAgICAqIEF1dG9tYXRpY2FsbHkgYWNjZXB0cyBsb2NhbCBkZXZlbG9wbWVudCByZXF1ZXN0cyBhbmQgdGhvc2Ugd2l0aG91dCBvcmlnaW4gaGVhZGVycy5cbiAgICAgKiBUaHJvd3MgYSBgQ29yc0Vycm9yYCBmb3IgdW5hdXRob3JpemVkIG9yaWdpbnMuXG4gICAgICpcbiAgICAgKiBAcGFyYW0geycqJyB8IHN0cmluZ1tdfSBbb3JpZ2lucz1bXV0gLSBMaXN0IG9mIGFsbG93ZWQgb3JpZ2lucyBvciBgXCIqXCJgIHRvIGFsbG93IGFsbC5cbiAgICAgKiBAcGFyYW0ge3N0cmluZ1tdfSBbYWxsb3dNZXRob2RzPVsnR0VUJywgJ1BPU1QnLCAnUFVUJywgJ0RFTEVURSddXSAtIEFsbG93ZWQgSFRUUCBtZXRob2RzLlxuICAgICAqIEByZXR1cm4ge05lc3RCb290c3RyYXBlcn0gUmV0dXJucyB0aGUgY2xhc3MgZm9yIGNoYWluaW5nIGNvbmZpZ3VyYXRpb24uXG4gICAgICpcbiAgICAgKi9cbiAgICBzdGF0aWMgZW5hYmxlQ29ycyhvcmlnaW5zID0gW10sIGFsbG93TWV0aG9kcyA9IFtcIkdFVFwiLCBcIlBPU1RcIiwgXCJQVVRcIiwgXCJERUxFVEVcIl0pIHtcbiAgICAgICAgY29uc3QgYWxsb3dlZE9yaWdpbnMgPSBvcmlnaW5zID09PSBcIipcIiA/IFwiKlwiIDogb3JpZ2lucy5tYXAoKG8pID0+IG8udHJpbSgpLnRvTG93ZXJDYXNlKCkpO1xuICAgICAgICBjb25zdCBjb3JzT3B0aW9ucyA9IHtcbiAgICAgICAgICAgIG9yaWdpbjogKG9yaWdpbiwgY2FsbGJhY2spID0+IHtcbiAgICAgICAgICAgICAgICAvLyBBbGxvdyByZXF1ZXN0IHdpdGhvdXQgb3JpZ2luLi4uXG4gICAgICAgICAgICAgICAgaWYgKCFvcmlnaW4pXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBjYWxsYmFjayhudWxsLCB0cnVlKTtcbiAgICAgICAgICAgICAgICBpZiAoYWxsb3dlZE9yaWdpbnMgPT09IFwiKlwiIHx8XG4gICAgICAgICAgICAgICAgICAgIChBcnJheS5pc0FycmF5KGFsbG93ZWRPcmlnaW5zKSAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgYWxsb3dlZE9yaWdpbnMuaW5jbHVkZXMob3JpZ2luLnRvTG93ZXJDYXNlKCkpKSkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gY2FsbGJhY2sobnVsbCwgdHJ1ZSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGNhbGxiYWNrKG5ldyBDb3JzRXJyb3IoYE9yaWdpbiAke29yaWdpbn0gbm90IGFsbG93ZWRgKSk7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgY3JlZGVudGlhbHM6IHRydWUsXG4gICAgICAgICAgICBtZXRob2RzOiBhbGxvd01ldGhvZHMuam9pbihcIixcIiksXG4gICAgICAgIH07XG4gICAgICAgIHRoaXMuYXBwLmVuYWJsZUNvcnMoY29yc09wdGlvbnMpO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG4gICAgLyoqXG4gICAgICogQGRlc2NyaXB0aW9uXG4gICAgICogQXBwbGllcyB0aGUgSGVsbWV0IG1pZGRsZXdhcmUgZm9yIGVuaGFuY2VkIHNlY3VyaXR5LlxuICAgICAqXG4gICAgICogQHN1bW1hcnlcbiAgICAgKiBEeW5hbWljYWxseSBsb2FkcyB0aGUgYGhlbG1ldGAgcGFja2FnZSBpZiBhdmFpbGFibGUgYW5kIHJlZ2lzdGVycyBpdFxuICAgICAqIGFzIG1pZGRsZXdhcmUgdG8gaW1wcm92ZSBIVFRQIGhlYWRlciBzZWN1cml0eS4gSWYgbm90IGluc3RhbGxlZCwgbG9ncyBhIHdhcm5pbmdcbiAgICAgKiBhbmQgY29udGludWVzIGV4ZWN1dGlvbiB3aXRob3V0IHRocm93aW5nIGVycm9ycy5cbiAgICAgKlxuICAgICAqIEBwYXJhbSB7UmVjb3JkPHN0cmluZywgYW55Pn0gW29wdGlvbnNdIC0gT3B0aW9uYWwgY29uZmlndXJhdGlvbiBwYXNzZWQgdG8gSGVsbWV0LlxuICAgICAqIEByZXR1cm4ge05lc3RCb290c3RyYXBlcn0gUmV0dXJucyB0aGUgY2xhc3MgZm9yIGNoYWluaW5nIGNvbmZpZ3VyYXRpb24uXG4gICAgICovXG4gICAgc3RhdGljIHVzZUhlbG1ldChvcHRpb25zKSB7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXJlcXVpcmUtaW1wb3J0c1xuICAgICAgICAgICAgY29uc3QgaGVsbWV0ID0gcmVxdWlyZShcImhlbG1ldFwiKTsgLy8gRHluYW1pYyBpbXBvcnQgdG8gYXZvaWQgaGFyZCBkZXBlbmRlbmN5XG4gICAgICAgICAgICB0aGlzLmFwcC51c2UoaGVsbWV0KG9wdGlvbnMpKTtcbiAgICAgICAgICAgIHRoaXMubG9nZ2VyLmxvZyhcIkhlbG1ldCBtaWRkbGV3YXJlIGVuYWJsZWQgc3VjY2Vzc2Z1bGx5LlwiKTtcbiAgICAgICAgfVxuICAgICAgICBjYXRjaCB7XG4gICAgICAgICAgICB0aGlzLmxvZ2dlci53YXJuKFwiSGVsbWV0IG5vdCBpbnN0YWxsZWQuIFNraXBwaW5nIG1pZGRsZXdhcmUuXCIpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBAZGVzY3JpcHRpb25cbiAgICAgKiBDb25maWd1cmVzIGFuZCBpbml0aWFsaXplcyBTd2FnZ2VyIFVJIGZvciBBUEkgZG9jdW1lbnRhdGlvbi5cbiAgICAgKlxuICAgICAqIEBzdW1tYXJ5XG4gICAgICogVXNlcyB0aGUgYFN3YWdnZXJCdWlsZGVyYCB1dGlsaXR5IHRvIGNvbmZpZ3VyZSBBUEkgZG9jdW1lbnRhdGlvblxuICAgICAqIHdpdGggZGV0YWlsZWQgY3VzdG9taXphdGlvbiBmb3IgdGl0bGUsIHZlcnNpb24sIHBhdGhzLCBhbmQgY29sb3JzLlxuICAgICAqIFN3YWdnZXIgaXMgYXV0b21hdGljYWxseSBleHBvc2VkIGF0IHRoZSBjb25maWd1cmVkIHBhdGguXG4gICAgICpcbiAgICAgKiBAcGFyYW0ge1N3YWdnZXJTZXR1cE9wdGlvbnN9IG9wdGlvbnMgLSBTd2FnZ2VyIGNvbmZpZ3VyYXRpb24gb3B0aW9ucy5cbiAgICAgKiBAcmV0dXJuIHtOZXN0Qm9vdHN0cmFwZXJ9IFJldHVybnMgdGhlIGNsYXNzIGZvciBjaGFpbmluZyBjb25maWd1cmF0aW9uLlxuICAgICAqL1xuICAgIHN0YXRpYyBzZXR1cFN3YWdnZXIob3B0aW9ucykge1xuICAgICAgICBjb25zdCBzd2FnZ2VyID0gbmV3IFN3YWdnZXJCdWlsZGVyKHRoaXMuYXBwLCB7XG4gICAgICAgICAgICB0aXRsZTogb3B0aW9ucy50aXRsZSxcbiAgICAgICAgICAgIGRlc2NyaXB0aW9uOiBvcHRpb25zLmRlc2NyaXB0aW9uLFxuICAgICAgICAgICAgdmVyc2lvbjogb3B0aW9ucy52ZXJzaW9uLFxuICAgICAgICAgICAgcGF0aDogb3B0aW9ucy5wYXRoIHx8IFwiYXBpXCIsXG4gICAgICAgICAgICBwZXJzaXN0QXV0aG9yaXphdGlvbjogb3B0aW9ucy5wZXJzaXN0QXV0aG9yaXphdGlvbiA/PyB0cnVlLFxuICAgICAgICAgICAgYXNzZXRzUGF0aDogb3B0aW9ucy5hc3NldHNQYXRoLFxuICAgICAgICAgICAgZmF2aWNvbkZpbGVQYXRoOiBvcHRpb25zLmZhdmljb25QYXRoLFxuICAgICAgICAgICAgdG9wYmFySWNvbkZpbGVQYXRoOiBvcHRpb25zLnRvcGJhckljb25QYXRoLFxuICAgICAgICAgICAgdG9wYmFyQmdDb2xvcjogb3B0aW9ucy50b3BiYXJCZ0NvbG9yLFxuICAgICAgICAgICAgb3BlbkFwaUpzb25QYXRoOiBvcHRpb25zLm9wZW5BcGlKc29uUGF0aCxcbiAgICAgICAgICAgIG9wZW5BcGlZYW1sUGF0aDogb3B0aW9ucy5vcGVuQXBpWWFtbFBhdGgsXG4gICAgICAgIH0pO1xuICAgICAgICBzd2FnZ2VyLnNldHVwU3dhZ2dlcigpO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG4gICAgLyoqXG4gICAgICogQGRlc2NyaXB0aW9uXG4gICAgICogUmVnaXN0ZXJzIG9uZSBvciBtb3JlIGdsb2JhbCB2YWxpZGF0aW9uIHBpcGVzLlxuICAgICAqXG4gICAgICogQHN1bW1hcnlcbiAgICAgKiBFbmFibGVzIHJlcXVlc3QgcGF5bG9hZCB2YWxpZGF0aW9uIGFuZCB0cmFuc2Zvcm1hdGlvbiBnbG9iYWxseSBhY3Jvc3NcbiAgICAgKiB0aGUgZW50aXJlIE5lc3RKUyBhcHBsaWNhdGlvbi4gTXVsdGlwbGUgcGlwZXMgY2FuIGJlIGNoYWluZWQgdG9nZXRoZXJcbiAgICAgKiBmb3IgbW9kdWxhciBpbnB1dCB2YWxpZGF0aW9uLlxuICAgICAqXG4gICAgICogQHBhcmFtIHsuLi5QaXBlVHJhbnNmb3JtW119IHBpcGVzIC0gUGlwZSBpbnN0YW5jZXMgdG8gcmVnaXN0ZXIgZ2xvYmFsbHkuXG4gICAgICogQHJldHVybiB7TmVzdEJvb3RzdHJhcGVyfSBSZXR1cm5zIHRoZSBjbGFzcyBmb3IgY2hhaW5pbmcuXG4gICAgICovXG4gICAgc3RhdGljIHVzZUdsb2JhbFBpcGVzKC4uLnBpcGVzKSB7XG4gICAgICAgIGlmIChwaXBlcy5sZW5ndGggPiAwKVxuICAgICAgICAgICAgdGhpcy5hcHAudXNlR2xvYmFsUGlwZXMoLi4ucGlwZXMpO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG4gICAgLyoqXG4gICAgICogQGRlc2NyaXB0aW9uXG4gICAgICogUmVnaXN0ZXJzIG9uZSBvciBtb3JlIGdsb2JhbCBleGNlcHRpb24gZmlsdGVycy5cbiAgICAgKlxuICAgICAqIEBzdW1tYXJ5XG4gICAgICogSWYgbm8gZmlsdGVycyBhcmUgcHJvdmlkZWQsIGl0IGF1dG9tYXRpY2FsbHkgcmVnaXN0ZXJzIGEgZGVmYXVsdFxuICAgICAqIHNldCBvZiBzdGFuZGFyZCBleGNlcHRpb24gZmlsdGVycyBmb3IgY29tbW9uIGVycm9yIHR5cGVzIGxpa2VcbiAgICAgKiBgSHR0cEV4Y2VwdGlvbmAsIGBWYWxpZGF0aW9uRXhjZXB0aW9uYCwgYENvbmZsaWN0RXhjZXB0aW9uYCwgYW5kIG90aGVycy5cbiAgICAgKlxuICAgICAqIFRoZSBkZWZhdWx0IGBEZWNhZkV4Y2VwdGlvbkZpbHRlcmAgaXMgY29uc3RydWN0ZWQgd2l0aCB0aGUgYXBwbGljYXRpb24nc1xuICAgICAqIGBNb2R1bGVSZWZgIHNvIGl0IGNhbiByZXNvbHZlIHRoZSByZXF1ZXN0LXNjb3BlZCBgRGVjYWZSZXF1ZXN0Q29udGV4dGAgKGFuZFxuICAgICAqIGl0cyBjbGllbnQtYm91bmQgbG9nZ2VyKSBmb3IgdGhlIHJlcXVlc3QgdGhhdCB0aHJldywgaW5zdGVhZCBvZiBsb2dnaW5nXG4gICAgICogdGhyb3VnaCB0aGUgZ2VuZXJpYyBnbG9iYWwgbG9nZ2VyLlxuICAgICAqXG4gICAgICogQHBhcmFtIHsuLi5FeGNlcHRpb25GaWx0ZXJbXX0gZmlsdGVycyAtIE9wdGlvbmFsIGZpbHRlcnMgdG8gYXBwbHkgZ2xvYmFsbHkuXG4gICAgICovXG4gICAgc3RhdGljIHVzZUdsb2JhbEZpbHRlcnMoLi4uZmlsdGVycykge1xuICAgICAgICB0aGlzLmFwcC51c2VHbG9iYWxGaWx0ZXJzKC4uLihmaWx0ZXJzLmxlbmd0aCA+IDBcbiAgICAgICAgICAgID8gZmlsdGVyc1xuICAgICAgICAgICAgOiBbbmV3IERlY2FmRXhjZXB0aW9uRmlsdGVyKHRoaXMuYXBwLmdldChNb2R1bGVSZWYsIHsgc3RyaWN0OiBmYWxzZSB9KSldKSk7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBAZGVzY3JpcHRpb25cbiAgICAgKiBSZWdpc3RlcnMgZ2xvYmFsIGludGVyY2VwdG9ycyBmb3IgcmVxdWVzdCBhbmQgcmVzcG9uc2UgdHJhbnNmb3JtYXRpb24uXG4gICAgICpcbiAgICAgKiBAc3VtbWFyeVxuICAgICAqIEludGVyY2VwdG9ycyBhbGxvdyBhZHZhbmNlZCByZXF1ZXN0L3Jlc3BvbnNlIG1hbmlwdWxhdGlvbiBzdWNoIGFzXG4gICAgICogc2VyaWFsaXphdGlvbiwgbG9nZ2luZywgb3IgdHJhbnNmb3JtYXRpb24uIE11bHRpcGxlIGludGVyY2VwdG9yc1xuICAgICAqIGNhbiBiZSBhZGRlZCBmb3IgbW9kdWxhciBjb25maWd1cmF0aW9uLlxuICAgICAqXG4gICAgICogQHBhcmFtIHsuLi5OZXN0SW50ZXJjZXB0b3JbXX0gaW50ZXJjZXB0b3JzIC0gSW50ZXJjZXB0b3IgaW5zdGFuY2VzIHRvIHJlZ2lzdGVyLlxuICAgICAqIEByZXR1cm4ge05lc3RCb290c3RyYXBlcn0gUmV0dXJucyB0aGUgY2xhc3MgZm9yIGNoYWluaW5nIGNvbmZpZ3VyYXRpb24uXG4gICAgICovXG4gICAgc3RhdGljIHVzZUdsb2JhbEludGVyY2VwdG9ycyguLi5pbnRlcmNlcHRvcnMpIHtcbiAgICAgICAgaWYgKGludGVyY2VwdG9ycy5sZW5ndGggPiAwKVxuICAgICAgICAgICAgdGhpcy5hcHAudXNlR2xvYmFsSW50ZXJjZXB0b3JzKC4uLmludGVyY2VwdG9ycyk7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBAZGVzY3JpcHRpb25cbiAgICAgKiBTdGFydHMgdGhlIE5lc3RKUyBhcHBsaWNhdGlvbiBhbmQgYmluZHMgaXQgdG8gdGhlIGdpdmVuIHBvcnQgYW5kIGhvc3QuXG4gICAgICpcbiAgICAgKiBAc3VtbWFyeVxuICAgICAqIExpc3RlbnMgb24gdGhlIHNwZWNpZmllZCBwb3J0IGFuZCBvcHRpb25hbGx5IGEgaG9zdC4gT25jZSBzdGFydGVkLFxuICAgICAqIGxvZ3MgdGhlIGFwcGxpY2F0aW9uIFVSTCBmb3IgZWFzeSBhY2Nlc3MuIFRoZSBzdGFydHVwIHByb2Nlc3MgcmVzb2x2ZXNcbiAgICAgKiBvbmNlIHRoZSBhcHBsaWNhdGlvbiBpcyBzdWNjZXNzZnVsbHkgcnVubmluZy5cbiAgICAgKlxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSBbcG9ydD0zMDAwXSAtIFBvcnQgbnVtYmVyIHRvIGxpc3RlbiBvbi5cbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gW2hvc3RdIC0gT3B0aW9uYWwgaG9zdCBvciBJUCBhZGRyZXNzIHRvIGJpbmQgdG8uXG4gICAgICogQHBhcmFtIHtib29sZWFufSBbbG9nPXRydWVdIC0gV2hldGhlciB0byBsb2cgdGhlIGFwcGxpY2F0aW9uIFVSTCB1cG9uIHN0YXJ0dXAuXG4gICAgICogQHJldHVybiB7UHJvbWlzZTx2b2lkPn0gUmVzb2x2ZXMgb25jZSB0aGUgYXBwbGljYXRpb24gc3RhcnRzIHN1Y2Nlc3NmdWxseS5cbiAgICAgKi9cbiAgICBzdGF0aWMgYXN5bmMgc3RhcnQocG9ydCA9IE51bWJlcihwcm9jZXNzLmVudi5QT1JUKSB8fCAzMDAwLCBob3N0ID0gdW5kZWZpbmVkLCBsb2cgPSB0cnVlKSB7XG4gICAgICAgIHRoaXMuYXBwLmxpc3Rlbihwb3J0LCBob3N0KS50aGVuKGFzeW5jICgpID0+IHtcbiAgICAgICAgICAgIGlmIChsb2cpIHtcbiAgICAgICAgICAgICAgICBjb25zdCB1cmwgPSBhd2FpdCB0aGlzLmFwcC5nZXRVcmwoKTtcbiAgICAgICAgICAgICAgICB0aGlzLmxvZ2dlci5sb2coYPCfmoAgQXBwbGljYXRpb24gaXMgcnVubmluZyBhdDogJHt1cmx9YCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH1cbn1cbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWRhdGE6YXBwbGljYXRpb24vanNvbjtiYXNlNjQsZXlKMlpYSnphVzl1SWpvekxDSm1hV3hsSWpvaVRtVnpkRUp2YjNSemRISmhjR1Z5TG1weklpd2ljMjkxY21ObFVtOXZkQ0k2SWlJc0luTnZkWEpqWlhNaU9sc2lMaTR2TGk0dkxpNHZjM0pqTDJaaFkzUnZjbmt2VG1WemRFSnZiM1J6ZEhKaGNHVnlMblJ6SWwwc0ltNWhiV1Z6SWpwYlhTd2liV0Z3Y0dsdVozTWlPaUpCUVVGQkxFOUJRVThzUlVGRlRDeE5RVUZOTEVkQlIxQXNUVUZCVFN4blFrRkJaMElzUTBGQlF6dEJRVU40UWl4UFFVRlBMRVZCUVVVc1UwRkJVeXhGUVVGRkxFMUJRVTBzWTBGQll5eERRVUZETzBGQlEzcERMRTlCUVU4c1JVRkJSU3h2UWtGQmIwSXNSVUZCUlN3NFFrRkJjVUk3UVVGRGNFUXNUMEZCVHl4RlFVRkZMR05CUVdNc1JVRkJSU3d5UWtGQmEwSTdRVUZGTTBNc1QwRkJUeXhGUVVGRkxGTkJRVk1zUlVGQlJTd3dRa0ZCYVVJN1FVRTBRM0pET3pzN096czdPenM3T3pzN096czdPenM3T3pzN096czdPenM3T3pzN096czdPenM3T3pzN096czdPenM3T3p0SFFTdERSenRCUVVOSUxFMUJRVTBzVDBGQlR5eGxRVUZsTzBsQlNURkNPenM3T3pzN096czdUMEZUUnp0SlFVTkxMRTFCUVUwc1MwRkJTeXhOUVVGTk8xRkJRM1pDTEVsQlFVa3NRMEZCUXl4SlFVRkpMRU5CUVVNc1QwRkJUeXhGUVVGRkxFTkJRVU03V1VGRGJFSXNWMEZCVnp0WlFVTllMRWxCUVVrc1EwRkJReXhQUVVGUExFZEJRVWNzU1VGQlNTeE5RVUZOTEVOQlFVTXNaVUZCWlN4RFFVRkRMRU5CUVVNN1VVRkROME1zUTBGQlF6dFJRVU5FTEU5QlFVOHNTVUZCU1N4RFFVRkRMRTlCUVU4c1EwRkJRenRKUVVOMFFpeERRVUZETzBsQlJVUTdPenM3T3pzN096czdUMEZWUnp0SlFVTklMRTFCUVUwc1EwRkJReXhWUVVGVkxFTkJRVU1zUjBGQmNVSTdVVUZEY2tNc1NVRkJTU3hEUVVGRExFZEJRVWNzUjBGQlJ5eEhRVUZITEVOQlFVTTdVVUZEWml4UFFVRlBMRWxCUVVrc1EwRkJRenRKUVVOa0xFTkJRVU03U1VGRlJEczdPenM3T3pzN096czdUMEZYUnp0SlFVTklMRTFCUVUwc1EwRkJReXhaUVVGWkxFTkJRVU1zV1VGQmNVSTdVVUZEZGtNc1NVRkJTU3hEUVVGRExFOUJRVThzUjBGQlJ5eFpRVUZaTEVsQlFVa3NTVUZCU1N4TlFVRk5MRU5CUVVNc1pVRkJaU3hEUVVGRExFTkJRVU03VVVGRE0wUXNTVUZCU1N4RFFVRkRMRWRCUVVjc1EwRkJReXhUUVVGVExFTkJRVU1zU1VGQlNTeERRVUZETEU5QlFVOHNRMEZCUXl4RFFVRkRPMUZCUTJwRExFOUJRVThzU1VGQlNTeERRVUZETzBsQlEyUXNRMEZCUXp0SlFVVkVPenM3T3pzN096czdPenM3TzA5QllVYzdTVUZEU0N4TlFVRk5MRU5CUVVNc1ZVRkJWU3hEUVVObUxGVkJRVEJDTEVWQlFVVXNSVUZETlVJc1pVRkJlVUlzUTBGQlF5eExRVUZMTEVWQlFVVXNUVUZCVFN4RlFVRkZMRXRCUVVzc1JVRkJSU3hSUVVGUkxFTkJRVU03VVVGRmVrUXNUVUZCVFN4alFVRmpMRWRCUTJ4Q0xFOUJRVThzUzBGQlN5eEhRVUZITEVOQlFVTXNRMEZCUXl4RFFVRkRMRWRCUVVjc1EwRkJReXhEUVVGRExFTkJRVU1zVDBGQlR5eERRVUZETEVkQlFVY3NRMEZCUXl4RFFVRkRMRU5CUVVNc1JVRkJSU3hGUVVGRkxFTkJRVU1zUTBGQlF5eERRVUZETEVsQlFVa3NSVUZCUlN4RFFVRkRMRmRCUVZjc1JVRkJSU3hEUVVGRExFTkJRVU03VVVGRmNrVXNUVUZCVFN4WFFVRlhMRWRCUVdkQ08xbEJReTlDTEUxQlFVMHNSVUZCUlN4RFFVRkRMRTFCUVUwc1JVRkJSU3hSUVVGUkxFVkJRVVVzUlVGQlJUdG5Ra0ZETTBJc2EwTkJRV3RETzJkQ1FVTnNReXhKUVVGSkxFTkJRVU1zVFVGQlRUdHZRa0ZCUlN4UFFVRlBMRkZCUVZFc1EwRkJReXhKUVVGSkxFVkJRVVVzU1VGQlNTeERRVUZETEVOQlFVTTdaMEpCUlhwRExFbEJRMFVzWTBGQll5eExRVUZMTEVkQlFVYzdiMEpCUTNSQ0xFTkJRVU1zUzBGQlN5eERRVUZETEU5QlFVOHNRMEZCUXl4alFVRmpMRU5CUVVNN2QwSkJRelZDTEdOQlFXTXNRMEZCUXl4UlFVRlJMRU5CUVVNc1RVRkJUU3hEUVVGRExGZEJRVmNzUlVGQlJTeERRVUZETEVOQlFVTXNSVUZEYUVRc1EwRkJRenR2UWtGRFJDeFBRVUZQTEZGQlFWRXNRMEZCUXl4SlFVRkpMRVZCUVVVc1NVRkJTU3hEUVVGRExFTkJRVU03WjBKQlF6bENMRU5CUVVNN1owSkJSVVFzVVVGQlVTeERRVUZETEVsQlFVa3NVMEZCVXl4RFFVRkRMRlZCUVZVc1RVRkJUU3hqUVVGakxFTkJRVU1zUTBGQlF5eERRVUZETzFsQlF6RkVMRU5CUVVNN1dVRkRSQ3hYUVVGWExFVkJRVVVzU1VGQlNUdFpRVU5xUWl4UFFVRlBMRVZCUVVVc1dVRkJXU3hEUVVGRExFbEJRVWtzUTBGQlF5eEhRVUZITEVOQlFVTTdVMEZEYUVNc1EwRkJRenRSUVVWR0xFbEJRVWtzUTBGQlF5eEhRVUZITEVOQlFVTXNWVUZCVlN4RFFVRkRMRmRCUVZjc1EwRkJReXhEUVVGRE8xRkJRMnBETEU5QlFVOHNTVUZCU1N4RFFVRkRPMGxCUTJRc1EwRkJRenRKUVVWRU96czdPenM3T3pzN096dFBRVmRITzBsQlEwZ3NUVUZCVFN4RFFVRkRMRk5CUVZNc1EwRkJReXhQUVVFMlFqdFJRVU0xUXl4SlFVRkpMRU5CUVVNN1dVRkRTQ3hwUlVGQmFVVTdXVUZEYWtVc1RVRkJUU3hOUVVGTkxFZEJRVWNzVDBGQlR5eERRVUZETEZGQlFWRXNRMEZCUXl4RFFVRkRMRU5CUVVNc01FTkJRVEJETzFsQlF6VkZMRWxCUVVrc1EwRkJReXhIUVVGSExFTkJRVU1zUjBGQlJ5eERRVUZETEUxQlFVMHNRMEZCUXl4UFFVRlBMRU5CUVVNc1EwRkJReXhEUVVGRE8xbEJRemxDTEVsQlFVa3NRMEZCUXl4TlFVRk5MRU5CUVVNc1IwRkJSeXhEUVVGRExIbERRVUY1UXl4RFFVRkRMRU5CUVVNN1VVRkROMFFzUTBGQlF6dFJRVUZETEUxQlFVMHNRMEZCUXp0WlFVTlFMRWxCUVVrc1EwRkJReXhOUVVGTkxFTkJRVU1zU1VGQlNTeERRVUZETERSRFFVRTBReXhEUVVGRExFTkJRVU03VVVGRGFrVXNRMEZCUXp0UlFVVkVMRTlCUVU4c1NVRkJTU3hEUVVGRE8wbEJRMlFzUTBGQlF6dEpRVVZFT3pzN096czdPenM3T3p0UFFWZEhPMGxCUTBnc1RVRkJUU3hEUVVGRExGbEJRVmtzUTBGQlF5eFBRVUUwUWp0UlFVTTVReXhOUVVGTkxFOUJRVThzUjBGQlJ5eEpRVUZKTEdOQlFXTXNRMEZCUXl4SlFVRkpMRU5CUVVNc1IwRkJSeXhGUVVGRk8xbEJRek5ETEV0QlFVc3NSVUZCUlN4UFFVRlBMRU5CUVVNc1MwRkJTenRaUVVOd1FpeFhRVUZYTEVWQlFVVXNUMEZCVHl4RFFVRkRMRmRCUVZjN1dVRkRhRU1zVDBGQlR5eEZRVUZGTEU5QlFVOHNRMEZCUXl4UFFVRlBPMWxCUTNoQ0xFbEJRVWtzUlVGQlJTeFBRVUZQTEVOQlFVTXNTVUZCU1N4SlFVRkpMRXRCUVVzN1dVRkRNMElzYjBKQlFXOUNMRVZCUVVVc1QwRkJUeXhEUVVGRExHOUNRVUZ2UWl4SlFVRkpMRWxCUVVrN1dVRkRNVVFzVlVGQlZTeEZRVUZGTEU5QlFVOHNRMEZCUXl4VlFVRlZPMWxCUXpsQ0xHVkJRV1VzUlVGQlJTeFBRVUZQTEVOQlFVTXNWMEZCVnp0WlFVTndReXhyUWtGQmEwSXNSVUZCUlN4UFFVRlBMRU5CUVVNc1kwRkJZenRaUVVNeFF5eGhRVUZoTEVWQlFVVXNUMEZCVHl4RFFVRkRMR0ZCUVdFN1dVRkRjRU1zWlVGQlpTeEZRVUZGTEU5QlFVOHNRMEZCUXl4bFFVRmxPMWxCUTNoRExHVkJRV1VzUlVGQlJTeFBRVUZQTEVOQlFVTXNaVUZCWlR0VFFVTjZReXhEUVVGRExFTkJRVU03VVVGRFNDeFBRVUZQTEVOQlFVTXNXVUZCV1N4RlFVRkZMRU5CUVVNN1VVRkRka0lzVDBGQlR5eEpRVUZKTEVOQlFVTTdTVUZEWkN4RFFVRkRPMGxCUlVRN096czdPenM3T3pzN08wOUJWMGM3U1VGRFNDeE5RVUZOTEVOQlFVTXNZMEZCWXl4RFFVRkRMRWRCUVVjc1MwRkJjMEk3VVVGRE4wTXNTVUZCU1N4TFFVRkxMRU5CUVVNc1RVRkJUU3hIUVVGSExFTkJRVU03V1VGQlJTeEpRVUZKTEVOQlFVTXNSMEZCUnl4RFFVRkRMR05CUVdNc1EwRkJReXhIUVVGSExFdEJRVXNzUTBGQlF5eERRVUZETzFGQlEzaEVMRTlCUVU4c1NVRkJTU3hEUVVGRE8wbEJRMlFzUTBGQlF6dEpRVVZFT3pzN096czdPenM3T3pzN096czdUMEZsUnp0SlFVTklMRTFCUVUwc1EwRkJReXhuUWtGQlowSXNRMEZCUXl4SFFVRkhMRTlCUVdNN1VVRkRka01zU1VGQlNTeERRVUZETEVkQlFVY3NRMEZCUXl4blFrRkJaMElzUTBGRGRrSXNSMEZCUnl4RFFVRkRMRTlCUVU4c1EwRkJReXhOUVVGTkxFZEJRVWNzUTBGQlF6dFpRVU53UWl4RFFVRkRMRU5CUVVNc1QwRkJUenRaUVVOVUxFTkJRVU1zUTBGQlF5eERRVUZETEVsQlFVa3NiMEpCUVc5Q0xFTkJRVU1zU1VGQlNTeERRVUZETEVkQlFVY3NRMEZCUXl4SFFVRkhMRU5CUVVNc1UwRkJVeXhGUVVGRkxFVkJRVVVzVFVGQlRTeEZRVUZGTEV0QlFVc3NSVUZCUlN4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRelZGTEVOQlFVTTdVVUZEUml4UFFVRlBMRWxCUVVrc1EwRkJRenRKUVVOa0xFTkJRVU03U1VGRlJEczdPenM3T3pzN096czdUMEZYUnp0SlFVTklMRTFCUVUwc1EwRkJReXh4UWtGQmNVSXNRMEZCUXl4SFFVRkhMRmxCUVN0Q08xRkJRemRFTEVsQlFVa3NXVUZCV1N4RFFVRkRMRTFCUVUwc1IwRkJSeXhEUVVGRE8xbEJRM3BDTEVsQlFVa3NRMEZCUXl4SFFVRkhMRU5CUVVNc2NVSkJRWEZDTEVOQlFVTXNSMEZCUnl4WlFVRlpMRU5CUVVNc1EwRkJRenRSUVVOc1JDeFBRVUZQTEVsQlFVa3NRMEZCUXp0SlFVTmtMRU5CUVVNN1NVRkZSRHM3T3pzN096czdPenM3T3p0UFFXRkhPMGxCUTBnc1RVRkJUU3hEUVVGRExFdEJRVXNzUTBGQlF5eExRVUZMTEVOQlEyaENMRTlCUVdVc1RVRkJUU3hEUVVGRExFOUJRVThzUTBGQlF5eEhRVUZITEVOQlFVTXNTVUZCU1N4RFFVRkRMRWxCUVVrc1NVRkJTU3hGUVVNdlF5eFBRVUV5UWl4VFFVRlRMRVZCUTNCRExFMUJRV1VzU1VGQlNUdFJRVVZ1UWl4SlFVRkpMRU5CUVVNc1IwRkJSeXhEUVVGRExFMUJRVTBzUTBGQlF5eEpRVUZKTEVWQlFVVXNTVUZCVnl4RFFVRkRMRU5CUVVNc1NVRkJTU3hEUVVGRExFdEJRVXNzU1VGQlNTeEZRVUZGTzFsQlEycEVMRWxCUVVrc1IwRkJSeXhGUVVGRkxFTkJRVU03WjBKQlExSXNUVUZCVFN4SFFVRkhMRWRCUVVjc1RVRkJUU3hKUVVGSkxFTkJRVU1zUjBGQlJ5eERRVUZETEUxQlFVMHNSVUZCUlN4RFFVRkRPMmRDUVVOd1F5eEpRVUZKTEVOQlFVTXNUVUZCVFN4RFFVRkRMRWRCUVVjc1EwRkJReXhwUTBGQmFVTXNSMEZCUnl4RlFVRkZMRU5CUVVNc1EwRkJRenRaUVVNeFJDeERRVUZETzFGQlEwZ3NRMEZCUXl4RFFVRkRMRU5CUVVNN1NVRkRUQ3hEUVVGRE8wTkJRMFlpTENKemIzVnlZMlZ6UTI5dWRHVnVkQ0k2V3lKcGJYQnZjblFnZTF4dUlDQkpUbVZ6ZEVGd2NHeHBZMkYwYVc5dUxGeHVJQ0JNYjJkblpYSXNYRzRnSUU1bGMzUkpiblJsY21ObGNIUnZjaXhjYmlBZ1VHbHdaVlJ5WVc1elptOXliU3hjYm4wZ1puSnZiU0JjSWtCdVpYTjBhbk12WTI5dGJXOXVYQ0k3WEc1cGJYQnZjblFnZXlCTmIyUjFiR1ZTWldZZ2ZTQm1jbTl0SUZ3aVFHNWxjM1JxY3k5amIzSmxYQ0k3WEc1cGJYQnZjblFnZXlCRVpXTmhaa1Y0WTJWd2RHbHZia1pwYkhSbGNpQjlJR1p5YjIwZ1hDSXVMMlY0WTJWd2RHbHZibk5jSWp0Y2JtbHRjRzl5ZENCN0lGTjNZV2RuWlhKQ2RXbHNaR1Z5SUgwZ1puSnZiU0JjSWk0dmIzQmxibUZ3YVZ3aU8xeHVhVzF3YjNKMElIc2dRMjl5YzA5d2RHbHZibk1nZlNCbWNtOXRJRndpUUc1bGMzUnFjeTlqYjIxdGIyNHZhVzUwWlhKbVlXTmxjeTlsZUhSbGNtNWhiQzlqYjNKekxXOXdkR2x2Ym5NdWFXNTBaWEptWVdObFhDSTdYRzVwYlhCdmNuUWdleUJEYjNKelJYSnliM0lnZlNCbWNtOXRJRndpTGk5bGNuSnZjbk5jSWp0Y2JseHVMeW9xWEc0Z0tpQkFaR1Z6WTNKcGNIUnBiMjVjYmlBcUlFUmxabWx1WlhNZ1lXeHNJR04xYzNSdmJXbDZZV0pzWlNCd1lYSmhiV1YwWlhKeklHWnZjaUJUZDJGbloyVnlJSE5sZEhWd0xseHVJQ3BjYmlBcUlFQnpkVzF0WVhKNVhHNGdLaUJVYUdseklHbHVkR1Z5Wm1GalpTQmhiR3h2ZDNNZ1pHVjJaV3h2Y0dWeWN5QjBieUJqZFhOMGIyMXBlbVVnYUc5M0lGTjNZV2RuWlhJZ1ZVa2dhWE1nWTI5dVptbG5kWEpsWkZ4dUlDb2dkMmwwYUdsdUlIUm9aU0JPWlhOMFNsTWdZWEJ3YkdsallYUnBiMjR1SUVsMElHbHVZMngxWkdWeklIQmhjbUZ0WlhSbGNuTWdabTl5SUhScGRHeGxjeXdnY0dGMGFITXNYRzRnS2lCamIyeHZjaUJ6WTJobGJXVnpMQ0JoYm1RZ1lYTnpaWFFnY0dGMGFITWdkRzhnZEdGcGJHOXlJSFJvWlNCQlVFa2daRzlqZFcxbGJuUmhkR2x2YmlCbGVIQmxjbWxsYm1ObExseHVJQ3BjYmlBcUlFQndZWEpoYlNCN2MzUnlhVzVuZlNCMGFYUnNaU0F0SUZScGRHeGxJR1JwYzNCc1lYbGxaQ0JwYmlCVGQyRm5aMlZ5SUZWSkxseHVJQ29nUUhCaGNtRnRJSHR6ZEhKcGJtZDlJR1JsYzJOeWFYQjBhVzl1SUMwZ1JHVnpZM0pwY0hScGIyNGdjMmh2ZDI0Z1ltVnNiM2NnZEdobElIUnBkR3hsTGx4dUlDb2dRSEJoY21GdElIdHpkSEpwYm1kOUlIWmxjbk5wYjI0Z0xTQkJVRWtnZG1WeWMybHZiaUJrYVhOd2JHRjVaV1FnYVc0Z2RHaGxJR1J2WTNWdFpXNTBZWFJwYjI0dVhHNGdLaUJBY0dGeVlXMGdlM04wY21sdVozMGdXM0JoZEdoZElDMGdUM0IwYVc5dVlXd2djR0YwYUNCM2FHVnlaU0JUZDJGbloyVnlJSGRwYkd3Z1ltVWdZWFpoYVd4aFlteGxMbHh1SUNvZ1FIQmhjbUZ0SUh0aWIyOXNaV0Z1ZlNCYmNHVnljMmx6ZEVGMWRHaHZjbWw2WVhScGIyNWRJQzBnVjJobGRHaGxjaUJoZFhSb2IzSnBlbUYwYVc5dUlIUnZhMlZ1Y3lCd1pYSnphWE4wSUdGamNtOXpjeUJ5Wld4dllXUnpMbHh1SUNvZ1FIQmhjbUZ0SUh0emRISnBibWQ5SUZ0aGMzTmxkSE5RWVhSb1hTQXRJRkJoZEdnZ2RHOGdZM1Z6ZEc5dElHRnpjMlYwY3lCbWIzSWdVM2RoWjJkbGNpQlZTUzVjYmlBcUlFQndZWEpoYlNCN2MzUnlhVzVuZlNCYmRHOXdZbUZ5UW1kRGIyeHZjbDBnTFNCRGRYTjBiMjBnWW1GamEyZHliM1Z1WkNCamIyeHZjaUJtYjNJZ2RHaGxJRk4zWVdkblpYSWdkRzl3SUdKaGNpNWNiaUFxSUVCd1lYSmhiU0I3YzNSeWFXNW5mU0JiZEc5d1ltRnlTV052YmxCaGRHaGRJQzBnVUdGMGFDQjBieUJoSUdOMWMzUnZiU0JwWTI5dUlHUnBjM0JzWVhsbFpDQnBiaUIwYUdVZ2RHOXdJR0poY2k1Y2JpQXFJRUJ3WVhKaGJTQjdjM1J5YVc1bmZTQmJabUYyYVdOdmJsQmhkR2hkSUMwZ1VHRjBhQ0IwYnlCaElHTjFjM1J2YlNCbVlYWnBZMjl1TGx4dUlDb3ZYRzVsZUhCdmNuUWdhVzUwWlhKbVlXTmxJRk4zWVdkblpYSlRaWFIxY0U5d2RHbHZibk1nZTF4dUlDQjBhWFJzWlRvZ2MzUnlhVzVuTzF4dUlDQmtaWE5qY21sd2RHbHZiam9nYzNSeWFXNW5PMXh1SUNCMlpYSnphVzl1T2lCemRISnBibWM3WEc0Z0lIQmhkR2cvT2lCemRISnBibWM3WEc0Z0lIQmxjbk5wYzNSQmRYUm9iM0pwZW1GMGFXOXVQem9nWW05dmJHVmhianRjYmlBZ1lYTnpaWFJ6VUdGMGFEODZJSE4wY21sdVp6dGNiaUFnZEc5d1ltRnlRbWREYjJ4dmNqODZJSE4wY21sdVp6dGNiaUFnZEc5d1ltRnlTV052YmxCaGRHZy9PaUJ6ZEhKcGJtYzdYRzRnSUdaaGRtbGpiMjVRWVhSb1B6b2djM1J5YVc1bk8xeHVJQ0F2S2lwY2JpQWdJQ29nVUdGMGFDQjBieUJsZUhCdmMyVWdkR2hsSUU5d1pXNUJVRWtnYzNCbFkybG1hV05oZEdsdmJpQnBiaUJLVTA5T0lHWnZjbTFoZEM1Y2JpQWdJQ29nUlhoaGJYQnNaVG9nTDJGd2FTOXZjR1Z1WVhCcExtcHpiMjVjYmlBZ0lDb3ZYRzRnSUc5d1pXNUJjR2xLYzI5dVVHRjBhRDg2SUhOMGNtbHVaenRjYmlBZ0x5b3FYRzRnSUNBcUlGQmhkR2dnZEc4Z1pYaHdiM05sSUhSb1pTQlBjR1Z1UVZCSklITndaV05wWm1sallYUnBiMjRnYVc0Z1dVRk5UQ0JtYjNKdFlYUXVYRzRnSUNBcUlGSmxjWFZwY21WeklDZDVZVzFzSnlCd1lXTnJZV2RsSUdGeklIQmxaWElnWkdWd1pXNWtaVzVqZVM1Y2JpQWdJQ29nUlhoaGJYQnNaVG9nTDJGd2FTOXZjR1Z1WVhCcExubGhiV3hjYmlBZ0lDb3ZYRzRnSUc5d1pXNUJjR2xaWVcxc1VHRjBhRDg2SUhOMGNtbHVaenRjYm4xY2JseHVMeW9xWEc0Z0tpQkFaR1Z6WTNKcGNIUnBiMjVjYmlBcUlFRWdabXgxWlc1MExDQnpkR0YwYVdNZ1ltOXZkSE4wY21Gd0lHTnNZWE56SUdadmNpQnBibWwwYVdGc2FYcHBibWNnWVc1a0lHTnZibVpwWjNWeWFXNW5JR0VnVG1WemRFcFRJR0Z3Y0d4cFkyRjBhVzl1TGx4dUlDcGNiaUFxSUVCemRXMXRZWEo1WEc0Z0tpQlVhR1VnWUU1bGMzUkNiMjkwYzNSeVlYQmxjbUFnWTJ4aGMzTWdjSEp2ZG1sa1pYTWdZU0JqYUdGcGJtRmliR1VnUVZCSklHWnZjaUJqYjI1bWFXZDFjbWx1WjF4dUlDb2dZU0JPWlhOMFNsTWdZWEJ3YkdsallYUnBiMjRnYVc1emRHRnVZMlV1SUVsMElHbHVZMngxWkdWeklHSjFhV3gwTFdsdUlHMWxkR2h2WkhNZ1ptOXlJR1Z1WVdKc2FXNW5YRzRnS2lCRFQxSlRMQ0JJWld4dFpYUWdjMlZqZFhKcGRIa3NJRk4zWVdkblpYSWdaRzlqZFcxbGJuUmhkR2x2Yml3Z1oyeHZZbUZzSUhCcGNHVnpMQ0JtYVd4MFpYSnpMRnh1SUNvZ2FXNTBaWEpqWlhCMGIzSnpMQ0JoYm1RZ2MzUmhjblJwYm1jZ2RHaGxJSE5sY25abGNpNWNiaUFxWEc0Z0tpQlVhR2x6SUdOc1lYTnpJSEJ5YjIxdmRHVnpJR052Ym5OcGMzUmxibU41SUdGdVpDQnlaV1IxWTJWeklISmxjR1YwYVhScGRtVWdjMlYwZFhBZ1kyOWtaVnh1SUNvZ1lXTnliM056SUcxMWJIUnBjR3hsSUU1bGMzUktVeUJ3Y205cVpXTjBjeTVjYmlBcVhHNGdLaUJBWlhoaGJYQnNaVnh1SUNvZ1lHQmdkSE5jYmlBcUlHbHRjRzl5ZENCN0lFNWxjM1JHWVdOMGIzSjVJSDBnWm5KdmJTQmNJa0J1WlhOMGFuTXZZMjl5WlZ3aU8xeHVJQ29nYVcxd2IzSjBJSHNnUVhCd1RXOWtkV3hsSUgwZ1puSnZiU0JjSWk0dllYQndMbTF2WkhWc1pWd2lPMXh1SUNvZ2FXMXdiM0owSUhzZ1RYbE1iMmRuWlhJZ2ZTQm1jbTl0SUZ3aUxpOU5lVXh2WjJkbGNsd2lPMXh1SUNvZ2FXMXdiM0owSUhzZ1RtVnpkRUp2YjNSemRISmhjR1Z5SUgwZ1puSnZiU0JjSWtCa1pXTmhaaTEwY3k5bWIzSXRibVZ6ZEZ3aU8xeHVJQ3BjYmlBcUlHRnplVzVqSUdaMWJtTjBhVzl1SUdKdmIzUnpkSEpoY0NncElIdGNiaUFxSUNBZ1kyOXVjM1FnWVhCd0lEMGdZWGRoYVhRZ1RtVnpkRVpoWTNSdmNua3VZM0psWVhSbEtFRndjRTF2WkhWc1pTazdYRzRnS2x4dUlDb2dJQ0JoZDJGcGRDQk9aWE4wUW05dmRITjBjbUZ3WlhKY2JpQXFJQ0FnSUNBdWFXNXBkR2xoYkdsNlpTaGhjSEFwWEc0Z0tpQWdJQ0FnTG1WdVlXSnNaVXh2WjJkbGNpaHVaWGNnVFhsTWIyZG5aWElvS1NsY2JpQXFJQ0FnSUNBdVpXNWhZbXhsUTI5eWN5aGJYQ0pvZEhSd09pOHZiRzlqWVd4b2IzTjBPalF5TURCY0lsMHBYRzRnS2lBZ0lDQWdMblZ6WlVobGJHMWxkQ2dwWEc0Z0tpQWdJQ0FnTG5ObGRIVndVM2RoWjJkbGNpaDdYRzRnS2lBZ0lDQWdJQ0IwYVhSc1pUb2dYQ0pQY0dWdVFWQkpJR0o1SUZSeVlXUmxUV0Z5YStLRW9sd2lMRnh1SUNvZ0lDQWdJQ0FnWkdWelkzSnBjSFJwYjI0NklGd2lWSEpoWkdWTllYSnI0b1NpSUVGUVNTQmtiMk4xYldWdWRHRjBhVzl1WENJc1hHNGdLaUFnSUNBZ0lDQjJaWEp6YVc5dU9pQmNJakV1TUM0d1hDSXNYRzRnS2lBZ0lDQWdJQ0J3WVhSb09pQmNJbUZ3YVZ3aUxGeHVJQ29nSUNBZ0lDQWdjR1Z5YzJsemRFRjFkR2h2Y21sNllYUnBiMjQ2SUhSeWRXVXNYRzRnS2lBZ0lDQWdJQ0IwYjNCaVlYSkNaME52Ykc5eU9pQmNJaU15UXpORk5UQmNJaXhjYmlBcUlDQWdJQ0FnSUhSdmNHSmhja2xqYjI1UVlYUm9PaUJjSWk5aGMzTmxkSE12Ykc5bmJ5NXpkbWRjSWl4Y2JpQXFJQ0FnSUNBZ0lHWmhkbWxqYjI1UVlYUm9PaUJjSWk5aGMzTmxkSE12Wm1GMmFXTnZiaTVwWTI5Y0lseHVJQ29nSUNBZ0lIMHBYRzRnS2lBZ0lDQWdMblZ6WlVkc2IySmhiRVpwYkhSbGNuTW9LVnh1SUNvZ0lDQWdJQzUxYzJWSGJHOWlZV3hRYVhCbGN5Z3VMaTRwWEc0Z0tpQWdJQ0FnTG5WelpVZHNiMkpoYkVsdWRHVnlZMlZ3ZEc5eWN5Z3VMaTRwWEc0Z0tpQWdJQ0FnTG5OMFlYSjBLRE13TURBcE8xeHVJQ29nZlZ4dUlDcGNiaUFxSUdKdmIzUnpkSEpoY0NncE8xeHVJQ29nWUdCZ1hHNGdLaUJBWTJ4aGMzTmNiaUFxTDF4dVpYaHdiM0owSUdOc1lYTnpJRTVsYzNSQ2IyOTBjM1J5WVhCbGNpQjdYRzRnSUhCeWFYWmhkR1VnYzNSaGRHbGpJR0Z3Y0RvZ1NVNWxjM1JCY0hCc2FXTmhkR2x2Ymp0Y2JpQWdjSEpwZG1GMFpTQnpkR0YwYVdNZ1gyeHZaMmRsY2pvZ1RHOW5aMlZ5TzF4dVhHNGdJQzhxS2x4dUlDQWdLaUJBWkdWelkzSnBjSFJwYjI1Y2JpQWdJQ29nVW1WMGRYSnVjeUIwYUdVZ1kzVnljbVZ1ZENCc2IyZG5aWElnYVc1emRHRnVZMlVzSUdOeVpXRjBhVzVuSUdFZ1pHVm1ZWFZzZENCdmJtVWdhV1lnYm05MElITmxkQzVjYmlBZ0lDcGNiaUFnSUNvZ1FITjFiVzFoY25sY2JpQWdJQ29nUlc1emRYSmxjeUIwYUdGMElHRWdkbUZzYVdRZ1lFeHZaMmRsY21BZ2FXNXpkR0Z1WTJVZ2FYTWdZV3gzWVhseklHRjJZV2xzWVdKc1pWeHVJQ0FnS2lCbWIzSWdiRzluWjJsdVp5QmliMjkwYzNSeVlYQXRjbVZzWVhSbFpDQnRaWE56WVdkbGN5NWNiaUFnSUNwY2JpQWdJQ29nUUhKbGRIVnliaUI3VEc5bloyVnlmU0JVYUdVZ1lXTjBhWFpsSUd4dloyZGxjaUJwYm5OMFlXNWpaUzVjYmlBZ0lDb3ZYRzRnSUhCeWFYWmhkR1VnYzNSaGRHbGpJR2RsZENCc2IyZG5aWElvS1RvZ1RHOW5aMlZ5SUh0Y2JpQWdJQ0JwWmlBb0lYUm9hWE11WDJ4dloyZGxjaWtnZTF4dUlDQWdJQ0FnTHk4Z1ptRnNiR0poWTJ0Y2JpQWdJQ0FnSUhSb2FYTXVYMnh2WjJkbGNpQTlJRzVsZHlCTWIyZG5aWElvWENKT1pYTjBRbTl2ZEhOMGNtRndYQ0lwTzF4dUlDQWdJSDFjYmlBZ0lDQnlaWFIxY200Z2RHaHBjeTVmYkc5bloyVnlPMXh1SUNCOVhHNWNiaUFnTHlvcVhHNGdJQ0FxSUVCa1pYTmpjbWx3ZEdsdmJseHVJQ0FnS2lCSmJtbDBhV0ZzYVhwbGN5QjBhR1VnWW05dmRITjBjbUZ3Y0dWeUlIZHBkR2dnWVNCbmFYWmxiaUJPWlhOMFNsTWdZWEJ3YkdsallYUnBiMjR1WEc0Z0lDQXFYRzRnSUNBcUlFQnpkVzF0WVhKNVhHNGdJQ0FxSUVKcGJtUnpJSFJvWlNCd2NtOTJhV1JsWkNCT1pYTjBTbE1nWVhCd0lHbHVjM1JoYm1ObElIUnZJSFJvWlNCaWIyOTBjM1J5WVhCd1pYSXNJR1Z1WVdKc2FXNW5YRzRnSUNBcUlHTm9ZV2x1WldRZ1kyOXVabWxuZFhKaGRHbHZiaUJ0WlhSb2IyUnpMbHh1SUNBZ0tseHVJQ0FnS2lCQWNHRnlZVzBnZTBsT1pYTjBRWEJ3YkdsallYUnBiMjU5SUdGd2NDQXRJRlJvWlNCT1pYTjBTbE1nWVhCd2JHbGpZWFJwYjI0Z2FXNXpkR0Z1WTJVZ2RHOGdhVzVwZEdsaGJHbDZaUzVjYmlBZ0lDb2dRSEpsZEhWeWJpQjdUbVZ6ZEVKdmIzUnpkSEpoY0dWeWZTQlNaWFIxY201eklIUm9aU0JqYkdGemN5Qm1iM0lnWTJoaGFXNXBibWNnWTI5dVptbG5kWEpoZEdsdmJpQnRaWFJvYjJSekxseHVJQ0FnS2k5Y2JpQWdjM1JoZEdsaklHbHVhWFJwWVd4cGVtVW9ZWEJ3T2lCSlRtVnpkRUZ3Y0d4cFkyRjBhVzl1S1NCN1hHNGdJQ0FnZEdocGN5NWhjSEFnUFNCaGNIQTdYRzRnSUNBZ2NtVjBkWEp1SUhSb2FYTTdYRzRnSUgxY2JseHVJQ0F2S2lwY2JpQWdJQ29nUUdSbGMyTnlhWEIwYVc5dVhHNGdJQ0FxSUVWdVlXSnNaWE1nYjNJZ2NtVndiR0ZqWlhNZ2RHaGxJR2RzYjJKaGJDQnNiMmRuWlhJZ1ptOXlJSFJvWlNCT1pYTjBTbE1nWVhCd2JHbGpZWFJwYjI0dVhHNGdJQ0FxWEc0Z0lDQXFJRUJ6ZFcxdFlYSjVYRzRnSUNBcUlFbG1JR0VnWTNWemRHOXRJR3h2WjJkbGNpQnBjeUJ3Y205MmFXUmxaQ3dnYVhRZ2NtVndiR0ZqWlhNZ2RHaGxJR1JsWm1GMWJIUWdiRzluWjJWeUxpQlBkR2hsY25kcGMyVXNYRzRnSUNBcUlHRWdibVYzSUd4dloyZGxjaUJ1WVcxbFpDQmdYQ0pPWlhOMFFtOXZkSE4wY21Gd1hDSmdJR2x6SUhWelpXUXVJRlJvYVhNZ2JHOW5aMlZ5SUdseklHRnNjMjhnY21WbmFYTjBaWEpsWkZ4dUlDQWdLaUIzYVhSb0lIUm9aU0JPWlhOMFNsTWdZWEJ3YkdsallYUnBiMjR1WEc0Z0lDQXFYRzRnSUNBcUlFQndZWEpoYlNCN1RHOW5aMlZ5ZlNCYlkzVnpkRzl0VEc5bloyVnlYU0F0SUU5d2RHbHZibUZzSUdOMWMzUnZiU0JzYjJkblpYSWdhVzV6ZEdGdVkyVXVYRzRnSUNBcUlFQnlaWFIxY200Z2UwNWxjM1JDYjI5MGMzUnlZWEJsY24wZ1VtVjBkWEp1Y3lCMGFHVWdZMnhoYzNNZ1ptOXlJR05vWVdsdWFXNW5MbHh1SUNBZ0tpOWNiaUFnYzNSaGRHbGpJR1Z1WVdKc1pVeHZaMmRsY2loamRYTjBiMjFNYjJkblpYSS9PaUJNYjJkblpYSXBJSHRjYmlBZ0lDQjBhR2x6TGw5c2IyZG5aWElnUFNCamRYTjBiMjFNYjJkblpYSWdmSHdnYm1WM0lFeHZaMmRsY2loY0lrNWxjM1JDYjI5MGMzUnlZWEJjSWlrN1hHNGdJQ0FnZEdocGN5NWhjSEF1ZFhObFRHOW5aMlZ5S0hSb2FYTXVYMnh2WjJkbGNpazdYRzRnSUNBZ2NtVjBkWEp1SUhSb2FYTTdYRzRnSUgxY2JseHVJQ0F2S2lwY2JpQWdJQ29nUUdSbGMyTnlhWEIwYVc5dVhHNGdJQ0FxSUVWdVlXSnNaWE1nUTNKdmMzTXRUM0pwWjJsdUlGSmxjMjkxY21ObElGTm9ZWEpwYm1jZ0tFTlBVbE1wSUdadmNpQjBhR1VnWVhCd2JHbGpZWFJwYjI0dVhHNGdJQ0FxWEc0Z0lDQXFJRUJ6ZFcxdFlYSjVYRzRnSUNBcUlFRnNiRzkzY3lCa1pXWnBibWx1WnlCbGFYUm9aWElnWVNCM2FXeGtZMkZ5WkNCdmNtbG5hVzRnS0dCY0lpcGNJbUFwSUc5eUlHRWdiR2x6ZENCdlppQmhiR3h2ZDJWa0lHOXlhV2RwYm5NdVhHNGdJQ0FxSUVGMWRHOXRZWFJwWTJGc2JIa2dZV05qWlhCMGN5QnNiMk5oYkNCa1pYWmxiRzl3YldWdWRDQnlaWEYxWlhOMGN5QmhibVFnZEdodmMyVWdkMmwwYUc5MWRDQnZjbWxuYVc0Z2FHVmhaR1Z5Y3k1Y2JpQWdJQ29nVkdoeWIzZHpJR0VnWUVOdmNuTkZjbkp2Y21BZ1ptOXlJSFZ1WVhWMGFHOXlhWHBsWkNCdmNtbG5hVzV6TGx4dUlDQWdLbHh1SUNBZ0tpQkFjR0Z5WVcwZ2V5Y3FKeUI4SUhOMGNtbHVaMXRkZlNCYmIzSnBaMmx1Y3oxYlhWMGdMU0JNYVhOMElHOW1JR0ZzYkc5M1pXUWdiM0pwWjJsdWN5QnZjaUJnWENJcVhDSmdJSFJ2SUdGc2JHOTNJR0ZzYkM1Y2JpQWdJQ29nUUhCaGNtRnRJSHR6ZEhKcGJtZGJYWDBnVzJGc2JHOTNUV1YwYUc5a2N6MWJKMGRGVkNjc0lDZFFUMU5VSnl3Z0oxQlZWQ2NzSUNkRVJVeEZWRVVuWFYwZ0xTQkJiR3h2ZDJWa0lFaFVWRkFnYldWMGFHOWtjeTVjYmlBZ0lDb2dRSEpsZEhWeWJpQjdUbVZ6ZEVKdmIzUnpkSEpoY0dWeWZTQlNaWFIxY201eklIUm9aU0JqYkdGemN5Qm1iM0lnWTJoaGFXNXBibWNnWTI5dVptbG5kWEpoZEdsdmJpNWNiaUFnSUNwY2JpQWdJQ292WEc0Z0lITjBZWFJwWXlCbGJtRmliR1ZEYjNKektGeHVJQ0FnSUc5eWFXZHBibk02SUZ3aUtsd2lJSHdnYzNSeWFXNW5XMTBnUFNCYlhTeGNiaUFnSUNCaGJHeHZkMDFsZEdodlpITTZJSE4wY21sdVoxdGRJRDBnVzF3aVIwVlVYQ0lzSUZ3aVVFOVRWRndpTENCY0lsQlZWRndpTENCY0lrUkZURVZVUlZ3aVhWeHVJQ0FwSUh0Y2JpQWdJQ0JqYjI1emRDQmhiR3h2ZDJWa1QzSnBaMmx1Y3lBOVhHNGdJQ0FnSUNCdmNtbG5hVzV6SUQwOVBTQmNJaXBjSWlBL0lGd2lLbHdpSURvZ2IzSnBaMmx1Y3k1dFlYQW9LRzhwSUQwK0lHOHVkSEpwYlNncExuUnZURzkzWlhKRFlYTmxLQ2twTzF4dVhHNGdJQ0FnWTI5dWMzUWdZMjl5YzA5d2RHbHZibk02SUVOdmNuTlBjSFJwYjI1eklEMGdlMXh1SUNBZ0lDQWdiM0pwWjJsdU9pQW9iM0pwWjJsdUxDQmpZV3hzWW1GamF5a2dQVDRnZTF4dUlDQWdJQ0FnSUNBdkx5QkJiR3h2ZHlCeVpYRjFaWE4wSUhkcGRHaHZkWFFnYjNKcFoybHVMaTR1WEc0Z0lDQWdJQ0FnSUdsbUlDZ2hiM0pwWjJsdUtTQnlaWFIxY200Z1kyRnNiR0poWTJzb2JuVnNiQ3dnZEhKMVpTazdYRzVjYmlBZ0lDQWdJQ0FnYVdZZ0tGeHVJQ0FnSUNBZ0lDQWdJR0ZzYkc5M1pXUlBjbWxuYVc1eklEMDlQU0JjSWlwY0lpQjhmRnh1SUNBZ0lDQWdJQ0FnSUNoQmNuSmhlUzVwYzBGeWNtRjVLR0ZzYkc5M1pXUlBjbWxuYVc1ektTQW1KbHh1SUNBZ0lDQWdJQ0FnSUNBZ1lXeHNiM2RsWkU5eWFXZHBibk11YVc1amJIVmtaWE1vYjNKcFoybHVMblJ2VEc5M1pYSkRZWE5sS0NrcEtWeHVJQ0FnSUNBZ0lDQXBJSHRjYmlBZ0lDQWdJQ0FnSUNCeVpYUjFjbTRnWTJGc2JHSmhZMnNvYm5Wc2JDd2dkSEoxWlNrN1hHNGdJQ0FnSUNBZ0lIMWNibHh1SUNBZ0lDQWdJQ0JqWVd4c1ltRmpheWh1WlhjZ1EyOXljMFZ5Y205eUtHQlBjbWxuYVc0Z0pIdHZjbWxuYVc1OUlHNXZkQ0JoYkd4dmQyVmtZQ2twTzF4dUlDQWdJQ0FnZlN4Y2JpQWdJQ0FnSUdOeVpXUmxiblJwWVd4ek9pQjBjblZsTEZ4dUlDQWdJQ0FnYldWMGFHOWtjem9nWVd4c2IzZE5aWFJvYjJSekxtcHZhVzRvWENJc1hDSXBMRnh1SUNBZ0lIMDdYRzVjYmlBZ0lDQjBhR2x6TG1Gd2NDNWxibUZpYkdWRGIzSnpLR052Y25OUGNIUnBiMjV6S1R0Y2JpQWdJQ0J5WlhSMWNtNGdkR2hwY3p0Y2JpQWdmVnh1WEc0Z0lDOHFLbHh1SUNBZ0tpQkFaR1Z6WTNKcGNIUnBiMjVjYmlBZ0lDb2dRWEJ3YkdsbGN5QjBhR1VnU0dWc2JXVjBJRzFwWkdSc1pYZGhjbVVnWm05eUlHVnVhR0Z1WTJWa0lITmxZM1Z5YVhSNUxseHVJQ0FnS2x4dUlDQWdLaUJBYzNWdGJXRnllVnh1SUNBZ0tpQkVlVzVoYldsallXeHNlU0JzYjJGa2N5QjBhR1VnWUdobGJHMWxkR0FnY0dGamEyRm5aU0JwWmlCaGRtRnBiR0ZpYkdVZ1lXNWtJSEpsWjJsemRHVnljeUJwZEZ4dUlDQWdLaUJoY3lCdGFXUmtiR1YzWVhKbElIUnZJR2x0Y0hKdmRtVWdTRlJVVUNCb1pXRmtaWElnYzJWamRYSnBkSGt1SUVsbUlHNXZkQ0JwYm5OMFlXeHNaV1FzSUd4dlozTWdZU0IzWVhKdWFXNW5YRzRnSUNBcUlHRnVaQ0JqYjI1MGFXNTFaWE1nWlhobFkzVjBhVzl1SUhkcGRHaHZkWFFnZEdoeWIzZHBibWNnWlhKeWIzSnpMbHh1SUNBZ0tseHVJQ0FnS2lCQWNHRnlZVzBnZTFKbFkyOXlaRHh6ZEhKcGJtY3NJR0Z1ZVQ1OUlGdHZjSFJwYjI1elhTQXRJRTl3ZEdsdmJtRnNJR052Ym1acFozVnlZWFJwYjI0Z2NHRnpjMlZrSUhSdklFaGxiRzFsZEM1Y2JpQWdJQ29nUUhKbGRIVnliaUI3VG1WemRFSnZiM1J6ZEhKaGNHVnlmU0JTWlhSMWNtNXpJSFJvWlNCamJHRnpjeUJtYjNJZ1kyaGhhVzVwYm1jZ1kyOXVabWxuZFhKaGRHbHZiaTVjYmlBZ0lDb3ZYRzRnSUhOMFlYUnBZeUIxYzJWSVpXeHRaWFFvYjNCMGFXOXVjejg2SUZKbFkyOXlaRHh6ZEhKcGJtY3NJR0Z1ZVQ0cElIdGNiaUFnSUNCMGNua2dlMXh1SUNBZ0lDQWdMeThnWlhOc2FXNTBMV1JwYzJGaWJHVXRibVY0ZEMxc2FXNWxJRUIwZVhCbGMyTnlhWEIwTFdWemJHbHVkQzl1YnkxeVpYRjFhWEpsTFdsdGNHOXlkSE5jYmlBZ0lDQWdJR052Ym5OMElHaGxiRzFsZENBOUlISmxjWFZwY21Vb1hDSm9aV3h0WlhSY0lpazdJQzh2SUVSNWJtRnRhV01nYVcxd2IzSjBJSFJ2SUdGMmIybGtJR2hoY21RZ1pHVndaVzVrWlc1amVWeHVJQ0FnSUNBZ2RHaHBjeTVoY0hBdWRYTmxLR2hsYkcxbGRDaHZjSFJwYjI1ektTazdYRzRnSUNBZ0lDQjBhR2x6TG14dloyZGxjaTVzYjJjb1hDSklaV3h0WlhRZ2JXbGtaR3hsZDJGeVpTQmxibUZpYkdWa0lITjFZMk5sYzNObWRXeHNlUzVjSWlrN1hHNGdJQ0FnZlNCallYUmphQ0I3WEc0Z0lDQWdJQ0IwYUdsekxteHZaMmRsY2k1M1lYSnVLRndpU0dWc2JXVjBJRzV2ZENCcGJuTjBZV3hzWldRdUlGTnJhWEJ3YVc1bklHMXBaR1JzWlhkaGNtVXVYQ0lwTzF4dUlDQWdJSDFjYmx4dUlDQWdJSEpsZEhWeWJpQjBhR2x6TzF4dUlDQjlYRzVjYmlBZ0x5b3FYRzRnSUNBcUlFQmtaWE5qY21sd2RHbHZibHh1SUNBZ0tpQkRiMjVtYVdkMWNtVnpJR0Z1WkNCcGJtbDBhV0ZzYVhwbGN5QlRkMkZuWjJWeUlGVkpJR1p2Y2lCQlVFa2daRzlqZFcxbGJuUmhkR2x2Ymk1Y2JpQWdJQ3BjYmlBZ0lDb2dRSE4xYlcxaGNubGNiaUFnSUNvZ1ZYTmxjeUIwYUdVZ1lGTjNZV2RuWlhKQ2RXbHNaR1Z5WUNCMWRHbHNhWFI1SUhSdklHTnZibVpwWjNWeVpTQkJVRWtnWkc5amRXMWxiblJoZEdsdmJseHVJQ0FnS2lCM2FYUm9JR1JsZEdGcGJHVmtJR04xYzNSdmJXbDZZWFJwYjI0Z1ptOXlJSFJwZEd4bExDQjJaWEp6YVc5dUxDQndZWFJvY3l3Z1lXNWtJR052Ykc5eWN5NWNiaUFnSUNvZ1UzZGhaMmRsY2lCcGN5QmhkWFJ2YldGMGFXTmhiR3g1SUdWNGNHOXpaV1FnWVhRZ2RHaGxJR052Ym1acFozVnlaV1FnY0dGMGFDNWNiaUFnSUNwY2JpQWdJQ29nUUhCaGNtRnRJSHRUZDJGbloyVnlVMlYwZFhCUGNIUnBiMjV6ZlNCdmNIUnBiMjV6SUMwZ1UzZGhaMmRsY2lCamIyNW1hV2QxY21GMGFXOXVJRzl3ZEdsdmJuTXVYRzRnSUNBcUlFQnlaWFIxY200Z2UwNWxjM1JDYjI5MGMzUnlZWEJsY24wZ1VtVjBkWEp1Y3lCMGFHVWdZMnhoYzNNZ1ptOXlJR05vWVdsdWFXNW5JR052Ym1acFozVnlZWFJwYjI0dVhHNGdJQ0FxTDF4dUlDQnpkR0YwYVdNZ2MyVjBkWEJUZDJGbloyVnlLRzl3ZEdsdmJuTTZJRk4zWVdkblpYSlRaWFIxY0U5d2RHbHZibk1wSUh0Y2JpQWdJQ0JqYjI1emRDQnpkMkZuWjJWeUlEMGdibVYzSUZOM1lXZG5aWEpDZFdsc1pHVnlLSFJvYVhNdVlYQndMQ0I3WEc0Z0lDQWdJQ0IwYVhSc1pUb2diM0IwYVc5dWN5NTBhWFJzWlN4Y2JpQWdJQ0FnSUdSbGMyTnlhWEIwYVc5dU9pQnZjSFJwYjI1ekxtUmxjMk55YVhCMGFXOXVMRnh1SUNBZ0lDQWdkbVZ5YzJsdmJqb2diM0IwYVc5dWN5NTJaWEp6YVc5dUxGeHVJQ0FnSUNBZ2NHRjBhRG9nYjNCMGFXOXVjeTV3WVhSb0lIeDhJRndpWVhCcFhDSXNYRzRnSUNBZ0lDQndaWEp6YVhOMFFYVjBhRzl5YVhwaGRHbHZiam9nYjNCMGFXOXVjeTV3WlhKemFYTjBRWFYwYUc5eWFYcGhkR2x2YmlBL1B5QjBjblZsTEZ4dUlDQWdJQ0FnWVhOelpYUnpVR0YwYURvZ2IzQjBhVzl1Y3k1aGMzTmxkSE5RWVhSb0xGeHVJQ0FnSUNBZ1ptRjJhV052YmtacGJHVlFZWFJvT2lCdmNIUnBiMjV6TG1aaGRtbGpiMjVRWVhSb0xGeHVJQ0FnSUNBZ2RHOXdZbUZ5U1dOdmJrWnBiR1ZRWVhSb09pQnZjSFJwYjI1ekxuUnZjR0poY2tsamIyNVFZWFJvTEZ4dUlDQWdJQ0FnZEc5d1ltRnlRbWREYjJ4dmNqb2diM0IwYVc5dWN5NTBiM0JpWVhKQ1owTnZiRzl5TEZ4dUlDQWdJQ0FnYjNCbGJrRndhVXB6YjI1UVlYUm9PaUJ2Y0hScGIyNXpMbTl3Wlc1QmNHbEtjMjl1VUdGMGFDeGNiaUFnSUNBZ0lHOXdaVzVCY0dsWllXMXNVR0YwYURvZ2IzQjBhVzl1Y3k1dmNHVnVRWEJwV1dGdGJGQmhkR2dzWEc0Z0lDQWdmU2s3WEc0Z0lDQWdjM2RoWjJkbGNpNXpaWFIxY0ZOM1lXZG5aWElvS1R0Y2JpQWdJQ0J5WlhSMWNtNGdkR2hwY3p0Y2JpQWdmVnh1WEc0Z0lDOHFLbHh1SUNBZ0tpQkFaR1Z6WTNKcGNIUnBiMjVjYmlBZ0lDb2dVbVZuYVhOMFpYSnpJRzl1WlNCdmNpQnRiM0psSUdkc2IySmhiQ0IyWVd4cFpHRjBhVzl1SUhCcGNHVnpMbHh1SUNBZ0tseHVJQ0FnS2lCQWMzVnRiV0Z5ZVZ4dUlDQWdLaUJGYm1GaWJHVnpJSEpsY1hWbGMzUWdjR0Y1Ykc5aFpDQjJZV3hwWkdGMGFXOXVJR0Z1WkNCMGNtRnVjMlp2Y20xaGRHbHZiaUJuYkc5aVlXeHNlU0JoWTNKdmMzTmNiaUFnSUNvZ2RHaGxJR1Z1ZEdseVpTQk9aWE4wU2xNZ1lYQndiR2xqWVhScGIyNHVJRTExYkhScGNHeGxJSEJwY0dWeklHTmhiaUJpWlNCamFHRnBibVZrSUhSdloyVjBhR1Z5WEc0Z0lDQXFJR1p2Y2lCdGIyUjFiR0Z5SUdsdWNIVjBJSFpoYkdsa1lYUnBiMjR1WEc0Z0lDQXFYRzRnSUNBcUlFQndZWEpoYlNCN0xpNHVVR2x3WlZSeVlXNXpabTl5YlZ0ZGZTQndhWEJsY3lBdElGQnBjR1VnYVc1emRHRnVZMlZ6SUhSdklISmxaMmx6ZEdWeUlHZHNiMkpoYkd4NUxseHVJQ0FnS2lCQWNtVjBkWEp1SUh0T1pYTjBRbTl2ZEhOMGNtRndaWEo5SUZKbGRIVnlibk1nZEdobElHTnNZWE56SUdadmNpQmphR0ZwYm1sdVp5NWNiaUFnSUNvdlhHNGdJSE4wWVhScFl5QjFjMlZIYkc5aVlXeFFhWEJsY3lndUxpNXdhWEJsY3pvZ1VHbHdaVlJ5WVc1elptOXliVnRkS1NCN1hHNGdJQ0FnYVdZZ0tIQnBjR1Z6TG14bGJtZDBhQ0ErSURBcElIUm9hWE11WVhCd0xuVnpaVWRzYjJKaGJGQnBjR1Z6S0M0dUxuQnBjR1Z6S1R0Y2JpQWdJQ0J5WlhSMWNtNGdkR2hwY3p0Y2JpQWdmVnh1WEc0Z0lDOHFLbHh1SUNBZ0tpQkFaR1Z6WTNKcGNIUnBiMjVjYmlBZ0lDb2dVbVZuYVhOMFpYSnpJRzl1WlNCdmNpQnRiM0psSUdkc2IySmhiQ0JsZUdObGNIUnBiMjRnWm1sc2RHVnljeTVjYmlBZ0lDcGNiaUFnSUNvZ1FITjFiVzFoY25sY2JpQWdJQ29nU1dZZ2JtOGdabWxzZEdWeWN5QmhjbVVnY0hKdmRtbGtaV1FzSUdsMElHRjFkRzl0WVhScFkyRnNiSGtnY21WbmFYTjBaWEp6SUdFZ1pHVm1ZWFZzZEZ4dUlDQWdLaUJ6WlhRZ2IyWWdjM1JoYm1SaGNtUWdaWGhqWlhCMGFXOXVJR1pwYkhSbGNuTWdabTl5SUdOdmJXMXZiaUJsY25KdmNpQjBlWEJsY3lCc2FXdGxYRzRnSUNBcUlHQklkSFJ3UlhoalpYQjBhVzl1WUN3Z1lGWmhiR2xrWVhScGIyNUZlR05sY0hScGIyNWdMQ0JnUTI5dVpteHBZM1JGZUdObGNIUnBiMjVnTENCaGJtUWdiM1JvWlhKekxseHVJQ0FnS2x4dUlDQWdLaUJVYUdVZ1pHVm1ZWFZzZENCZ1JHVmpZV1pGZUdObGNIUnBiMjVHYVd4MFpYSmdJR2x6SUdOdmJuTjBjblZqZEdWa0lIZHBkR2dnZEdobElHRndjR3hwWTJGMGFXOXVKM05jYmlBZ0lDb2dZRTF2WkhWc1pWSmxabUFnYzI4Z2FYUWdZMkZ1SUhKbGMyOXNkbVVnZEdobElISmxjWFZsYzNRdGMyTnZjR1ZrSUdCRVpXTmhabEpsY1hWbGMzUkRiMjUwWlhoMFlDQW9ZVzVrWEc0Z0lDQXFJR2wwY3lCamJHbGxiblF0WW05MWJtUWdiRzluWjJWeUtTQm1iM0lnZEdobElISmxjWFZsYzNRZ2RHaGhkQ0IwYUhKbGR5d2dhVzV6ZEdWaFpDQnZaaUJzYjJkbmFXNW5YRzRnSUNBcUlIUm9jbTkxWjJnZ2RHaGxJR2RsYm1WeWFXTWdaMnh2WW1Gc0lHeHZaMmRsY2k1Y2JpQWdJQ3BjYmlBZ0lDb2dRSEJoY21GdElIc3VMaTVGZUdObGNIUnBiMjVHYVd4MFpYSmJYWDBnWm1sc2RHVnljeUF0SUU5d2RHbHZibUZzSUdacGJIUmxjbk1nZEc4Z1lYQndiSGtnWjJ4dlltRnNiSGt1WEc0Z0lDQXFMMXh1SUNCemRHRjBhV01nZFhObFIyeHZZbUZzUm1sc2RHVnljeWd1TGk1bWFXeDBaWEp6T2lCaGJubGJYU2tnZTF4dUlDQWdJSFJvYVhNdVlYQndMblZ6WlVkc2IySmhiRVpwYkhSbGNuTW9YRzRnSUNBZ0lDQXVMaTRvWm1sc2RHVnljeTVzWlc1bmRHZ2dQaUF3WEc0Z0lDQWdJQ0FnSUQ4Z1ptbHNkR1Z5YzF4dUlDQWdJQ0FnSUNBNklGdHVaWGNnUkdWallXWkZlR05sY0hScGIyNUdhV3gwWlhJb2RHaHBjeTVoY0hBdVoyVjBLRTF2WkhWc1pWSmxaaXdnZXlCemRISnBZM1E2SUdaaGJITmxJSDBwS1YwcFhHNGdJQ0FnS1R0Y2JpQWdJQ0J5WlhSMWNtNGdkR2hwY3p0Y2JpQWdmVnh1WEc0Z0lDOHFLbHh1SUNBZ0tpQkFaR1Z6WTNKcGNIUnBiMjVjYmlBZ0lDb2dVbVZuYVhOMFpYSnpJR2RzYjJKaGJDQnBiblJsY21ObGNIUnZjbk1nWm05eUlISmxjWFZsYzNRZ1lXNWtJSEpsYzNCdmJuTmxJSFJ5WVc1elptOXliV0YwYVc5dUxseHVJQ0FnS2x4dUlDQWdLaUJBYzNWdGJXRnllVnh1SUNBZ0tpQkpiblJsY21ObGNIUnZjbk1nWVd4c2IzY2dZV1IyWVc1alpXUWdjbVZ4ZFdWemRDOXlaWE53YjI1elpTQnRZVzVwY0hWc1lYUnBiMjRnYzNWamFDQmhjMXh1SUNBZ0tpQnpaWEpwWVd4cGVtRjBhVzl1TENCc2IyZG5hVzVuTENCdmNpQjBjbUZ1YzJadmNtMWhkR2x2Ymk0Z1RYVnNkR2x3YkdVZ2FXNTBaWEpqWlhCMGIzSnpYRzRnSUNBcUlHTmhiaUJpWlNCaFpHUmxaQ0JtYjNJZ2JXOWtkV3hoY2lCamIyNW1hV2QxY21GMGFXOXVMbHh1SUNBZ0tseHVJQ0FnS2lCQWNHRnlZVzBnZXk0dUxrNWxjM1JKYm5SbGNtTmxjSFJ2Y2x0ZGZTQnBiblJsY21ObGNIUnZjbk1nTFNCSmJuUmxjbU5sY0hSdmNpQnBibk4wWVc1alpYTWdkRzhnY21WbmFYTjBaWEl1WEc0Z0lDQXFJRUJ5WlhSMWNtNGdlMDVsYzNSQ2IyOTBjM1J5WVhCbGNuMGdVbVYwZFhKdWN5QjBhR1VnWTJ4aGMzTWdabTl5SUdOb1lXbHVhVzVuSUdOdmJtWnBaM1Z5WVhScGIyNHVYRzRnSUNBcUwxeHVJQ0J6ZEdGMGFXTWdkWE5sUjJ4dlltRnNTVzUwWlhKalpYQjBiM0p6S0M0dUxtbHVkR1Z5WTJWd2RHOXljem9nVG1WemRFbHVkR1Z5WTJWd2RHOXlXMTBwSUh0Y2JpQWdJQ0JwWmlBb2FXNTBaWEpqWlhCMGIzSnpMbXhsYm1kMGFDQStJREFwWEc0Z0lDQWdJQ0IwYUdsekxtRndjQzUxYzJWSGJHOWlZV3hKYm5SbGNtTmxjSFJ2Y25Nb0xpNHVhVzUwWlhKalpYQjBiM0p6S1R0Y2JpQWdJQ0J5WlhSMWNtNGdkR2hwY3p0Y2JpQWdmVnh1WEc0Z0lDOHFLbHh1SUNBZ0tpQkFaR1Z6WTNKcGNIUnBiMjVjYmlBZ0lDb2dVM1JoY25SeklIUm9aU0JPWlhOMFNsTWdZWEJ3YkdsallYUnBiMjRnWVc1a0lHSnBibVJ6SUdsMElIUnZJSFJvWlNCbmFYWmxiaUJ3YjNKMElHRnVaQ0JvYjNOMExseHVJQ0FnS2x4dUlDQWdLaUJBYzNWdGJXRnllVnh1SUNBZ0tpQk1hWE4wWlc1eklHOXVJSFJvWlNCemNHVmphV1pwWldRZ2NHOXlkQ0JoYm1RZ2IzQjBhVzl1WVd4c2VTQmhJR2h2YzNRdUlFOXVZMlVnYzNSaGNuUmxaQ3hjYmlBZ0lDb2diRzluY3lCMGFHVWdZWEJ3YkdsallYUnBiMjRnVlZKTUlHWnZjaUJsWVhONUlHRmpZMlZ6Y3k0Z1ZHaGxJSE4wWVhKMGRYQWdjSEp2WTJWemN5QnlaWE52YkhabGMxeHVJQ0FnS2lCdmJtTmxJSFJvWlNCaGNIQnNhV05oZEdsdmJpQnBjeUJ6ZFdOalpYTnpablZzYkhrZ2NuVnVibWx1Wnk1Y2JpQWdJQ3BjYmlBZ0lDb2dRSEJoY21GdElIdHVkVzFpWlhKOUlGdHdiM0owUFRNd01EQmRJQzBnVUc5eWRDQnVkVzFpWlhJZ2RHOGdiR2x6ZEdWdUlHOXVMbHh1SUNBZ0tpQkFjR0Z5WVcwZ2UzTjBjbWx1WjMwZ1cyaHZjM1JkSUMwZ1QzQjBhVzl1WVd3Z2FHOXpkQ0J2Y2lCSlVDQmhaR1J5WlhOeklIUnZJR0pwYm1RZ2RHOHVYRzRnSUNBcUlFQndZWEpoYlNCN1ltOXZiR1ZoYm4wZ1cyeHZaejEwY25WbFhTQXRJRmRvWlhSb1pYSWdkRzhnYkc5bklIUm9aU0JoY0hCc2FXTmhkR2x2YmlCVlVrd2dkWEJ2YmlCemRHRnlkSFZ3TGx4dUlDQWdLaUJBY21WMGRYSnVJSHRRY205dGFYTmxQSFp2YVdRK2ZTQlNaWE52YkhabGN5QnZibU5sSUhSb1pTQmhjSEJzYVdOaGRHbHZiaUJ6ZEdGeWRITWdjM1ZqWTJWemMyWjFiR3g1TGx4dUlDQWdLaTljYmlBZ2MzUmhkR2xqSUdGemVXNWpJSE4wWVhKMEtGeHVJQ0FnSUhCdmNuUTZJRzUxYldKbGNpQTlJRTUxYldKbGNpaHdjbTlqWlhOekxtVnVkaTVRVDFKVUtTQjhmQ0F6TURBd0xGeHVJQ0FnSUdodmMzUTZJSE4wY21sdVp5QjhJSFZ1WkdWbWFXNWxaQ0E5SUhWdVpHVm1hVzVsWkN4Y2JpQWdJQ0JzYjJjNklHSnZiMnhsWVc0Z1BTQjBjblZsWEc0Z0lDa2dlMXh1SUNBZ0lIUm9hWE11WVhCd0xteHBjM1JsYmlod2IzSjBMQ0JvYjNOMElHRnpJR0Z1ZVNrdWRHaGxiaWhoYzNsdVl5QW9LU0E5UGlCN1hHNGdJQ0FnSUNCcFppQW9iRzluS1NCN1hHNGdJQ0FnSUNBZ0lHTnZibk4wSUhWeWJDQTlJR0YzWVdsMElIUm9hWE11WVhCd0xtZGxkRlZ5YkNncE8xeHVJQ0FnSUNBZ0lDQjBhR2x6TG14dloyZGxjaTVzYjJjb1lQQ2Ztb0FnUVhCd2JHbGpZWFJwYjI0Z2FYTWdjblZ1Ym1sdVp5QmhkRG9nSkh0MWNteDlZQ2s3WEc0Z0lDQWdJQ0I5WEc0Z0lDQWdmU2s3WEc0Z0lIMWNibjFjYmlKZGZRPT0iXX0=