@dereekb/dbx-firebase 9.3.0 → 9.3.3

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.
@@ -44,6 +44,10 @@ export class DbxFirebaseCollectionChangeTriggerInstance {
44
44
  /**
45
45
  * Creates a new DbxFirebaseCollectionChangeWatcher, set the modes to "auto", and creates a new DbxFirebaseCollectionChangeTriggerInstance.
46
46
  *
47
+ * If no trigger function is provided it will default to resetting the store.
48
+ *
49
+ * NOTE: Don't forget to initialize the DbxFirebaseCollectionChangeTriggerInstance and handle other lifecycle changes.
50
+ *
47
51
  * @param store
48
52
  * @param triggerFunction
49
53
  * @returns
@@ -52,7 +56,10 @@ export function dbxFirebaseCollectionChangeTriggerForStore(store, triggerFunctio
52
56
  return dbxFirebaseCollectionChangeTrigger({
53
57
  watcher: dbxFirebaseCollectionChangeWatcher(store, 'auto'),
54
58
  destroyWatcherOnDestroy: true,
55
- triggerFunction
59
+ triggerFunction: triggerFunction ??
60
+ (() => {
61
+ store.restart();
62
+ })
56
63
  });
57
64
  }
58
65
  export function dbxFirebaseCollectionChangeTriggerForWatcher(watcher, triggerFunction) {
@@ -65,4 +72,4 @@ export function dbxFirebaseCollectionChangeTriggerForWatcher(watcher, triggerFun
65
72
  export function dbxFirebaseCollectionChangeTrigger(config) {
66
73
  return new DbxFirebaseCollectionChangeTriggerInstance(config);
67
74
  }
68
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29sbGVjdGlvbi5jaGFuZ2UudHJpZ2dlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2RieC1maXJlYmFzZS9zcmMvbGliL21vZGVsL2xvYWRlci9jb2xsZWN0aW9uLmNoYW5nZS50cmlnZ2VyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxrQkFBa0IsRUFBcUIsWUFBWSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3BGLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxFQUFFLFNBQVMsRUFBRSxVQUFVLEVBQUUsS0FBSyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBRTdFLE9BQU8sRUFBc0Msa0NBQWtDLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUtySDs7Ozs7R0FLRztBQUNILE1BQU0sQ0FBQyxNQUFNLG1EQUFtRCxHQUFvRCxDQUFDLFFBQVEsRUFBRSxFQUFFLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsT0FBTyxFQUFFLENBQUM7QUF1Qm5LLE1BQU0sT0FBTywwQ0FBMEM7SUFNckQsWUFBcUIsTUFBMkQ7UUFBM0QsV0FBTSxHQUFOLE1BQU0sQ0FBcUQ7UUFIeEUscUJBQWdCLEdBQUcsSUFBSSxlQUFlLENBQXVELFNBQVMsQ0FBQyxDQUFDO1FBQ3hHLFNBQUksR0FBRyxJQUFJLGtCQUFrQixFQUFFLENBQUM7UUFHdEMsSUFBSSxDQUFDLE9BQU8sR0FBRyxNQUFNLENBQUMsT0FBTyxDQUFDO1FBQzlCLElBQUksQ0FBQyxlQUFlLEdBQUcsTUFBTSxDQUFDLGVBQWUsSUFBSSxtREFBbUQsQ0FBQztJQUN2RyxDQUFDO0lBRUQsSUFBSTtRQUNGLElBQUksQ0FBQyxJQUFJLENBQUMsWUFBWSxHQUFHLElBQUksQ0FBQyxnQkFBZ0I7YUFDM0MsSUFBSSxDQUNILFNBQVMsQ0FBQyxDQUFDLGVBQWUsRUFBRSxFQUFFO1lBQzVCLElBQUksZUFBZSxFQUFFO2dCQUNuQixPQUFPLElBQUksQ0FBQyxPQUFPLENBQUMsVUFBVSxDQUFDLElBQUksQ0FDakMsTUFBTSxDQUFDLENBQUMsU0FBUyxFQUFFLEVBQUUsQ0FBQyxTQUFTLENBQUMsRUFDaEMsVUFBVSxDQUFDLEdBQUcsRUFBRSxDQUFDLFlBQVksQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUN0RCxDQUFDO2FBQ0g7aUJBQU07Z0JBQ0wsT0FBTyxLQUFLLENBQUM7YUFDZDtRQUNILENBQUMsQ0FBQyxDQUNIO2FBQ0EsU0FBUyxFQUFFLENBQUM7SUFDakIsQ0FBQztJQUVELE9BQU87UUFDTCxJQUFJLENBQUMsZ0JBQWdCLENBQUMsUUFBUSxFQUFFLENBQUM7UUFFakMsSUFBSSxJQUFJLENBQUMsTUFBTSxDQUFDLHVCQUF1QixLQUFLLElBQUksRUFBRTtZQUMvQyxJQUFJLENBQUMsT0FBa0MsRUFBRSxPQUFPLEVBQUUsQ0FBQztTQUNyRDtJQUNILENBQUM7SUFFRCxJQUFJLGVBQWU7UUFDakIsT0FBTyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsS0FBSyxDQUFDO0lBQ3JDLENBQUM7SUFFRCxJQUFJLGVBQWUsQ0FBQyxlQUFxRTtRQUN2RixJQUFJLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxDQUFDO0lBQzlDLENBQUM7Q0FDRjtBQUVEOzs7Ozs7R0FNRztBQUNILE1BQU0sVUFBVSwwQ0FBMEMsQ0FBcUQsS0FBUSxFQUFFLGVBQXNFO0lBQzdMLE9BQU8sa0NBQWtDLENBQUk7UUFDM0MsT0FBTyxFQUFFLGtDQUFrQyxDQUFJLEtBQUssRUFBRSxNQUFNLENBQUM7UUFDN0QsdUJBQXVCLEVBQUUsSUFBSTtRQUM3QixlQUFlO0tBQ2hCLENBQUMsQ0FBQztBQUNMLENBQUM7QUFFRCxNQUFNLFVBQVUsNENBQTRDLENBQXFELE9BQThDLEVBQUUsZUFBc0U7SUFDck8sT0FBTyxrQ0FBa0MsQ0FBSTtRQUMzQyxPQUFPO1FBQ1AsdUJBQXVCLEVBQUUsS0FBSztRQUM5QixlQUFlO0tBQ2hCLENBQUMsQ0FBQztBQUNMLENBQUM7QUFFRCxNQUFNLFVBQVUsa0NBQWtDLENBQXFELE1BQTJEO0lBQ2hLLE9BQU8sSUFBSSwwQ0FBMEMsQ0FBQyxNQUFNLENBQUMsQ0FBQztBQUNoRSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgU3Vic2NyaXB0aW9uT2JqZWN0LCBPYnNlcnZhYmxlT3JWYWx1ZSwgYXNPYnNlcnZhYmxlIH0gZnJvbSAnQGRlcmVla2Ivcnhqcyc7XG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QsIGZpbHRlciwgc3dpdGNoTWFwLCBleGhhdXN0TWFwLCBFTVBUWSB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgRGVzdHJveWFibGUsIE1heWJlLCBJbml0aWFsaXplZCB9IGZyb20gJ0BkZXJlZWtiL3V0aWwnO1xuaW1wb3J0IHsgRGJ4RmlyZWJhc2VDb2xsZWN0aW9uQ2hhbmdlV2F0Y2hlciwgZGJ4RmlyZWJhc2VDb2xsZWN0aW9uQ2hhbmdlV2F0Y2hlciB9IGZyb20gJy4vY29sbGVjdGlvbi5jaGFuZ2Uud2F0Y2hlcic7XG5pbXBvcnQgeyBEYnhGaXJlYmFzZUNvbGxlY3Rpb25Mb2FkZXJBY2Nlc3NvciB9IGZyb20gJy4vY29sbGVjdGlvbi5sb2FkZXInO1xuXG5leHBvcnQgdHlwZSBEYnhGaXJlYmFzZUNvbGxlY3Rpb25DaGFuZ2VUcmlnZ2VyRnVuY3Rpb248UyBleHRlbmRzIERieEZpcmViYXNlQ29sbGVjdGlvbkxvYWRlckFjY2Vzc29yPGFueT4+ID0gKGluc3RhbmNlOiBEYnhGaXJlYmFzZUNvbGxlY3Rpb25DaGFuZ2VUcmlnZ2VySW5zdGFuY2U8Uz4pID0+IE9ic2VydmFibGVPclZhbHVlPHZvaWQ+O1xuXG4vKipcbiAqIFJlc3RhcnRzIHRoZSBzdG9yZS5cbiAqXG4gKiBAcGFyYW0gaW5zdGFuY2VcbiAqIEByZXR1cm5zXG4gKi9cbmV4cG9ydCBjb25zdCBERUZBVUxUX0ZJUkVCQVNFX0NPTExFQ1RJT05fQ0hBTkdFX1RSSUdHRVJfRlVOQ1RJT046IERieEZpcmViYXNlQ29sbGVjdGlvbkNoYW5nZVRyaWdnZXJGdW5jdGlvbjxhbnk+ID0gKGluc3RhbmNlKSA9PiBpbnN0YW5jZS53YXRjaGVyLnN0b3JlLnJlc3RhcnQoKTtcblxuZXhwb3J0IGludGVyZmFjZSBEYnhGaXJlYmFzZUNvbGxlY3Rpb25DaGFuZ2VUcmlnZ2VySW5zdGFuY2VDb25maWc8UyBleHRlbmRzIERieEZpcmViYXNlQ29sbGVjdGlvbkxvYWRlckFjY2Vzc29yPGFueT4+IHtcbiAgcmVhZG9ubHkgd2F0Y2hlcjogRGJ4RmlyZWJhc2VDb2xsZWN0aW9uQ2hhbmdlV2F0Y2hlcjxTPiAmIFBhcnRpYWw8RGVzdHJveWFibGU+O1xuICAvKipcbiAgICogV2hldGhlciBvciBub3QgdG8gYWxzbyBkZXN0cm95IHRoZSB3YXRjaGVyIHdoZW4gdGhlIHRyaWdnZXIgaW5zdGFuY2UgaXMgZGVzdHJveWVkLlxuICAgKlxuICAgKiBEZWZhdWx0cyB0byBmYWxzZS5cbiAgICovXG4gIHJlYWRvbmx5IGRlc3Ryb3lXYXRjaGVyT25EZXN0cm95PzogYm9vbGVhbjtcbiAgLyoqXG4gICAqIEluaXRpYWwgdHJpZ2dlciBmdW5jdGlvbiB0byB1c2UuXG4gICAqXG4gICAqIEJ5IGRlZmF1bHQgcmVzdGFydHMgdGhlIHN0b3JlLlxuICAgKi9cbiAgcmVhZG9ubHkgdHJpZ2dlckZ1bmN0aW9uPzogTWF5YmU8RGJ4RmlyZWJhc2VDb2xsZWN0aW9uQ2hhbmdlVHJpZ2dlckZ1bmN0aW9uPFM+Pjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBEYnhGaXJlYmFzZUNvbGxlY3Rpb25DaGFuZ2VUcmlnZ2VyPFMgZXh0ZW5kcyBEYnhGaXJlYmFzZUNvbGxlY3Rpb25Mb2FkZXJBY2Nlc3Nvcjxhbnk+PiB7XG4gIHJlYWRvbmx5IHdhdGNoZXI6IERieEZpcmViYXNlQ29sbGVjdGlvbkNoYW5nZVdhdGNoZXI8Uz47XG4gIHRyaWdnZXJGdW5jdGlvbj86IE1heWJlPERieEZpcmViYXNlQ29sbGVjdGlvbkNoYW5nZVRyaWdnZXJGdW5jdGlvbjxTPj47XG59XG5cbmV4cG9ydCBjbGFzcyBEYnhGaXJlYmFzZUNvbGxlY3Rpb25DaGFuZ2VUcmlnZ2VySW5zdGFuY2U8UyBleHRlbmRzIERieEZpcmViYXNlQ29sbGVjdGlvbkxvYWRlckFjY2Vzc29yPGFueT4+IGltcGxlbWVudHMgRGJ4RmlyZWJhc2VDb2xsZWN0aW9uQ2hhbmdlVHJpZ2dlcjxTPiwgSW5pdGlhbGl6ZWQsIERlc3Ryb3lhYmxlIHtcbiAgcmVhZG9ubHkgd2F0Y2hlcjogRGJ4RmlyZWJhc2VDb2xsZWN0aW9uQ2hhbmdlV2F0Y2hlcjxTPjtcblxuICBwcml2YXRlIF90cmlnZ2VyRnVuY3Rpb24gPSBuZXcgQmVoYXZpb3JTdWJqZWN0PE1heWJlPERieEZpcmViYXNlQ29sbGVjdGlvbkNoYW5nZVRyaWdnZXJGdW5jdGlvbjxTPj4+KHVuZGVmaW5lZCk7XG4gIHByaXZhdGUgX3N1YiA9IG5ldyBTdWJzY3JpcHRpb25PYmplY3QoKTtcblxuICBjb25zdHJ1Y3RvcihyZWFkb25seSBjb25maWc6IERieEZpcmViYXNlQ29sbGVjdGlvbkNoYW5nZVRyaWdnZXJJbnN0YW5jZUNvbmZpZzxTPikge1xuICAgIHRoaXMud2F0Y2hlciA9IGNvbmZpZy53YXRjaGVyO1xuICAgIHRoaXMudHJpZ2dlckZ1bmN0aW9uID0gY29uZmlnLnRyaWdnZXJGdW5jdGlvbiA/PyBERUZBVUxUX0ZJUkVCQVNFX0NPTExFQ1RJT05fQ0hBTkdFX1RSSUdHRVJfRlVOQ1RJT047XG4gIH1cblxuICBpbml0KCk6IHZvaWQge1xuICAgIHRoaXMuX3N1Yi5zdWJzY3JpcHRpb24gPSB0aGlzLl90cmlnZ2VyRnVuY3Rpb25cbiAgICAgIC5waXBlKFxuICAgICAgICBzd2l0Y2hNYXAoKHRyaWdnZXJGdW5jdGlvbikgPT4ge1xuICAgICAgICAgIGlmICh0cmlnZ2VyRnVuY3Rpb24pIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLndhdGNoZXIudHJpZ2dlcmVkJC5waXBlKFxuICAgICAgICAgICAgICBmaWx0ZXIoKHRyaWdnZXJlZCkgPT4gdHJpZ2dlcmVkKSxcbiAgICAgICAgICAgICAgZXhoYXVzdE1hcCgoKSA9PiBhc09ic2VydmFibGUodHJpZ2dlckZ1bmN0aW9uKHRoaXMpKSlcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiBFTVBUWTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pXG4gICAgICApXG4gICAgICAuc3Vic2NyaWJlKCk7XG4gIH1cblxuICBkZXN0cm95KCk6IHZvaWQge1xuICAgIHRoaXMuX3RyaWdnZXJGdW5jdGlvbi5jb21wbGV0ZSgpO1xuXG4gICAgaWYgKHRoaXMuY29uZmlnLmRlc3Ryb3lXYXRjaGVyT25EZXN0cm95ID09PSB0cnVlKSB7XG4gICAgICAodGhpcy53YXRjaGVyIGFzIHVua25vd24gYXMgRGVzdHJveWFibGUpPy5kZXN0cm95KCk7XG4gICAgfVxuICB9XG5cbiAgZ2V0IHRyaWdnZXJGdW5jdGlvbigpOiBNYXliZTxEYnhGaXJlYmFzZUNvbGxlY3Rpb25DaGFuZ2VUcmlnZ2VyRnVuY3Rpb248Uz4+IHtcbiAgICByZXR1cm4gdGhpcy5fdHJpZ2dlckZ1bmN0aW9uLnZhbHVlO1xuICB9XG5cbiAgc2V0IHRyaWdnZXJGdW5jdGlvbih0cmlnZ2VyRnVuY3Rpb246IE1heWJlPERieEZpcmViYXNlQ29sbGVjdGlvbkNoYW5nZVRyaWdnZXJGdW5jdGlvbjxTPj4pIHtcbiAgICB0aGlzLl90cmlnZ2VyRnVuY3Rpb24ubmV4dCh0cmlnZ2VyRnVuY3Rpb24pO1xuICB9XG59XG5cbi8qKlxuICogQ3JlYXRlcyBhIG5ldyBEYnhGaXJlYmFzZUNvbGxlY3Rpb25DaGFuZ2VXYXRjaGVyLCBzZXQgdGhlIG1vZGVzIHRvIFwiYXV0b1wiLCBhbmQgY3JlYXRlcyBhIG5ldyBEYnhGaXJlYmFzZUNvbGxlY3Rpb25DaGFuZ2VUcmlnZ2VySW5zdGFuY2UuXG4gKlxuICogQHBhcmFtIHN0b3JlXG4gKiBAcGFyYW0gdHJpZ2dlckZ1bmN0aW9uXG4gKiBAcmV0dXJuc1xuICovXG5leHBvcnQgZnVuY3Rpb24gZGJ4RmlyZWJhc2VDb2xsZWN0aW9uQ2hhbmdlVHJpZ2dlckZvclN0b3JlPFMgZXh0ZW5kcyBEYnhGaXJlYmFzZUNvbGxlY3Rpb25Mb2FkZXJBY2Nlc3Nvcjxhbnk+PihzdG9yZTogUywgdHJpZ2dlckZ1bmN0aW9uPzogTWF5YmU8RGJ4RmlyZWJhc2VDb2xsZWN0aW9uQ2hhbmdlVHJpZ2dlckZ1bmN0aW9uPFM+Pik6IERieEZpcmViYXNlQ29sbGVjdGlvbkNoYW5nZVRyaWdnZXJJbnN0YW5jZTxTPiB7XG4gIHJldHVybiBkYnhGaXJlYmFzZUNvbGxlY3Rpb25DaGFuZ2VUcmlnZ2VyPFM+KHtcbiAgICB3YXRjaGVyOiBkYnhGaXJlYmFzZUNvbGxlY3Rpb25DaGFuZ2VXYXRjaGVyPFM+KHN0b3JlLCAnYXV0bycpLFxuICAgIGRlc3Ryb3lXYXRjaGVyT25EZXN0cm95OiB0cnVlLFxuICAgIHRyaWdnZXJGdW5jdGlvblxuICB9KTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGRieEZpcmViYXNlQ29sbGVjdGlvbkNoYW5nZVRyaWdnZXJGb3JXYXRjaGVyPFMgZXh0ZW5kcyBEYnhGaXJlYmFzZUNvbGxlY3Rpb25Mb2FkZXJBY2Nlc3Nvcjxhbnk+Pih3YXRjaGVyOiBEYnhGaXJlYmFzZUNvbGxlY3Rpb25DaGFuZ2VXYXRjaGVyPFM+LCB0cmlnZ2VyRnVuY3Rpb24/OiBNYXliZTxEYnhGaXJlYmFzZUNvbGxlY3Rpb25DaGFuZ2VUcmlnZ2VyRnVuY3Rpb248Uz4+KTogRGJ4RmlyZWJhc2VDb2xsZWN0aW9uQ2hhbmdlVHJpZ2dlckluc3RhbmNlPFM+IHtcbiAgcmV0dXJuIGRieEZpcmViYXNlQ29sbGVjdGlvbkNoYW5nZVRyaWdnZXI8Uz4oe1xuICAgIHdhdGNoZXIsXG4gICAgZGVzdHJveVdhdGNoZXJPbkRlc3Ryb3k6IGZhbHNlLFxuICAgIHRyaWdnZXJGdW5jdGlvblxuICB9KTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGRieEZpcmViYXNlQ29sbGVjdGlvbkNoYW5nZVRyaWdnZXI8UyBleHRlbmRzIERieEZpcmViYXNlQ29sbGVjdGlvbkxvYWRlckFjY2Vzc29yPGFueT4+KGNvbmZpZzogRGJ4RmlyZWJhc2VDb2xsZWN0aW9uQ2hhbmdlVHJpZ2dlckluc3RhbmNlQ29uZmlnPFM+KTogRGJ4RmlyZWJhc2VDb2xsZWN0aW9uQ2hhbmdlVHJpZ2dlckluc3RhbmNlPFM+IHtcbiAgcmV0dXJuIG5ldyBEYnhGaXJlYmFzZUNvbGxlY3Rpb25DaGFuZ2VUcmlnZ2VySW5zdGFuY2UoY29uZmlnKTtcbn1cbiJdfQ==
75
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29sbGVjdGlvbi5jaGFuZ2UudHJpZ2dlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2RieC1maXJlYmFzZS9zcmMvbGliL21vZGVsL2xvYWRlci9jb2xsZWN0aW9uLmNoYW5nZS50cmlnZ2VyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxrQkFBa0IsRUFBcUIsWUFBWSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3BGLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxFQUFFLFNBQVMsRUFBRSxVQUFVLEVBQUUsS0FBSyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBRTdFLE9BQU8sRUFBc0Msa0NBQWtDLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUtySDs7Ozs7R0FLRztBQUNILE1BQU0sQ0FBQyxNQUFNLG1EQUFtRCxHQUFvRCxDQUFDLFFBQVEsRUFBRSxFQUFFLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsT0FBTyxFQUFFLENBQUM7QUF1Qm5LLE1BQU0sT0FBTywwQ0FBMEM7SUFNckQsWUFBcUIsTUFBMkQ7UUFBM0QsV0FBTSxHQUFOLE1BQU0sQ0FBcUQ7UUFIeEUscUJBQWdCLEdBQUcsSUFBSSxlQUFlLENBQXVELFNBQVMsQ0FBQyxDQUFDO1FBQ3hHLFNBQUksR0FBRyxJQUFJLGtCQUFrQixFQUFFLENBQUM7UUFHdEMsSUFBSSxDQUFDLE9BQU8sR0FBRyxNQUFNLENBQUMsT0FBTyxDQUFDO1FBQzlCLElBQUksQ0FBQyxlQUFlLEdBQUcsTUFBTSxDQUFDLGVBQWUsSUFBSSxtREFBbUQsQ0FBQztJQUN2RyxDQUFDO0lBRUQsSUFBSTtRQUNGLElBQUksQ0FBQyxJQUFJLENBQUMsWUFBWSxHQUFHLElBQUksQ0FBQyxnQkFBZ0I7YUFDM0MsSUFBSSxDQUNILFNBQVMsQ0FBQyxDQUFDLGVBQWUsRUFBRSxFQUFFO1lBQzVCLElBQUksZUFBZSxFQUFFO2dCQUNuQixPQUFPLElBQUksQ0FBQyxPQUFPLENBQUMsVUFBVSxDQUFDLElBQUksQ0FDakMsTUFBTSxDQUFDLENBQUMsU0FBUyxFQUFFLEVBQUUsQ0FBQyxTQUFTLENBQUMsRUFDaEMsVUFBVSxDQUFDLEdBQUcsRUFBRSxDQUFDLFlBQVksQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUN0RCxDQUFDO2FBQ0g7aUJBQU07Z0JBQ0wsT0FBTyxLQUFLLENBQUM7YUFDZDtRQUNILENBQUMsQ0FBQyxDQUNIO2FBQ0EsU0FBUyxFQUFFLENBQUM7SUFDakIsQ0FBQztJQUVELE9BQU87UUFDTCxJQUFJLENBQUMsZ0JBQWdCLENBQUMsUUFBUSxFQUFFLENBQUM7UUFFakMsSUFBSSxJQUFJLENBQUMsTUFBTSxDQUFDLHVCQUF1QixLQUFLLElBQUksRUFBRTtZQUMvQyxJQUFJLENBQUMsT0FBa0MsRUFBRSxPQUFPLEVBQUUsQ0FBQztTQUNyRDtJQUNILENBQUM7SUFFRCxJQUFJLGVBQWU7UUFDakIsT0FBTyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsS0FBSyxDQUFDO0lBQ3JDLENBQUM7SUFFRCxJQUFJLGVBQWUsQ0FBQyxlQUFxRTtRQUN2RixJQUFJLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxDQUFDO0lBQzlDLENBQUM7Q0FDRjtBQUVEOzs7Ozs7Ozs7O0dBVUc7QUFDSCxNQUFNLFVBQVUsMENBQTBDLENBQXFELEtBQVEsRUFBRSxlQUFzRTtJQUM3TCxPQUFPLGtDQUFrQyxDQUFJO1FBQzNDLE9BQU8sRUFBRSxrQ0FBa0MsQ0FBSSxLQUFLLEVBQUUsTUFBTSxDQUFDO1FBQzdELHVCQUF1QixFQUFFLElBQUk7UUFDN0IsZUFBZSxFQUNiLGVBQWU7WUFDZixDQUFDLEdBQUcsRUFBRTtnQkFDSixLQUFLLENBQUMsT0FBTyxFQUFFLENBQUM7WUFDbEIsQ0FBQyxDQUFDO0tBQ0wsQ0FBQyxDQUFDO0FBQ0wsQ0FBQztBQUVELE1BQU0sVUFBVSw0Q0FBNEMsQ0FBcUQsT0FBOEMsRUFBRSxlQUFzRTtJQUNyTyxPQUFPLGtDQUFrQyxDQUFJO1FBQzNDLE9BQU87UUFDUCx1QkFBdUIsRUFBRSxLQUFLO1FBQzlCLGVBQWU7S0FDaEIsQ0FBQyxDQUFDO0FBQ0wsQ0FBQztBQUVELE1BQU0sVUFBVSxrQ0FBa0MsQ0FBcUQsTUFBMkQ7SUFDaEssT0FBTyxJQUFJLDBDQUEwQyxDQUFDLE1BQU0sQ0FBQyxDQUFDO0FBQ2hFLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBTdWJzY3JpcHRpb25PYmplY3QsIE9ic2VydmFibGVPclZhbHVlLCBhc09ic2VydmFibGUgfSBmcm9tICdAZGVyZWVrYi9yeGpzJztcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCwgZmlsdGVyLCBzd2l0Y2hNYXAsIGV4aGF1c3RNYXAsIEVNUFRZIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBEZXN0cm95YWJsZSwgTWF5YmUsIEluaXRpYWxpemVkIH0gZnJvbSAnQGRlcmVla2IvdXRpbCc7XG5pbXBvcnQgeyBEYnhGaXJlYmFzZUNvbGxlY3Rpb25DaGFuZ2VXYXRjaGVyLCBkYnhGaXJlYmFzZUNvbGxlY3Rpb25DaGFuZ2VXYXRjaGVyIH0gZnJvbSAnLi9jb2xsZWN0aW9uLmNoYW5nZS53YXRjaGVyJztcbmltcG9ydCB7IERieEZpcmViYXNlQ29sbGVjdGlvbkxvYWRlckFjY2Vzc29yIH0gZnJvbSAnLi9jb2xsZWN0aW9uLmxvYWRlcic7XG5cbmV4cG9ydCB0eXBlIERieEZpcmViYXNlQ29sbGVjdGlvbkNoYW5nZVRyaWdnZXJGdW5jdGlvbjxTIGV4dGVuZHMgRGJ4RmlyZWJhc2VDb2xsZWN0aW9uTG9hZGVyQWNjZXNzb3I8YW55Pj4gPSAoaW5zdGFuY2U6IERieEZpcmViYXNlQ29sbGVjdGlvbkNoYW5nZVRyaWdnZXJJbnN0YW5jZTxTPikgPT4gT2JzZXJ2YWJsZU9yVmFsdWU8dm9pZD47XG5cbi8qKlxuICogUmVzdGFydHMgdGhlIHN0b3JlLlxuICpcbiAqIEBwYXJhbSBpbnN0YW5jZVxuICogQHJldHVybnNcbiAqL1xuZXhwb3J0IGNvbnN0IERFRkFVTFRfRklSRUJBU0VfQ09MTEVDVElPTl9DSEFOR0VfVFJJR0dFUl9GVU5DVElPTjogRGJ4RmlyZWJhc2VDb2xsZWN0aW9uQ2hhbmdlVHJpZ2dlckZ1bmN0aW9uPGFueT4gPSAoaW5zdGFuY2UpID0+IGluc3RhbmNlLndhdGNoZXIuc3RvcmUucmVzdGFydCgpO1xuXG5leHBvcnQgaW50ZXJmYWNlIERieEZpcmViYXNlQ29sbGVjdGlvbkNoYW5nZVRyaWdnZXJJbnN0YW5jZUNvbmZpZzxTIGV4dGVuZHMgRGJ4RmlyZWJhc2VDb2xsZWN0aW9uTG9hZGVyQWNjZXNzb3I8YW55Pj4ge1xuICByZWFkb25seSB3YXRjaGVyOiBEYnhGaXJlYmFzZUNvbGxlY3Rpb25DaGFuZ2VXYXRjaGVyPFM+ICYgUGFydGlhbDxEZXN0cm95YWJsZT47XG4gIC8qKlxuICAgKiBXaGV0aGVyIG9yIG5vdCB0byBhbHNvIGRlc3Ryb3kgdGhlIHdhdGNoZXIgd2hlbiB0aGUgdHJpZ2dlciBpbnN0YW5jZSBpcyBkZXN0cm95ZWQuXG4gICAqXG4gICAqIERlZmF1bHRzIHRvIGZhbHNlLlxuICAgKi9cbiAgcmVhZG9ubHkgZGVzdHJveVdhdGNoZXJPbkRlc3Ryb3k/OiBib29sZWFuO1xuICAvKipcbiAgICogSW5pdGlhbCB0cmlnZ2VyIGZ1bmN0aW9uIHRvIHVzZS5cbiAgICpcbiAgICogQnkgZGVmYXVsdCByZXN0YXJ0cyB0aGUgc3RvcmUuXG4gICAqL1xuICByZWFkb25seSB0cmlnZ2VyRnVuY3Rpb24/OiBNYXliZTxEYnhGaXJlYmFzZUNvbGxlY3Rpb25DaGFuZ2VUcmlnZ2VyRnVuY3Rpb248Uz4+O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIERieEZpcmViYXNlQ29sbGVjdGlvbkNoYW5nZVRyaWdnZXI8UyBleHRlbmRzIERieEZpcmViYXNlQ29sbGVjdGlvbkxvYWRlckFjY2Vzc29yPGFueT4+IHtcbiAgcmVhZG9ubHkgd2F0Y2hlcjogRGJ4RmlyZWJhc2VDb2xsZWN0aW9uQ2hhbmdlV2F0Y2hlcjxTPjtcbiAgdHJpZ2dlckZ1bmN0aW9uPzogTWF5YmU8RGJ4RmlyZWJhc2VDb2xsZWN0aW9uQ2hhbmdlVHJpZ2dlckZ1bmN0aW9uPFM+Pjtcbn1cblxuZXhwb3J0IGNsYXNzIERieEZpcmViYXNlQ29sbGVjdGlvbkNoYW5nZVRyaWdnZXJJbnN0YW5jZTxTIGV4dGVuZHMgRGJ4RmlyZWJhc2VDb2xsZWN0aW9uTG9hZGVyQWNjZXNzb3I8YW55Pj4gaW1wbGVtZW50cyBEYnhGaXJlYmFzZUNvbGxlY3Rpb25DaGFuZ2VUcmlnZ2VyPFM+LCBJbml0aWFsaXplZCwgRGVzdHJveWFibGUge1xuICByZWFkb25seSB3YXRjaGVyOiBEYnhGaXJlYmFzZUNvbGxlY3Rpb25DaGFuZ2VXYXRjaGVyPFM+O1xuXG4gIHByaXZhdGUgX3RyaWdnZXJGdW5jdGlvbiA9IG5ldyBCZWhhdmlvclN1YmplY3Q8TWF5YmU8RGJ4RmlyZWJhc2VDb2xsZWN0aW9uQ2hhbmdlVHJpZ2dlckZ1bmN0aW9uPFM+Pj4odW5kZWZpbmVkKTtcbiAgcHJpdmF0ZSBfc3ViID0gbmV3IFN1YnNjcmlwdGlvbk9iamVjdCgpO1xuXG4gIGNvbnN0cnVjdG9yKHJlYWRvbmx5IGNvbmZpZzogRGJ4RmlyZWJhc2VDb2xsZWN0aW9uQ2hhbmdlVHJpZ2dlckluc3RhbmNlQ29uZmlnPFM+KSB7XG4gICAgdGhpcy53YXRjaGVyID0gY29uZmlnLndhdGNoZXI7XG4gICAgdGhpcy50cmlnZ2VyRnVuY3Rpb24gPSBjb25maWcudHJpZ2dlckZ1bmN0aW9uID8/IERFRkFVTFRfRklSRUJBU0VfQ09MTEVDVElPTl9DSEFOR0VfVFJJR0dFUl9GVU5DVElPTjtcbiAgfVxuXG4gIGluaXQoKTogdm9pZCB7XG4gICAgdGhpcy5fc3ViLnN1YnNjcmlwdGlvbiA9IHRoaXMuX3RyaWdnZXJGdW5jdGlvblxuICAgICAgLnBpcGUoXG4gICAgICAgIHN3aXRjaE1hcCgodHJpZ2dlckZ1bmN0aW9uKSA9PiB7XG4gICAgICAgICAgaWYgKHRyaWdnZXJGdW5jdGlvbikge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMud2F0Y2hlci50cmlnZ2VyZWQkLnBpcGUoXG4gICAgICAgICAgICAgIGZpbHRlcigodHJpZ2dlcmVkKSA9PiB0cmlnZ2VyZWQpLFxuICAgICAgICAgICAgICBleGhhdXN0TWFwKCgpID0+IGFzT2JzZXJ2YWJsZSh0cmlnZ2VyRnVuY3Rpb24odGhpcykpKVxuICAgICAgICAgICAgKTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIEVNUFRZO1xuICAgICAgICAgIH1cbiAgICAgICAgfSlcbiAgICAgIClcbiAgICAgIC5zdWJzY3JpYmUoKTtcbiAgfVxuXG4gIGRlc3Ryb3koKTogdm9pZCB7XG4gICAgdGhpcy5fdHJpZ2dlckZ1bmN0aW9uLmNvbXBsZXRlKCk7XG5cbiAgICBpZiAodGhpcy5jb25maWcuZGVzdHJveVdhdGNoZXJPbkRlc3Ryb3kgPT09IHRydWUpIHtcbiAgICAgICh0aGlzLndhdGNoZXIgYXMgdW5rbm93biBhcyBEZXN0cm95YWJsZSk/LmRlc3Ryb3koKTtcbiAgICB9XG4gIH1cblxuICBnZXQgdHJpZ2dlckZ1bmN0aW9uKCk6IE1heWJlPERieEZpcmViYXNlQ29sbGVjdGlvbkNoYW5nZVRyaWdnZXJGdW5jdGlvbjxTPj4ge1xuICAgIHJldHVybiB0aGlzLl90cmlnZ2VyRnVuY3Rpb24udmFsdWU7XG4gIH1cblxuICBzZXQgdHJpZ2dlckZ1bmN0aW9uKHRyaWdnZXJGdW5jdGlvbjogTWF5YmU8RGJ4RmlyZWJhc2VDb2xsZWN0aW9uQ2hhbmdlVHJpZ2dlckZ1bmN0aW9uPFM+Pikge1xuICAgIHRoaXMuX3RyaWdnZXJGdW5jdGlvbi5uZXh0KHRyaWdnZXJGdW5jdGlvbik7XG4gIH1cbn1cblxuLyoqXG4gKiBDcmVhdGVzIGEgbmV3IERieEZpcmViYXNlQ29sbGVjdGlvbkNoYW5nZVdhdGNoZXIsIHNldCB0aGUgbW9kZXMgdG8gXCJhdXRvXCIsIGFuZCBjcmVhdGVzIGEgbmV3IERieEZpcmViYXNlQ29sbGVjdGlvbkNoYW5nZVRyaWdnZXJJbnN0YW5jZS5cbiAqXG4gKiBJZiBubyB0cmlnZ2VyIGZ1bmN0aW9uIGlzIHByb3ZpZGVkIGl0IHdpbGwgZGVmYXVsdCB0byByZXNldHRpbmcgdGhlIHN0b3JlLlxuICpcbiAqIE5PVEU6IERvbid0IGZvcmdldCB0byBpbml0aWFsaXplIHRoZSBEYnhGaXJlYmFzZUNvbGxlY3Rpb25DaGFuZ2VUcmlnZ2VySW5zdGFuY2UgYW5kIGhhbmRsZSBvdGhlciBsaWZlY3ljbGUgY2hhbmdlcy5cbiAqXG4gKiBAcGFyYW0gc3RvcmVcbiAqIEBwYXJhbSB0cmlnZ2VyRnVuY3Rpb25cbiAqIEByZXR1cm5zXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBkYnhGaXJlYmFzZUNvbGxlY3Rpb25DaGFuZ2VUcmlnZ2VyRm9yU3RvcmU8UyBleHRlbmRzIERieEZpcmViYXNlQ29sbGVjdGlvbkxvYWRlckFjY2Vzc29yPGFueT4+KHN0b3JlOiBTLCB0cmlnZ2VyRnVuY3Rpb24/OiBNYXliZTxEYnhGaXJlYmFzZUNvbGxlY3Rpb25DaGFuZ2VUcmlnZ2VyRnVuY3Rpb248Uz4+KTogRGJ4RmlyZWJhc2VDb2xsZWN0aW9uQ2hhbmdlVHJpZ2dlckluc3RhbmNlPFM+IHtcbiAgcmV0dXJuIGRieEZpcmViYXNlQ29sbGVjdGlvbkNoYW5nZVRyaWdnZXI8Uz4oe1xuICAgIHdhdGNoZXI6IGRieEZpcmViYXNlQ29sbGVjdGlvbkNoYW5nZVdhdGNoZXI8Uz4oc3RvcmUsICdhdXRvJyksXG4gICAgZGVzdHJveVdhdGNoZXJPbkRlc3Ryb3k6IHRydWUsXG4gICAgdHJpZ2dlckZ1bmN0aW9uOlxuICAgICAgdHJpZ2dlckZ1bmN0aW9uID8/XG4gICAgICAoKCkgPT4ge1xuICAgICAgICBzdG9yZS5yZXN0YXJ0KCk7XG4gICAgICB9KVxuICB9KTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGRieEZpcmViYXNlQ29sbGVjdGlvbkNoYW5nZVRyaWdnZXJGb3JXYXRjaGVyPFMgZXh0ZW5kcyBEYnhGaXJlYmFzZUNvbGxlY3Rpb25Mb2FkZXJBY2Nlc3Nvcjxhbnk+Pih3YXRjaGVyOiBEYnhGaXJlYmFzZUNvbGxlY3Rpb25DaGFuZ2VXYXRjaGVyPFM+LCB0cmlnZ2VyRnVuY3Rpb24/OiBNYXliZTxEYnhGaXJlYmFzZUNvbGxlY3Rpb25DaGFuZ2VUcmlnZ2VyRnVuY3Rpb248Uz4+KTogRGJ4RmlyZWJhc2VDb2xsZWN0aW9uQ2hhbmdlVHJpZ2dlckluc3RhbmNlPFM+IHtcbiAgcmV0dXJuIGRieEZpcmViYXNlQ29sbGVjdGlvbkNoYW5nZVRyaWdnZXI8Uz4oe1xuICAgIHdhdGNoZXIsXG4gICAgZGVzdHJveVdhdGNoZXJPbkRlc3Ryb3k6IGZhbHNlLFxuICAgIHRyaWdnZXJGdW5jdGlvblxuICB9KTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGRieEZpcmViYXNlQ29sbGVjdGlvbkNoYW5nZVRyaWdnZXI8UyBleHRlbmRzIERieEZpcmViYXNlQ29sbGVjdGlvbkxvYWRlckFjY2Vzc29yPGFueT4+KGNvbmZpZzogRGJ4RmlyZWJhc2VDb2xsZWN0aW9uQ2hhbmdlVHJpZ2dlckluc3RhbmNlQ29uZmlnPFM+KTogRGJ4RmlyZWJhc2VDb2xsZWN0aW9uQ2hhbmdlVHJpZ2dlckluc3RhbmNlPFM+IHtcbiAgcmV0dXJuIG5ldyBEYnhGaXJlYmFzZUNvbGxlY3Rpb25DaGFuZ2VUcmlnZ2VySW5zdGFuY2UoY29uZmlnKTtcbn1cbiJdfQ==
@@ -1,6 +1,6 @@
1
1
  import { cleanupDestroyable, filterMaybe, useFirst, SubscriptionObject, accumulatorFlattenPageListLoadingState } from '@dereekb/rxjs';
2
2
  import { BehaviorSubject, combineLatest, map, shareReplay, distinctUntilChanged, Subject, throttleTime, switchMap, tap, startWith, NEVER } from 'rxjs';
3
- import { firebaseQueryItemAccumulator, iterationQueryDocChangeWatcher } from '@dereekb/firebase';
3
+ import { firebaseQueryItemAccumulator, firebaseQuerySnapshotAccumulator, iterationQueryDocChangeWatcher } from '@dereekb/firebase';
4
4
  /**
5
5
  * DbxFirebaseModelLoader implementation within an instance.
6
6
  */
@@ -28,7 +28,18 @@ export class DbxFirebaseCollectionLoaderInstance {
28
28
  }), cleanupDestroyable(), // cleanup the iteration
29
29
  shareReplay(1));
30
30
  this.queryChangeWatcher$ = this.firestoreIteration$.pipe(map((instance) => iterationQueryDocChangeWatcher({ instance })), shareReplay(1));
31
+ this.snapshotAccumulator$ = this.firestoreIteration$.pipe(map((x) => firebaseQuerySnapshotAccumulator(x)), cleanupDestroyable(), shareReplay(1));
32
+ this.snapshotAccumulatorDocumentRefs$ = this.snapshotAccumulator$.pipe(switchMap((x) => x.allItems$.pipe(map((y) => y.map((z) => z.map((zz) => zz.ref))))), shareReplay(1));
33
+ this.snapshotAccumulatorDocuments$ = combineLatest([this.collection$.pipe(filterMaybe()), this.snapshotAccumulatorDocumentRefs$]).pipe(map(([collection, documentRefs]) => {
34
+ const accessor = collection.documentAccessor();
35
+ return documentRefs.map((y) => y.map((z) => accessor.loadDocument(z)));
36
+ }), shareReplay(1));
31
37
  this.accumulator$ = this.firestoreIteration$.pipe(map((x) => firebaseQueryItemAccumulator(x)), cleanupDestroyable(), shareReplay(1));
38
+ this.accumulatorItems$ = this.accumulator$.pipe(switchMap((x) => x.allItems$), shareReplay(1));
39
+ this.hasDocuments$ = this.firestoreIteration$.pipe(switchMap((x) => x.firstState$.pipe(map((x) => Boolean(x.value?.length)))), shareReplay(1));
40
+ this.allDocumentRefs$ = this.snapshotAccumulatorDocumentRefs$.pipe(map((x) => x.flat()), shareReplay(1));
41
+ this.allDocuments$ = this.snapshotAccumulatorDocuments$.pipe(map((x) => x.flat()), shareReplay(1));
42
+ this.allDocumentData$ = this.accumulatorItems$.pipe(map((x) => x.flat()), shareReplay(1));
32
43
  this.pageLoadingState$ = this.accumulator$.pipe(switchMap((x) => accumulatorFlattenPageListLoadingState(x)), shareReplay(1));
33
44
  }
34
45
  init() {
@@ -97,4 +108,4 @@ export function dbxFirebaseCollectionLoaderInstance(config) {
97
108
  export function dbxFirebaseCollectionLoaderInstanceWithCollection(collection) {
98
109
  return new DbxFirebaseCollectionLoaderInstance({ collection });
99
110
  }
100
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29sbGVjdGlvbi5sb2FkZXIuaW5zdGFuY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9kYngtZmlyZWJhc2Uvc3JjL2xpYi9tb2RlbC9sb2FkZXIvY29sbGVjdGlvbi5sb2FkZXIuaW5zdGFuY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUF3QixrQkFBa0IsRUFBRSxXQUFXLEVBQUUsUUFBUSxFQUFFLGtCQUFrQixFQUFFLHNDQUFzQyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzVKLE9BQU8sRUFBRSxlQUFlLEVBQUUsYUFBYSxFQUFFLEdBQUcsRUFBRSxXQUFXLEVBQUUsb0JBQW9CLEVBQUUsT0FBTyxFQUFFLFlBQVksRUFBRSxTQUFTLEVBQWMsR0FBRyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDbkssT0FBTyxFQUFvRCw0QkFBNEIsRUFBNkssOEJBQThCLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQWE5VDs7R0FFRztBQUNILE1BQU0sT0FBTyxtQ0FBbUM7SUFtRDlDLFlBQTZCLFdBQWlFO1FBQWpFLGdCQUFXLEdBQVgsV0FBVyxDQUFzRDtRQWxEM0UsZ0JBQVcsR0FBRyxJQUFJLGVBQWUsQ0FBdUMsSUFBSSxDQUFDLFdBQVcsRUFBRSxVQUFVLENBQUMsQ0FBQztRQUV0RyxjQUFTLEdBQUcsSUFBSSxlQUFlLENBQWdCLElBQUksQ0FBQyxXQUFXLEVBQUUsUUFBUSxDQUFDLENBQUM7UUFDM0Usa0JBQWEsR0FBRyxJQUFJLGVBQWUsQ0FBZ0IsSUFBSSxDQUFDLFdBQVcsRUFBRSxZQUFZLENBQUMsQ0FBQztRQUNuRixpQkFBWSxHQUFHLElBQUksZUFBZSxDQUFnRCxJQUFJLENBQUMsV0FBVyxFQUFFLFdBQVcsQ0FBQyxDQUFDO1FBQ2pILGFBQVEsR0FBRyxJQUFJLE9BQU8sRUFBUSxDQUFDO1FBRWpDLGlCQUFZLEdBQUcsSUFBSSxr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LE9BQU8sSUFBSSxDQUFDLFdBQVcsQ0FBQyxLQUFLLENBQUM7SUFDaEMsQ0FBQztJQUVELElBQUksVUFBVSxDQUFDLFVBQWdEO1FBQzdELElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDO0lBQ3BDLENBQUM7SUFFRCxvQ0FBb0M7SUFDcEMsSUFBSTtRQUNGLFFBQVEsQ0FBQyxJQUFJLENBQUMsbUJBQW1CLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDO0lBQ3RELENBQUM7SUFFRCxPQUFPO1FBQ0wsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLEVBQUUsQ0FBQztJQUN2QixDQUFDO0lBRUQsY0FBYyxDQUFDLFdBQTBEO1FBQ3ZFLElBQUksQ0FBQyxXQUFXLEdBQUcsV0FBVyxDQUFDO0lBQ2pDLENBQUM7SUFFRCxhQUFhLENBQUMsbUJBQXlEO1FBQ3JFLElBQUksQ0FBQyxVQUFVLEdBQUcsbUJBQW1CLENBQUM7SUFDeEMsQ0FBQztDQUNGO0FBRUQsTUFBTSxVQUFVLG1DQUFtQyxDQUEyRCxNQUEyRDtJQUN2SyxPQUFPLElBQUksbUNBQW1DLENBQU8sTUFBTSxDQUFDLENBQUM7QUFDL0QsQ0FBQztBQUVELE1BQU0sVUFBVSxpREFBaUQsQ0FBMkQsVUFBZ0Q7SUFDMUssT0FBTyxJQUFJLG1DQUFtQyxDQUFPLEVBQUUsVUFBVSxFQUFFLENBQUMsQ0FBQztBQUN2RSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgUGFnZUxpc3RMb2FkaW5nU3RhdGUsIGNsZWFudXBEZXN0cm95YWJsZSwgZmlsdGVyTWF5YmUsIHVzZUZpcnN0LCBTdWJzY3JpcHRpb25PYmplY3QsIGFjY3VtdWxhdG9yRmxhdHRlblBhZ2VMaXN0TG9hZGluZ1N0YXRlIH0gZnJvbSAnQGRlcmVla2Ivcnhqcyc7XG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QsIGNvbWJpbmVMYXRlc3QsIG1hcCwgc2hhcmVSZXBsYXksIGRpc3RpbmN0VW50aWxDaGFuZ2VkLCBTdWJqZWN0LCB0aHJvdHRsZVRpbWUsIHN3aXRjaE1hcCwgT2JzZXJ2YWJsZSwgdGFwLCBzdGFydFdpdGgsIE5FVkVSIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBEb2N1bWVudERhdGFXaXRoSWQsIEZpcmViYXNlUXVlcnlJdGVtQWNjdW11bGF0b3IsIGZpcmViYXNlUXVlcnlJdGVtQWNjdW11bGF0b3IsIEZpcmVzdG9yZUNvbGxlY3Rpb25MaWtlLCBGaXJlc3RvcmVEb2N1bWVudCwgRmlyZXN0b3JlSXRlbVBhZ2VJdGVyYXRpb25JbnN0YW5jZSwgRmlyZXN0b3JlSXRlbVBhZ2VJdGVyYXRvckZpbHRlciwgRmlyZXN0b3JlUXVlcnlDb25zdHJhaW50LCBJdGVyYXRpb25RdWVyeURvY0NoYW5nZVdhdGNoZXIsIGl0ZXJhdGlvblF1ZXJ5RG9jQ2hhbmdlV2F0Y2hlciB9IGZyb20gJ0BkZXJlZWtiL2ZpcmViYXNlJztcbmltcG9ydCB7IEFycmF5T3JWYWx1ZSwgRGVzdHJveWFibGUsIEluaXRpYWxpemVkLCBNYXliZSB9IGZyb20gJ0BkZXJlZWtiL3V0aWwnO1xuaW1wb3J0IHsgRGJ4RmlyZWJhc2VDb2xsZWN0aW9uTG9hZGVyLCBEYnhGaXJlYmFzZUNvbGxlY3Rpb25Mb2FkZXJBY2Nlc3NvciB9IGZyb20gJy4vY29sbGVjdGlvbi5sb2FkZXInO1xuXG5leHBvcnQgaW50ZXJmYWNlIERieEZpcmViYXNlQ29sbGVjdGlvbkxvYWRlckluc3RhbmNlSW5pdENvbmZpZzxULCBEIGV4dGVuZHMgRmlyZXN0b3JlRG9jdW1lbnQ8VD4gPSBGaXJlc3RvcmVEb2N1bWVudDxUPj4ge1xuICBjb2xsZWN0aW9uPzogTWF5YmU8RmlyZXN0b3JlQ29sbGVjdGlvbkxpa2U8VCwgRD4+O1xuICBtYXhQYWdlcz86IE1heWJlPG51bWJlcj47XG4gIGl0ZW1zUGVyUGFnZT86IE1heWJlPG51bWJlcj47XG4gIGNvbnN0cmFpbnRzPzogTWF5YmU8QXJyYXlPclZhbHVlPEZpcmVzdG9yZVF1ZXJ5Q29uc3RyYWludD4+O1xufVxuXG5leHBvcnQgdHlwZSBEYnhGaXJlYmFzZUNvbGxlY3Rpb25Mb2FkZXJJbnN0YW5jZURhdGE8VCwgRCBleHRlbmRzIEZpcmVzdG9yZURvY3VtZW50PFQ+ID0gRmlyZXN0b3JlRG9jdW1lbnQ8VD4+ID0gRGJ4RmlyZWJhc2VDb2xsZWN0aW9uTG9hZGVyQWNjZXNzb3I8VD47XG5cbi8qKlxuICogRGJ4RmlyZWJhc2VNb2RlbExvYWRlciBpbXBsZW1lbnRhdGlvbiB3aXRoaW4gYW4gaW5zdGFuY2UuXG4gKi9cbmV4cG9ydCBjbGFzcyBEYnhGaXJlYmFzZUNvbGxlY3Rpb25Mb2FkZXJJbnN0YW5jZTxUID0gdW5rbm93biwgRCBleHRlbmRzIEZpcmVzdG9yZURvY3VtZW50PFQ+ID0gRmlyZXN0b3JlRG9jdW1lbnQ8VD4+IGltcGxlbWVudHMgRGJ4RmlyZWJhc2VDb2xsZWN0aW9uTG9hZGVyPFQ+LCBEYnhGaXJlYmFzZUNvbGxlY3Rpb25Mb2FkZXJJbnN0YW5jZURhdGE8VCwgRD4sIEluaXRpYWxpemVkLCBEZXN0cm95YWJsZSB7XG4gIHByb3RlY3RlZCByZWFkb25seSBfY29sbGVjdGlvbiA9IG5ldyBCZWhhdmlvclN1YmplY3Q8TWF5YmU8RmlyZXN0b3JlQ29sbGVjdGlvbkxpa2U8VCwgRD4+Pih0aGlzLl9pbml0Q29uZmlnPy5jb2xsZWN0aW9uKTtcblxuICBwcm90ZWN0ZWQgcmVhZG9ubHkgX21heFBhZ2VzID0gbmV3IEJlaGF2aW9yU3ViamVjdDxNYXliZTxudW1iZXI+Pih0aGlzLl9pbml0Q29uZmlnPy5tYXhQYWdlcyk7XG4gIHByb3RlY3RlZCByZWFkb25seSBfaXRlbXNQZXJQYWdlID0gbmV3IEJlaGF2aW9yU3ViamVjdDxNYXliZTxudW1iZXI+Pih0aGlzLl9pbml0Q29uZmlnPy5pdGVtc1BlclBhZ2UpO1xuICBwcm90ZWN0ZWQgcmVhZG9ubHkgX2NvbnN0cmFpbnRzID0gbmV3IEJlaGF2aW9yU3ViamVjdDxNYXliZTxBcnJheU9yVmFsdWU8RmlyZXN0b3JlUXVlcnlDb25zdHJhaW50Pj4+KHRoaXMuX2luaXRDb25maWc/LmNvbnN0cmFpbnRzKTtcbiAgcHJvdGVjdGVkIHJlYWRvbmx5IF9yZXN0YXJ0ID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcblxuICBwcml2YXRlIHJlYWRvbmx5IF9tYXhQYWdlc1N1YiA9IG5ldyBTdWJzY3JpcHRpb25PYmplY3QoKTtcblxuICByZWFkb25seSBjb2xsZWN0aW9uJCA9IHRoaXMuX2NvbGxlY3Rpb24ucGlwZShkaXN0aW5jdFVudGlsQ2hhbmdlZCgpKTtcbiAgcmVhZG9ubHkgY29uc3RyYWludHMkID0gdGhpcy5fY29uc3RyYWludHMucGlwZShkaXN0aW5jdFVudGlsQ2hhbmdlZCgpKTtcblxuICByZWFkb25seSBpdGVyYXRvckZpbHRlciQ6IE9ic2VydmFibGU8RmlyZXN0b3JlSXRlbVBhZ2VJdGVyYXRvckZpbHRlcj4gPSBjb21iaW5lTGF0ZXN0KFt0aGlzLl9pdGVtc1BlclBhZ2UucGlwZShkaXN0aW5jdFVudGlsQ2hhbmdlZCgpKSwgdGhpcy5jb25zdHJhaW50cyRdKS5waXBlKFxuICAgIG1hcCgoW2xpbWl0LCBjb25zdHJhaW50c10pID0+ICh7IGxpbWl0LCBjb25zdHJhaW50cywgbWF4UGFnZUxvYWRMaW1pdDogdGhpcy5tYXhQYWdlcyB9IGFzIEZpcmVzdG9yZUl0ZW1QYWdlSXRlcmF0b3JGaWx0ZXIpKSxcbiAgICBzaGFyZVJlcGxheSgxKVxuICApO1xuXG4gIHJlYWRvbmx5IGZpcmVzdG9yZUl0ZXJhdGlvbiQ6IE9ic2VydmFibGU8RmlyZXN0b3JlSXRlbVBhZ2VJdGVyYXRpb25JbnN0YW5jZTxUPj4gPSB0aGlzLmNvbGxlY3Rpb24kLnBpcGUoXG4gICAgc3dpdGNoTWFwKChjb2xsZWN0aW9uKSA9PiB7XG4gICAgICBpZiAoY29sbGVjdGlvbikge1xuICAgICAgICByZXR1cm4gY29tYmluZUxhdGVzdChbdGhpcy5pdGVyYXRvckZpbHRlciQsIHRoaXMuX3Jlc3RhcnQucGlwZShzdGFydFdpdGgodW5kZWZpbmVkKSldKS5waXBlKFxuICAgICAgICAgIHRocm90dGxlVGltZSgxMDAsIHVuZGVmaW5lZCwgeyB0cmFpbGluZzogdHJ1ZSB9KSwgLy8gcHJldmVudCByYXBpZCBjaGFuZ2VzIGFuZCBleGVjdXRpbmcgZmlsdGVycyB0b28gcXVpY2tseS5cbiAgICAgICAgICBtYXAoKFtpdGVyYXRvckZpbHRlcl0pID0+IGNvbGxlY3Rpb24uZmlyZXN0b3JlSXRlcmF0aW9uKGl0ZXJhdG9yRmlsdGVyKSksXG4gICAgICAgICAgY2xlYW51cERlc3Ryb3lhYmxlKCksIC8vIGNsZWFudXAgdGhlIGl0ZXJhdGlvblxuICAgICAgICAgIHNoYXJlUmVwbGF5KDEpXG4gICAgICAgICk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm4gTkVWRVI7IC8vIGRvbid0IGVtaXQgYW55dGhpbmcgdW50aWwgY29sbGVjdGlvbiBpcyBwcm92aWRlZC5cbiAgICAgIH1cbiAgICB9KSxcbiAgICBjbGVhbnVwRGVzdHJveWFibGUoKSwgLy8gY2xlYW51cCB0aGUgaXRlcmF0aW9uXG4gICAgc2hhcmVSZXBsYXkoMSlcbiAgKTtcblxuICByZWFkb25seSBxdWVyeUNoYW5nZVdhdGNoZXIkOiBPYnNlcnZhYmxlPEl0ZXJhdGlvblF1ZXJ5RG9jQ2hhbmdlV2F0Y2hlcjxUPj4gPSB0aGlzLmZpcmVzdG9yZUl0ZXJhdGlvbiQucGlwZShcbiAgICBtYXAoKGluc3RhbmNlKSA9PiBpdGVyYXRpb25RdWVyeURvY0NoYW5nZVdhdGNoZXIoeyBpbnN0YW5jZSB9KSksXG4gICAgc2hhcmVSZXBsYXkoMSlcbiAgKTtcblxuICByZWFkb25seSBhY2N1bXVsYXRvciQ6IE9ic2VydmFibGU8RmlyZWJhc2VRdWVyeUl0ZW1BY2N1bXVsYXRvcjxUPj4gPSB0aGlzLmZpcmVzdG9yZUl0ZXJhdGlvbiQucGlwZShcbiAgICBtYXAoKHgpID0+IGZpcmViYXNlUXVlcnlJdGVtQWNjdW11bGF0b3I8VD4oeCkpLFxuICAgIGNsZWFudXBEZXN0cm95YWJsZSgpLFxuICAgIHNoYXJlUmVwbGF5KDEpXG4gICk7XG5cbiAgcmVhZG9ubHkgcGFnZUxvYWRpbmdTdGF0ZSQ6IE9ic2VydmFibGU8UGFnZUxpc3RMb2FkaW5nU3RhdGU8RG9jdW1lbnREYXRhV2l0aElkPFQ+Pj4gPSB0aGlzLmFjY3VtdWxhdG9yJC5waXBlKFxuICAgIHN3aXRjaE1hcCgoeCkgPT4gYWNjdW11bGF0b3JGbGF0dGVuUGFnZUxpc3RMb2FkaW5nU3RhdGUoeCkpLFxuICAgIHNoYXJlUmVwbGF5KDEpXG4gICk7XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSByZWFkb25seSBfaW5pdENvbmZpZz86IERieEZpcmViYXNlQ29sbGVjdGlvbkxvYWRlckluc3RhbmNlSW5pdENvbmZpZzxULCBEPikge31cblxuICBpbml0KCk6IHZvaWQge1xuICAgIC8vIFdoZW4gbWF4IHBhZ2VzIGNoYW5nZXMsIHVwZGF0ZSB0aGUgaXRlcmF0aW9uJ3MgbWF4IHBhZ2UgbGltaXQuXG4gICAgdGhpcy5fbWF4UGFnZXNTdWIuc3Vic2NyaXB0aW9uID0gdGhpcy5fbWF4UGFnZXNcbiAgICAgIC5waXBlKFxuICAgICAgICBkaXN0aW5jdFVudGlsQ2hhbmdlZCgpLFxuICAgICAgICBmaWx0ZXJNYXliZSgpLCAvLyBkbyBub3QgcGFzcyBudWxsL3VuZGVmaW5lZCB2YWx1ZXNcbiAgICAgICAgc3dpdGNoTWFwKChtYXhQYWdlTG9hZExpbWl0KSA9PlxuICAgICAgICAgIHRoaXMuZmlyZXN0b3JlSXRlcmF0aW9uJC5waXBlKFxuICAgICAgICAgICAgdGFwKChpdGVyYXRpb24pID0+IHtcbiAgICAgICAgICAgICAgaXRlcmF0aW9uLm1heFBhZ2VMb2FkTGltaXQgPSBtYXhQYWdlTG9hZExpbWl0O1xuICAgICAgICAgICAgfSlcbiAgICAgICAgICApXG4gICAgICAgIClcbiAgICAgIClcbiAgICAgIC5zdWJzY3JpYmUoKTtcbiAgfVxuXG4gIGRlc3Ryb3koKTogdm9pZCB7XG4gICAgdGhpcy5fbWF4UGFnZXMuY29tcGxldGUoKTtcbiAgICB0aGlzLl9jb2xsZWN0aW9uLmNvbXBsZXRlKCk7XG4gICAgdGhpcy5fY29uc3RyYWludHMuY29tcGxldGUoKTtcbiAgICB0aGlzLl9pdGVtc1BlclBhZ2UuY29tcGxldGUoKTtcbiAgICB0aGlzLl9yZXN0YXJ0LmNvbXBsZXRlKCk7XG4gICAgdGhpcy5fbWF4UGFnZXNTdWIuZGVzdHJveSgpO1xuICB9XG5cbiAgLy8gTUFSSzogSW5wdXRzXG4gIGdldCBtYXhQYWdlcygpOiBNYXliZTxudW1iZXI+IHtcbiAgICByZXR1cm4gdGhpcy5fbWF4UGFnZXMudmFsdWU7XG4gIH1cblxuICBzZXQgbWF4UGFnZXMobWF4UGFnZXM6IE1heWJlPG51bWJlcj4pIHtcbiAgICBpZiAodGhpcy5tYXhQYWdlcyAhPSBtYXhQYWdlcykge1xuICAgICAgdGhpcy5fbWF4UGFnZXMubmV4dChtYXhQYWdlcyk7XG4gICAgfVxuICB9XG5cbiAgZ2V0IGl0ZW1zUGVyUGFnZSgpOiBNYXliZTxudW1iZXI+IHtcbiAgICByZXR1cm4gdGhpcy5faXRlbXNQZXJQYWdlLnZhbHVlO1xuICB9XG5cbiAgc2V0IGl0ZW1zUGVyUGFnZShpdGVtc1BlclBhZ2U6IE1heWJlPG51bWJlcj4pIHtcbiAgICBpZiAodGhpcy5pdGVtc1BlclBhZ2UgIT0gaXRlbXNQZXJQYWdlKSB7XG4gICAgICB0aGlzLl9pdGVtc1BlclBhZ2UubmV4dChpdGVtc1BlclBhZ2UpO1xuICAgIH1cbiAgfVxuXG4gIGdldCBjb25zdHJhaW50cygpOiBNYXliZTxBcnJheU9yVmFsdWU8RmlyZXN0b3JlUXVlcnlDb25zdHJhaW50Pj4ge1xuICAgIHJldHVybiB0aGlzLl9jb25zdHJhaW50cy52YWx1ZTtcbiAgfVxuXG4gIHNldCBjb25zdHJhaW50cyhjb25zdHJhaW50czogTWF5YmU8QXJyYXlPclZhbHVlPEZpcmVzdG9yZVF1ZXJ5Q29uc3RyYWludD4+KSB7XG4gICAgdGhpcy5fY29uc3RyYWludHMubmV4dChjb25zdHJhaW50cyk7XG4gIH1cblxuICBnZXQgY29sbGVjdGlvbigpOiBNYXliZTxGaXJlc3RvcmVDb2xsZWN0aW9uTGlrZTxULCBEPj4ge1xuICAgIHJldHVybiB0aGlzLl9jb2xsZWN0aW9uLnZhbHVlO1xuICB9XG5cbiAgc2V0IGNvbGxlY3Rpb24oY29sbGVjdGlvbjogTWF5YmU8RmlyZXN0b3JlQ29sbGVjdGlvbkxpa2U8VCwgRD4+KSB7XG4gICAgdGhpcy5fY29sbGVjdGlvbi5uZXh0KGNvbGxlY3Rpb24pO1xuICB9XG5cbiAgLy8gTUFSSzogRGJ4RmlyZWJhc2VDb2xsZWN0aW9uTG9hZGVyXG4gIG5leHQoKSB7XG4gICAgdXNlRmlyc3QodGhpcy5maXJlc3RvcmVJdGVyYXRpb24kLCAoeCkgPT4geC5uZXh0KCkpO1xuICB9XG5cbiAgcmVzdGFydCgpIHtcbiAgICB0aGlzLl9yZXN0YXJ0Lm5leHQoKTtcbiAgfVxuXG4gIHNldENvbnN0cmFpbnRzKGNvbnN0cmFpbnRzOiBNYXliZTxBcnJheU9yVmFsdWU8RmlyZXN0b3JlUXVlcnlDb25zdHJhaW50Pj4pIHtcbiAgICB0aGlzLmNvbnN0cmFpbnRzID0gY29uc3RyYWludHM7XG4gIH1cblxuICBzZXRDb2xsZWN0aW9uKGZpcmVzdG9yZUNvbGxlY3Rpb246IE1heWJlPEZpcmVzdG9yZUNvbGxlY3Rpb25MaWtlPFQsIEQ+Pikge1xuICAgIHRoaXMuY29sbGVjdGlvbiA9IGZpcmVzdG9yZUNvbGxlY3Rpb247XG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGRieEZpcmViYXNlQ29sbGVjdGlvbkxvYWRlckluc3RhbmNlPFQsIEQgZXh0ZW5kcyBGaXJlc3RvcmVEb2N1bWVudDxUPiA9IEZpcmVzdG9yZURvY3VtZW50PFQ+Pihjb25maWc6IERieEZpcmViYXNlQ29sbGVjdGlvbkxvYWRlckluc3RhbmNlSW5pdENvbmZpZzxULCBEPik6IERieEZpcmViYXNlQ29sbGVjdGlvbkxvYWRlckluc3RhbmNlPFQsIEQ+IHtcbiAgcmV0dXJuIG5ldyBEYnhGaXJlYmFzZUNvbGxlY3Rpb25Mb2FkZXJJbnN0YW5jZTxULCBEPihjb25maWcpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZGJ4RmlyZWJhc2VDb2xsZWN0aW9uTG9hZGVySW5zdGFuY2VXaXRoQ29sbGVjdGlvbjxULCBEIGV4dGVuZHMgRmlyZXN0b3JlRG9jdW1lbnQ8VD4gPSBGaXJlc3RvcmVEb2N1bWVudDxUPj4oY29sbGVjdGlvbjogTWF5YmU8RmlyZXN0b3JlQ29sbGVjdGlvbkxpa2U8VCwgRD4+KTogRGJ4RmlyZWJhc2VDb2xsZWN0aW9uTG9hZGVySW5zdGFuY2U8VCwgRD4ge1xuICByZXR1cm4gbmV3IERieEZpcmViYXNlQ29sbGVjdGlvbkxvYWRlckluc3RhbmNlPFQsIEQ+KHsgY29sbGVjdGlvbiB9KTtcbn1cbiJdfQ==
111
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29sbGVjdGlvbi5sb2FkZXIuaW5zdGFuY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9kYngtZmlyZWJhc2Uvc3JjL2xpYi9tb2RlbC9sb2FkZXIvY29sbGVjdGlvbi5sb2FkZXIuaW5zdGFuY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUF3QixrQkFBa0IsRUFBRSxXQUFXLEVBQUUsUUFBUSxFQUFFLGtCQUFrQixFQUFFLHNDQUFzQyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzVKLE9BQU8sRUFBRSxlQUFlLEVBQUUsYUFBYSxFQUFFLEdBQUcsRUFBRSxXQUFXLEVBQUUsb0JBQW9CLEVBQUUsT0FBTyxFQUFFLFlBQVksRUFBRSxTQUFTLEVBQWMsR0FBRyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQVMsTUFBTSxNQUFNLENBQUM7QUFDMUssT0FBTyxFQUE2RSw0QkFBNEIsRUFBb0MsZ0NBQWdDLEVBQTZLLDhCQUE4QixFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFhM1o7O0dBRUc7QUFDSCxNQUFNLE9BQU8sbUNBQW1DO0lBK0Y5QyxZQUE2QixXQUFpRTtRQUFqRSxnQkFBVyxHQUFYLFdBQVcsQ0FBc0Q7UUE5RjNFLGdCQUFXLEdBQUcsSUFBSSxlQUFlLENBQXVDLElBQUksQ0FBQyxXQUFXLEVBQUUsVUFBVSxDQUFDLENBQUM7UUFFdEcsY0FBUyxHQUFHLElBQUksZUFBZSxDQUFnQixJQUFJLENBQUMsV0FBVyxFQUFFLFFBQVEsQ0FBQyxDQUFDO1FBQzNFLGtCQUFhLEdBQUcsSUFBSSxlQUFlLENBQWdCLElBQUksQ0FBQyxXQUFXLEVBQUUsWUFBWSxDQUFDLENBQUM7UUFDbkYsaUJBQVksR0FBRyxJQUFJLGVBQWUsQ0FBZ0QsSUFBSSxDQUFDLFdBQVcsRUFBRSxXQUFXLENBQUMsQ0FBQztRQUNqSCxhQUFRLEdBQUcsSUFBSSxPQUFPLEVBQVEsQ0FBQztRQUVqQyxpQkFBWSxHQUFHLElBQUksa0JBQWtCLEVBQUUsQ0FBQztRQUVoRCxnQkFBVyxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLG9CQUFvQixFQUFFLENBQUMsQ0FBQztRQUM1RCxpQkFBWSxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLG9CQUFvQixFQUFFLENBQUMsQ0FBQztRQUU5RCxvQkFBZSxHQUFnRCxhQUFhLENBQUMsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxvQkFBb0IsRUFBRSxDQUFDLEVBQUUsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUM5SixHQUFHLENBQUMsQ0FBQyxDQUFDLEtBQUssRUFBRSxXQUFXLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEtBQUssRUFBRSxXQUFXLEVBQUUsZ0JBQWdCLEVBQUUsSUFBSSxDQUFDLFFBQVEsRUFBc0MsQ0FBQSxDQUFDLEVBQzNILFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FDZixDQUFDO1FBRU8sd0JBQW1CLEdBQXNELElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUNyRyxTQUFTLENBQUMsQ0FBQyxVQUFVLEVBQUUsRUFBRTtZQUN2QixJQUFJLFVBQVUsRUFBRTtnQkFDZCxPQUFPLGFBQWEsQ0FBQyxDQUFDLElBQUksQ0FBQyxlQUFlLEVBQUUsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FDekYsWUFBWSxDQUFDLEdBQUcsRUFBRSxTQUFTLEVBQUUsRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFLENBQUMsRUFBRSwyREFBMkQ7Z0JBQzdHLEdBQUcsQ0FBQyxDQUFDLENBQUMsY0FBYyxDQUFDLEVBQUUsRUFBRSxDQUFDLFVBQVUsQ0FBQyxrQkFBa0IsQ0FBQyxjQUFjLENBQUMsQ0FBQyxFQUN4RSxrQkFBa0IsRUFBRSxFQUFFLHdCQUF3QjtnQkFDOUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUNmLENBQUM7YUFDSDtpQkFBTTtnQkFDTCxPQUFPLEtBQUssQ0FBQyxDQUFDLG9EQUFvRDthQUNuRTtRQUNILENBQUMsQ0FBQyxFQUNGLGtCQUFrQixFQUFFLEVBQUUsd0JBQXdCO1FBQzlDLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FDZixDQUFDO1FBRU8sd0JBQW1CLEdBQWtELElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxJQUFJLENBQ3pHLEdBQUcsQ0FBQyxDQUFDLFFBQVEsRUFBRSxFQUFFLENBQUMsOEJBQThCLENBQUMsRUFBRSxRQUFRLEVBQUUsQ0FBQyxDQUFDLEVBQy9ELFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FDZixDQUFDO1FBRU8seUJBQW9CLEdBQW9ELElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxJQUFJLENBQzVHLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsZ0NBQWdDLENBQUksQ0FBQyxDQUFDLENBQUMsRUFDbEQsa0JBQWtCLEVBQUUsRUFDcEIsV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUNmLENBQUM7UUFFTyxxQ0FBZ0MsR0FBeUMsSUFBSSxDQUFDLG9CQUFvQixDQUFDLElBQUksQ0FDOUcsU0FBUyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUNuRixXQUFXLENBQUMsQ0FBQyxDQUFDLENBQ2YsQ0FBQztRQUVPLGtDQUE2QixHQUFzQixhQUFhLENBQUMsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQyxFQUFFLElBQUksQ0FBQyxnQ0FBZ0MsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUMzSixHQUFHLENBQUMsQ0FBQyxDQUFDLFVBQVUsRUFBRSxZQUFZLENBQUMsRUFBRSxFQUFFO1lBQ2pDLE1BQU0sUUFBUSxHQUFHLFVBQVUsQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDO1lBQy9DLE9BQU8sWUFBWSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsUUFBUSxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDekUsQ0FBQyxDQUFDLEVBQ0YsV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUNmLENBQUM7UUFFTyxpQkFBWSxHQUFnRCxJQUFJLENBQUMsbUJBQW1CLENBQUMsSUFBSSxDQUNoRyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLDRCQUE0QixDQUFJLENBQUMsQ0FBQyxDQUFDLEVBQzlDLGtCQUFrQixFQUFFLEVBQ3BCLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FDZixDQUFDO1FBRU8sc0JBQWlCLEdBQWdELElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUM5RixTQUFTLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsRUFDN0IsV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUNmLENBQUM7UUFFTyxrQkFBYSxHQUF3QixJQUFJLENBQUMsbUJBQW1CLENBQUMsSUFBSSxDQUN6RSxTQUFTLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxLQUFLLEVBQUUsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQzFFLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FDZixDQUFDO1FBRU8scUJBQWdCLEdBQXVDLElBQUksQ0FBQyxnQ0FBZ0MsQ0FBQyxJQUFJLENBQ3hHLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDLEVBQ3BCLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FDZixDQUFDO1FBRU8sa0JBQWEsR0FBb0IsSUFBSSxDQUFDLDZCQUE2QixDQUFDLElBQUksQ0FDL0UsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUMsRUFDcEIsV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUNmLENBQUM7UUFFTyxxQkFBZ0IsR0FBOEMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLElBQUksQ0FDaEcsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUMsRUFDcEIsV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUNmLENBQUM7UUFFTyxzQkFBaUIsR0FBa0UsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQ2hILFNBQVMsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsc0NBQXNDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFDM0QsV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUNmLENBQUM7SUFFK0YsQ0FBQztJQUVsRyxJQUFJO1FBQ0YsaUVBQWlFO1FBQ2pFLElBQUksQ0FBQyxZQUFZLENBQUMsWUFBWSxHQUFHLElBQUksQ0FBQyxTQUFTO2FBQzVDLElBQUksQ0FDSCxvQkFBb0IsRUFBRSxFQUN0QixXQUFXLEVBQUUsRUFBRSxvQ0FBb0M7UUFDbkQsU0FBUyxDQUFDLENBQUMsZ0JBQWdCLEVBQUUsRUFBRSxDQUM3QixJQUFJLENBQUMsbUJBQW1CLENBQUMsSUFBSSxDQUMzQixHQUFHLENBQUMsQ0FBQyxTQUFTLEVBQUUsRUFBRTtZQUNoQixTQUFTLENBQUMsZ0JBQWdCLEdBQUcsZ0JBQWdCLENBQUM7UUFDaEQsQ0FBQyxDQUFDLENBQ0gsQ0FDRixDQUNGO2FBQ0EsU0FBUyxFQUFFLENBQUM7SUFDakIsQ0FBQztJQUVELE9BQU87UUFDTCxJQUFJLENBQUMsU0FBUyxDQUFDLFFBQVEsRUFBRSxDQUFDO1FBQzFCLElBQUksQ0FBQyxXQUFXLENBQUMsUUFBUSxFQUFFLENBQUM7UUFDNUIsSUFBSSxDQUFDLFlBQVksQ0FBQyxRQUFRLEVBQUUsQ0FBQztRQUM3QixJQUFJLENBQUMsYUFBYSxDQUFDLFFBQVEsRUFBRSxDQUFDO1FBQzlCLElBQUksQ0FBQyxRQUFRLENBQUMsUUFBUSxFQUFFLENBQUM7UUFDekIsSUFBSSxDQUFDLFlBQVksQ0FBQyxPQUFPLEVBQUUsQ0FBQztJQUM5QixDQUFDO0lBRUQsZUFBZTtJQUNmLElBQUksUUFBUTtRQUNWLE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUM7SUFDOUIsQ0FBQztJQUVELElBQUksUUFBUSxDQUFDLFFBQXVCO1FBQ2xDLElBQUksSUFBSSxDQUFDLFFBQVEsSUFBSSxRQUFRLEVBQUU7WUFDN0IsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7U0FDL0I7SUFDSCxDQUFDO0lBRUQsSUFBSSxZQUFZO1FBQ2QsT0FBTyxJQUFJLENBQUMsYUFBYSxDQUFDLEtBQUssQ0FBQztJQUNsQyxDQUFDO0lBRUQsSUFBSSxZQUFZLENBQUMsWUFBMkI7UUFDMUMsSUFBSSxJQUFJLENBQUMsWUFBWSxJQUFJLFlBQVksRUFBRTtZQUNyQyxJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQztTQUN2QztJQUNILENBQUM7SUFFRCxJQUFJLFdBQVc7UUFDYixPQUFPLElBQUksQ0FBQyxZQUFZLENBQUMsS0FBSyxDQUFDO0lBQ2pDLENBQUM7SUFFRCxJQUFJLFdBQVcsQ0FBQyxXQUEwRDtRQUN4RSxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQztJQUN0QyxDQUFDO0lBRUQsSUFBSSxVQUFVO1FBQ1osT0FBTyxJQUFJLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQztJQUNoQyxDQUFDO0lBRUQsSUFBSSxVQUFVLENBQUMsVUFBZ0Q7UUFDN0QsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUM7SUFDcEMsQ0FBQztJQUVELG9DQUFvQztJQUNwQyxJQUFJO1FBQ0YsUUFBUSxDQUFDLElBQUksQ0FBQyxtQkFBbUIsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDLENBQUM7SUFDdEQsQ0FBQztJQUVELE9BQU87UUFDTCxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksRUFBRSxDQUFDO0lBQ3ZCLENBQUM7SUFFRCxjQUFjLENBQUMsV0FBMEQ7UUFDdkUsSUFBSSxDQUFDLFdBQVcsR0FBRyxXQUFXLENBQUM7SUFDakMsQ0FBQztJQUVELGFBQWEsQ0FBQyxtQkFBeUQ7UUFDckUsSUFBSSxDQUFDLFVBQVUsR0FBRyxtQkFBbUIsQ0FBQztJQUN4QyxDQUFDO0NBQ0Y7QUFFRCxNQUFNLFVBQVUsbUNBQW1DLENBQTJELE1BQTJEO0lBQ3ZLLE9BQU8sSUFBSSxtQ0FBbUMsQ0FBTyxNQUFNLENBQUMsQ0FBQztBQUMvRCxDQUFDO0FBRUQsTUFBTSxVQUFVLGlEQUFpRCxDQUEyRCxVQUFnRDtJQUMxSyxPQUFPLElBQUksbUNBQW1DLENBQU8sRUFBRSxVQUFVLEVBQUUsQ0FBQyxDQUFDO0FBQ3ZFLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBQYWdlTGlzdExvYWRpbmdTdGF0ZSwgY2xlYW51cERlc3Ryb3lhYmxlLCBmaWx0ZXJNYXliZSwgdXNlRmlyc3QsIFN1YnNjcmlwdGlvbk9iamVjdCwgYWNjdW11bGF0b3JGbGF0dGVuUGFnZUxpc3RMb2FkaW5nU3RhdGUgfSBmcm9tICdAZGVyZWVrYi9yeGpzJztcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCwgY29tYmluZUxhdGVzdCwgbWFwLCBzaGFyZVJlcGxheSwgZGlzdGluY3RVbnRpbENoYW5nZWQsIFN1YmplY3QsIHRocm90dGxlVGltZSwgc3dpdGNoTWFwLCBPYnNlcnZhYmxlLCB0YXAsIHN0YXJ0V2l0aCwgTkVWRVIsIHNoYXJlIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBEb2N1bWVudERhdGFXaXRoSWRBbmRLZXksIERvY3VtZW50UmVmZXJlbmNlLCBGaXJlYmFzZVF1ZXJ5SXRlbUFjY3VtdWxhdG9yLCBmaXJlYmFzZVF1ZXJ5SXRlbUFjY3VtdWxhdG9yLCBGaXJlYmFzZVF1ZXJ5U25hcHNob3RBY2N1bXVsYXRvciwgZmlyZWJhc2VRdWVyeVNuYXBzaG90QWNjdW11bGF0b3IsIEZpcmVzdG9yZUNvbGxlY3Rpb25MaWtlLCBGaXJlc3RvcmVEb2N1bWVudCwgRmlyZXN0b3JlSXRlbVBhZ2VJdGVyYXRpb25JbnN0YW5jZSwgRmlyZXN0b3JlSXRlbVBhZ2VJdGVyYXRvckZpbHRlciwgRmlyZXN0b3JlUXVlcnlDb25zdHJhaW50LCBJdGVyYXRpb25RdWVyeURvY0NoYW5nZVdhdGNoZXIsIGl0ZXJhdGlvblF1ZXJ5RG9jQ2hhbmdlV2F0Y2hlciB9IGZyb20gJ0BkZXJlZWtiL2ZpcmViYXNlJztcbmltcG9ydCB7IEFycmF5T3JWYWx1ZSwgRGVzdHJveWFibGUsIEluaXRpYWxpemVkLCBNYXliZSB9IGZyb20gJ0BkZXJlZWtiL3V0aWwnO1xuaW1wb3J0IHsgRGJ4RmlyZWJhc2VDb2xsZWN0aW9uTG9hZGVyLCBEYnhGaXJlYmFzZUNvbGxlY3Rpb25Mb2FkZXJBY2Nlc3NvciB9IGZyb20gJy4vY29sbGVjdGlvbi5sb2FkZXInO1xuXG5leHBvcnQgaW50ZXJmYWNlIERieEZpcmViYXNlQ29sbGVjdGlvbkxvYWRlckluc3RhbmNlSW5pdENvbmZpZzxULCBEIGV4dGVuZHMgRmlyZXN0b3JlRG9jdW1lbnQ8VD4gPSBGaXJlc3RvcmVEb2N1bWVudDxUPj4ge1xuICBjb2xsZWN0aW9uPzogTWF5YmU8RmlyZXN0b3JlQ29sbGVjdGlvbkxpa2U8VCwgRD4+O1xuICBtYXhQYWdlcz86IE1heWJlPG51bWJlcj47XG4gIGl0ZW1zUGVyUGFnZT86IE1heWJlPG51bWJlcj47XG4gIGNvbnN0cmFpbnRzPzogTWF5YmU8QXJyYXlPclZhbHVlPEZpcmVzdG9yZVF1ZXJ5Q29uc3RyYWludD4+O1xufVxuXG5leHBvcnQgdHlwZSBEYnhGaXJlYmFzZUNvbGxlY3Rpb25Mb2FkZXJJbnN0YW5jZURhdGE8VCwgRCBleHRlbmRzIEZpcmVzdG9yZURvY3VtZW50PFQ+ID0gRmlyZXN0b3JlRG9jdW1lbnQ8VD4+ID0gRGJ4RmlyZWJhc2VDb2xsZWN0aW9uTG9hZGVyQWNjZXNzb3I8VD47XG5cbi8qKlxuICogRGJ4RmlyZWJhc2VNb2RlbExvYWRlciBpbXBsZW1lbnRhdGlvbiB3aXRoaW4gYW4gaW5zdGFuY2UuXG4gKi9cbmV4cG9ydCBjbGFzcyBEYnhGaXJlYmFzZUNvbGxlY3Rpb25Mb2FkZXJJbnN0YW5jZTxUID0gdW5rbm93biwgRCBleHRlbmRzIEZpcmVzdG9yZURvY3VtZW50PFQ+ID0gRmlyZXN0b3JlRG9jdW1lbnQ8VD4+IGltcGxlbWVudHMgRGJ4RmlyZWJhc2VDb2xsZWN0aW9uTG9hZGVyPFQ+LCBEYnhGaXJlYmFzZUNvbGxlY3Rpb25Mb2FkZXJJbnN0YW5jZURhdGE8VCwgRD4sIEluaXRpYWxpemVkLCBEZXN0cm95YWJsZSB7XG4gIHByb3RlY3RlZCByZWFkb25seSBfY29sbGVjdGlvbiA9IG5ldyBCZWhhdmlvclN1YmplY3Q8TWF5YmU8RmlyZXN0b3JlQ29sbGVjdGlvbkxpa2U8VCwgRD4+Pih0aGlzLl9pbml0Q29uZmlnPy5jb2xsZWN0aW9uKTtcblxuICBwcm90ZWN0ZWQgcmVhZG9ubHkgX21heFBhZ2VzID0gbmV3IEJlaGF2aW9yU3ViamVjdDxNYXliZTxudW1iZXI+Pih0aGlzLl9pbml0Q29uZmlnPy5tYXhQYWdlcyk7XG4gIHByb3RlY3RlZCByZWFkb25seSBfaXRlbXNQZXJQYWdlID0gbmV3IEJlaGF2aW9yU3ViamVjdDxNYXliZTxudW1iZXI+Pih0aGlzLl9pbml0Q29uZmlnPy5pdGVtc1BlclBhZ2UpO1xuICBwcm90ZWN0ZWQgcmVhZG9ubHkgX2NvbnN0cmFpbnRzID0gbmV3IEJlaGF2aW9yU3ViamVjdDxNYXliZTxBcnJheU9yVmFsdWU8RmlyZXN0b3JlUXVlcnlDb25zdHJhaW50Pj4+KHRoaXMuX2luaXRDb25maWc/LmNvbnN0cmFpbnRzKTtcbiAgcHJvdGVjdGVkIHJlYWRvbmx5IF9yZXN0YXJ0ID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcblxuICBwcml2YXRlIHJlYWRvbmx5IF9tYXhQYWdlc1N1YiA9IG5ldyBTdWJzY3JpcHRpb25PYmplY3QoKTtcblxuICByZWFkb25seSBjb2xsZWN0aW9uJCA9IHRoaXMuX2NvbGxlY3Rpb24ucGlwZShkaXN0aW5jdFVudGlsQ2hhbmdlZCgpKTtcbiAgcmVhZG9ubHkgY29uc3RyYWludHMkID0gdGhpcy5fY29uc3RyYWludHMucGlwZShkaXN0aW5jdFVudGlsQ2hhbmdlZCgpKTtcblxuICByZWFkb25seSBpdGVyYXRvckZpbHRlciQ6IE9ic2VydmFibGU8RmlyZXN0b3JlSXRlbVBhZ2VJdGVyYXRvckZpbHRlcj4gPSBjb21iaW5lTGF0ZXN0KFt0aGlzLl9pdGVtc1BlclBhZ2UucGlwZShkaXN0aW5jdFVudGlsQ2hhbmdlZCgpKSwgdGhpcy5jb25zdHJhaW50cyRdKS5waXBlKFxuICAgIG1hcCgoW2xpbWl0LCBjb25zdHJhaW50c10pID0+ICh7IGxpbWl0LCBjb25zdHJhaW50cywgbWF4UGFnZUxvYWRMaW1pdDogdGhpcy5tYXhQYWdlcyB9IGFzIEZpcmVzdG9yZUl0ZW1QYWdlSXRlcmF0b3JGaWx0ZXIpKSxcbiAgICBzaGFyZVJlcGxheSgxKVxuICApO1xuXG4gIHJlYWRvbmx5IGZpcmVzdG9yZUl0ZXJhdGlvbiQ6IE9ic2VydmFibGU8RmlyZXN0b3JlSXRlbVBhZ2VJdGVyYXRpb25JbnN0YW5jZTxUPj4gPSB0aGlzLmNvbGxlY3Rpb24kLnBpcGUoXG4gICAgc3dpdGNoTWFwKChjb2xsZWN0aW9uKSA9PiB7XG4gICAgICBpZiAoY29sbGVjdGlvbikge1xuICAgICAgICByZXR1cm4gY29tYmluZUxhdGVzdChbdGhpcy5pdGVyYXRvckZpbHRlciQsIHRoaXMuX3Jlc3RhcnQucGlwZShzdGFydFdpdGgodW5kZWZpbmVkKSldKS5waXBlKFxuICAgICAgICAgIHRocm90dGxlVGltZSgxMDAsIHVuZGVmaW5lZCwgeyB0cmFpbGluZzogdHJ1ZSB9KSwgLy8gcHJldmVudCByYXBpZCBjaGFuZ2VzIGFuZCBleGVjdXRpbmcgZmlsdGVycyB0b28gcXVpY2tseS5cbiAgICAgICAgICBtYXAoKFtpdGVyYXRvckZpbHRlcl0pID0+IGNvbGxlY3Rpb24uZmlyZXN0b3JlSXRlcmF0aW9uKGl0ZXJhdG9yRmlsdGVyKSksXG4gICAgICAgICAgY2xlYW51cERlc3Ryb3lhYmxlKCksIC8vIGNsZWFudXAgdGhlIGl0ZXJhdGlvblxuICAgICAgICAgIHNoYXJlUmVwbGF5KDEpXG4gICAgICAgICk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm4gTkVWRVI7IC8vIGRvbid0IGVtaXQgYW55dGhpbmcgdW50aWwgY29sbGVjdGlvbiBpcyBwcm92aWRlZC5cbiAgICAgIH1cbiAgICB9KSxcbiAgICBjbGVhbnVwRGVzdHJveWFibGUoKSwgLy8gY2xlYW51cCB0aGUgaXRlcmF0aW9uXG4gICAgc2hhcmVSZXBsYXkoMSlcbiAgKTtcblxuICByZWFkb25seSBxdWVyeUNoYW5nZVdhdGNoZXIkOiBPYnNlcnZhYmxlPEl0ZXJhdGlvblF1ZXJ5RG9jQ2hhbmdlV2F0Y2hlcjxUPj4gPSB0aGlzLmZpcmVzdG9yZUl0ZXJhdGlvbiQucGlwZShcbiAgICBtYXAoKGluc3RhbmNlKSA9PiBpdGVyYXRpb25RdWVyeURvY0NoYW5nZVdhdGNoZXIoeyBpbnN0YW5jZSB9KSksXG4gICAgc2hhcmVSZXBsYXkoMSlcbiAgKTtcblxuICByZWFkb25seSBzbmFwc2hvdEFjY3VtdWxhdG9yJDogT2JzZXJ2YWJsZTxGaXJlYmFzZVF1ZXJ5U25hcHNob3RBY2N1bXVsYXRvcjxUPj4gPSB0aGlzLmZpcmVzdG9yZUl0ZXJhdGlvbiQucGlwZShcbiAgICBtYXAoKHgpID0+IGZpcmViYXNlUXVlcnlTbmFwc2hvdEFjY3VtdWxhdG9yPFQ+KHgpKSxcbiAgICBjbGVhbnVwRGVzdHJveWFibGUoKSxcbiAgICBzaGFyZVJlcGxheSgxKVxuICApO1xuXG4gIHJlYWRvbmx5IHNuYXBzaG90QWNjdW11bGF0b3JEb2N1bWVudFJlZnMkOiBPYnNlcnZhYmxlPERvY3VtZW50UmVmZXJlbmNlPFQ+W11bXT4gPSB0aGlzLnNuYXBzaG90QWNjdW11bGF0b3IkLnBpcGUoXG4gICAgc3dpdGNoTWFwKCh4KSA9PiB4LmFsbEl0ZW1zJC5waXBlKG1hcCgoeSkgPT4geS5tYXAoKHopID0+IHoubWFwKCh6eikgPT4genoucmVmKSkpKSksXG4gICAgc2hhcmVSZXBsYXkoMSlcbiAgKTtcblxuICByZWFkb25seSBzbmFwc2hvdEFjY3VtdWxhdG9yRG9jdW1lbnRzJDogT2JzZXJ2YWJsZTxEW11bXT4gPSBjb21iaW5lTGF0ZXN0KFt0aGlzLmNvbGxlY3Rpb24kLnBpcGUoZmlsdGVyTWF5YmUoKSksIHRoaXMuc25hcHNob3RBY2N1bXVsYXRvckRvY3VtZW50UmVmcyRdKS5waXBlKFxuICAgIG1hcCgoW2NvbGxlY3Rpb24sIGRvY3VtZW50UmVmc10pID0+IHtcbiAgICAgIGNvbnN0IGFjY2Vzc29yID0gY29sbGVjdGlvbi5kb2N1bWVudEFjY2Vzc29yKCk7XG4gICAgICByZXR1cm4gZG9jdW1lbnRSZWZzLm1hcCgoeSkgPT4geS5tYXAoKHopID0+IGFjY2Vzc29yLmxvYWREb2N1bWVudCh6KSkpO1xuICAgIH0pLFxuICAgIHNoYXJlUmVwbGF5KDEpXG4gICk7XG5cbiAgcmVhZG9ubHkgYWNjdW11bGF0b3IkOiBPYnNlcnZhYmxlPEZpcmViYXNlUXVlcnlJdGVtQWNjdW11bGF0b3I8VD4+ID0gdGhpcy5maXJlc3RvcmVJdGVyYXRpb24kLnBpcGUoXG4gICAgbWFwKCh4KSA9PiBmaXJlYmFzZVF1ZXJ5SXRlbUFjY3VtdWxhdG9yPFQ+KHgpKSxcbiAgICBjbGVhbnVwRGVzdHJveWFibGUoKSxcbiAgICBzaGFyZVJlcGxheSgxKVxuICApO1xuXG4gIHJlYWRvbmx5IGFjY3VtdWxhdG9ySXRlbXMkOiBPYnNlcnZhYmxlPERvY3VtZW50RGF0YVdpdGhJZEFuZEtleTxUPltdW10+ID0gdGhpcy5hY2N1bXVsYXRvciQucGlwZShcbiAgICBzd2l0Y2hNYXAoKHgpID0+IHguYWxsSXRlbXMkKSxcbiAgICBzaGFyZVJlcGxheSgxKVxuICApO1xuXG4gIHJlYWRvbmx5IGhhc0RvY3VtZW50cyQ6IE9ic2VydmFibGU8Ym9vbGVhbj4gPSB0aGlzLmZpcmVzdG9yZUl0ZXJhdGlvbiQucGlwZShcbiAgICBzd2l0Y2hNYXAoKHgpID0+IHguZmlyc3RTdGF0ZSQucGlwZShtYXAoKHgpID0+IEJvb2xlYW4oeC52YWx1ZT8ubGVuZ3RoKSkpKSxcbiAgICBzaGFyZVJlcGxheSgxKVxuICApO1xuXG4gIHJlYWRvbmx5IGFsbERvY3VtZW50UmVmcyQ6IE9ic2VydmFibGU8RG9jdW1lbnRSZWZlcmVuY2U8VD5bXT4gPSB0aGlzLnNuYXBzaG90QWNjdW11bGF0b3JEb2N1bWVudFJlZnMkLnBpcGUoXG4gICAgbWFwKCh4KSA9PiB4LmZsYXQoKSksXG4gICAgc2hhcmVSZXBsYXkoMSlcbiAgKTtcblxuICByZWFkb25seSBhbGxEb2N1bWVudHMkOiBPYnNlcnZhYmxlPERbXT4gPSB0aGlzLnNuYXBzaG90QWNjdW11bGF0b3JEb2N1bWVudHMkLnBpcGUoXG4gICAgbWFwKCh4KSA9PiB4LmZsYXQoKSksXG4gICAgc2hhcmVSZXBsYXkoMSlcbiAgKTtcblxuICByZWFkb25seSBhbGxEb2N1bWVudERhdGEkOiBPYnNlcnZhYmxlPERvY3VtZW50RGF0YVdpdGhJZEFuZEtleTxUPltdPiA9IHRoaXMuYWNjdW11bGF0b3JJdGVtcyQucGlwZShcbiAgICBtYXAoKHgpID0+IHguZmxhdCgpKSxcbiAgICBzaGFyZVJlcGxheSgxKVxuICApO1xuXG4gIHJlYWRvbmx5IHBhZ2VMb2FkaW5nU3RhdGUkOiBPYnNlcnZhYmxlPFBhZ2VMaXN0TG9hZGluZ1N0YXRlPERvY3VtZW50RGF0YVdpdGhJZEFuZEtleTxUPj4+ID0gdGhpcy5hY2N1bXVsYXRvciQucGlwZShcbiAgICBzd2l0Y2hNYXAoKHgpID0+IGFjY3VtdWxhdG9yRmxhdHRlblBhZ2VMaXN0TG9hZGluZ1N0YXRlKHgpKSxcbiAgICBzaGFyZVJlcGxheSgxKVxuICApO1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgcmVhZG9ubHkgX2luaXRDb25maWc/OiBEYnhGaXJlYmFzZUNvbGxlY3Rpb25Mb2FkZXJJbnN0YW5jZUluaXRDb25maWc8VCwgRD4pIHt9XG5cbiAgaW5pdCgpOiB2b2lkIHtcbiAgICAvLyBXaGVuIG1heCBwYWdlcyBjaGFuZ2VzLCB1cGRhdGUgdGhlIGl0ZXJhdGlvbidzIG1heCBwYWdlIGxpbWl0LlxuICAgIHRoaXMuX21heFBhZ2VzU3ViLnN1YnNjcmlwdGlvbiA9IHRoaXMuX21heFBhZ2VzXG4gICAgICAucGlwZShcbiAgICAgICAgZGlzdGluY3RVbnRpbENoYW5nZWQoKSxcbiAgICAgICAgZmlsdGVyTWF5YmUoKSwgLy8gZG8gbm90IHBhc3MgbnVsbC91bmRlZmluZWQgdmFsdWVzXG4gICAgICAgIHN3aXRjaE1hcCgobWF4UGFnZUxvYWRMaW1pdCkgPT5cbiAgICAgICAgICB0aGlzLmZpcmVzdG9yZUl0ZXJhdGlvbiQucGlwZShcbiAgICAgICAgICAgIHRhcCgoaXRlcmF0aW9uKSA9PiB7XG4gICAgICAgICAgICAgIGl0ZXJhdGlvbi5tYXhQYWdlTG9hZExpbWl0ID0gbWF4UGFnZUxvYWRMaW1pdDtcbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgKVxuICAgICAgICApXG4gICAgICApXG4gICAgICAuc3Vic2NyaWJlKCk7XG4gIH1cblxuICBkZXN0cm95KCk6IHZvaWQge1xuICAgIHRoaXMuX21heFBhZ2VzLmNvbXBsZXRlKCk7XG4gICAgdGhpcy5fY29sbGVjdGlvbi5jb21wbGV0ZSgpO1xuICAgIHRoaXMuX2NvbnN0cmFpbnRzLmNvbXBsZXRlKCk7XG4gICAgdGhpcy5faXRlbXNQZXJQYWdlLmNvbXBsZXRlKCk7XG4gICAgdGhpcy5fcmVzdGFydC5jb21wbGV0ZSgpO1xuICAgIHRoaXMuX21heFBhZ2VzU3ViLmRlc3Ryb3koKTtcbiAgfVxuXG4gIC8vIE1BUks6IElucHV0c1xuICBnZXQgbWF4UGFnZXMoKTogTWF5YmU8bnVtYmVyPiB7XG4gICAgcmV0dXJuIHRoaXMuX21heFBhZ2VzLnZhbHVlO1xuICB9XG5cbiAgc2V0IG1heFBhZ2VzKG1heFBhZ2VzOiBNYXliZTxudW1iZXI+KSB7XG4gICAgaWYgKHRoaXMubWF4UGFnZXMgIT0gbWF4UGFnZXMpIHtcbiAgICAgIHRoaXMuX21heFBhZ2VzLm5leHQobWF4UGFnZXMpO1xuICAgIH1cbiAgfVxuXG4gIGdldCBpdGVtc1BlclBhZ2UoKTogTWF5YmU8bnVtYmVyPiB7XG4gICAgcmV0dXJuIHRoaXMuX2l0ZW1zUGVyUGFnZS52YWx1ZTtcbiAgfVxuXG4gIHNldCBpdGVtc1BlclBhZ2UoaXRlbXNQZXJQYWdlOiBNYXliZTxudW1iZXI+KSB7XG4gICAgaWYgKHRoaXMuaXRlbXNQZXJQYWdlICE9IGl0ZW1zUGVyUGFnZSkge1xuICAgICAgdGhpcy5faXRlbXNQZXJQYWdlLm5leHQoaXRlbXNQZXJQYWdlKTtcbiAgICB9XG4gIH1cblxuICBnZXQgY29uc3RyYWludHMoKTogTWF5YmU8QXJyYXlPclZhbHVlPEZpcmVzdG9yZVF1ZXJ5Q29uc3RyYWludD4+IHtcbiAgICByZXR1cm4gdGhpcy5fY29uc3RyYWludHMudmFsdWU7XG4gIH1cblxuICBzZXQgY29uc3RyYWludHMoY29uc3RyYWludHM6IE1heWJlPEFycmF5T3JWYWx1ZTxGaXJlc3RvcmVRdWVyeUNvbnN0cmFpbnQ+Pikge1xuICAgIHRoaXMuX2NvbnN0cmFpbnRzLm5leHQoY29uc3RyYWludHMpO1xuICB9XG5cbiAgZ2V0IGNvbGxlY3Rpb24oKTogTWF5YmU8RmlyZXN0b3JlQ29sbGVjdGlvbkxpa2U8VCwgRD4+IHtcbiAgICByZXR1cm4gdGhpcy5fY29sbGVjdGlvbi52YWx1ZTtcbiAgfVxuXG4gIHNldCBjb2xsZWN0aW9uKGNvbGxlY3Rpb246IE1heWJlPEZpcmVzdG9yZUNvbGxlY3Rpb25MaWtlPFQsIEQ+Pikge1xuICAgIHRoaXMuX2NvbGxlY3Rpb24ubmV4dChjb2xsZWN0aW9uKTtcbiAgfVxuXG4gIC8vIE1BUks6IERieEZpcmViYXNlQ29sbGVjdGlvbkxvYWRlclxuICBuZXh0KCkge1xuICAgIHVzZUZpcnN0KHRoaXMuZmlyZXN0b3JlSXRlcmF0aW9uJCwgKHgpID0+IHgubmV4dCgpKTtcbiAgfVxuXG4gIHJlc3RhcnQoKSB7XG4gICAgdGhpcy5fcmVzdGFydC5uZXh0KCk7XG4gIH1cblxuICBzZXRDb25zdHJhaW50cyhjb25zdHJhaW50czogTWF5YmU8QXJyYXlPclZhbHVlPEZpcmVzdG9yZVF1ZXJ5Q29uc3RyYWludD4+KSB7XG4gICAgdGhpcy5jb25zdHJhaW50cyA9IGNvbnN0cmFpbnRzO1xuICB9XG5cbiAgc2V0Q29sbGVjdGlvbihmaXJlc3RvcmVDb2xsZWN0aW9uOiBNYXliZTxGaXJlc3RvcmVDb2xsZWN0aW9uTGlrZTxULCBEPj4pIHtcbiAgICB0aGlzLmNvbGxlY3Rpb24gPSBmaXJlc3RvcmVDb2xsZWN0aW9uO1xuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBkYnhGaXJlYmFzZUNvbGxlY3Rpb25Mb2FkZXJJbnN0YW5jZTxULCBEIGV4dGVuZHMgRmlyZXN0b3JlRG9jdW1lbnQ8VD4gPSBGaXJlc3RvcmVEb2N1bWVudDxUPj4oY29uZmlnOiBEYnhGaXJlYmFzZUNvbGxlY3Rpb25Mb2FkZXJJbnN0YW5jZUluaXRDb25maWc8VCwgRD4pOiBEYnhGaXJlYmFzZUNvbGxlY3Rpb25Mb2FkZXJJbnN0YW5jZTxULCBEPiB7XG4gIHJldHVybiBuZXcgRGJ4RmlyZWJhc2VDb2xsZWN0aW9uTG9hZGVySW5zdGFuY2U8VCwgRD4oY29uZmlnKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGRieEZpcmViYXNlQ29sbGVjdGlvbkxvYWRlckluc3RhbmNlV2l0aENvbGxlY3Rpb248VCwgRCBleHRlbmRzIEZpcmVzdG9yZURvY3VtZW50PFQ+ID0gRmlyZXN0b3JlRG9jdW1lbnQ8VD4+KGNvbGxlY3Rpb246IE1heWJlPEZpcmVzdG9yZUNvbGxlY3Rpb25MaWtlPFQsIEQ+Pik6IERieEZpcmViYXNlQ29sbGVjdGlvbkxvYWRlckluc3RhbmNlPFQsIEQ+IHtcbiAgcmV0dXJuIG5ldyBEYnhGaXJlYmFzZUNvbGxlY3Rpb25Mb2FkZXJJbnN0YW5jZTxULCBEPih7IGNvbGxlY3Rpb24gfSk7XG59XG4iXX0=
@@ -1,2 +1,2 @@
1
1
  export {};
2
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29sbGVjdGlvbi5sb2FkZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9kYngtZmlyZWJhc2Uvc3JjL2xpYi9tb2RlbC9sb2FkZXIvY29sbGVjdGlvbi5sb2FkZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERvY3VtZW50RGF0YVdpdGhJZCwgRmlyZXN0b3JlSXRlbVBhZ2VJdGVyYXRpb25JbnN0YW5jZSwgRmlyZXN0b3JlUXVlcnlDb25zdHJhaW50LCBJdGVyYXRpb25RdWVyeURvY0NoYW5nZVdhdGNoZXIgfSBmcm9tICdAZGVyZWVrYi9maXJlYmFzZSc7XG5pbXBvcnQgeyBQYWdlTGlzdExvYWRpbmdTdGF0ZSB9IGZyb20gJ0BkZXJlZWtiL3J4anMnO1xuaW1wb3J0IHsgTWF5YmUsIEFycmF5T3JWYWx1ZSB9IGZyb20gJ0BkZXJlZWtiL3V0aWwnO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xuXG5leHBvcnQgaW50ZXJmYWNlIERieEZpcmViYXNlQ29sbGVjdGlvbkxvYWRlckFjY2Vzc29yPFQgPSB1bmtub3duPiB7XG4gIHJlYWRvbmx5IGNvbnN0cmFpbnRzJDogT2JzZXJ2YWJsZTxNYXliZTxBcnJheU9yVmFsdWU8RmlyZXN0b3JlUXVlcnlDb25zdHJhaW50Pj4+O1xuICByZWFkb25seSBmaXJlc3RvcmVJdGVyYXRpb24kOiBPYnNlcnZhYmxlPEZpcmVzdG9yZUl0ZW1QYWdlSXRlcmF0aW9uSW5zdGFuY2U8VD4+O1xuICByZWFkb25seSBwYWdlTG9hZGluZ1N0YXRlJDogT2JzZXJ2YWJsZTxQYWdlTGlzdExvYWRpbmdTdGF0ZTxEb2N1bWVudERhdGFXaXRoSWQ8VD4+PjtcbiAgcmVhZG9ubHkgcXVlcnlDaGFuZ2VXYXRjaGVyJDogT2JzZXJ2YWJsZTxJdGVyYXRpb25RdWVyeURvY0NoYW5nZVdhdGNoZXI8VD4+O1xuXG4gIC8qKlxuICAgKiBSZXN0YXJ0cyB0aGUgbG9hZGVyIGFuZCByZWZyZXNoZXMgaXRlbXMgZnJvbSB0aGUgYmVnaW5uaW5nLlxuICAgKi9cbiAgcmVzdGFydCgpOiB2b2lkO1xufVxuXG4vKipcbiAqIEFic3RyYWN0IHR5cGUgdGhhdCBsb2FkcyBtb2RlbHMgZnJvbSBhIGNvbmZpZ3VyZWQgY29sbGVjdGlvbi5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBEYnhGaXJlYmFzZUNvbGxlY3Rpb25Mb2FkZXI8VCA9IHVua25vd24+IGV4dGVuZHMgRGJ4RmlyZWJhc2VDb2xsZWN0aW9uTG9hZGVyQWNjZXNzb3I8VD4ge1xuICAvKipcbiAgICogTWF4aW11bSBudW1iZXIgb2YgcGFnZXMgdG8gbG9hZCBmcm9tIHRoZSBpbnRlcmF0aW9uLlxuICAgKlxuICAgKiBDaGFuZ2luZyB0aGlzIHVwZGF0ZXMgdGhlIGl0ZXJhdGlvbiwgYnV0IGRvZXMgbm90IHJlc2V0IGl0LlxuICAgKi9cbiAgbWF4UGFnZXM6IE1heWJlPG51bWJlcj47XG5cbiAgLyoqXG4gICAqIE51bWJlciBvZiBpdGVtcyB0byBsb2FkIHBlciBwYWdlLlxuICAgKlxuICAgKiBDaGFuZ2luZyB0aGlzIHdpbGwgcmVzZXQgdGhlIGl0ZXJhdGlvbi5cbiAgICovXG4gIGl0ZW1zUGVyUGFnZTogTWF5YmU8bnVtYmVyPjtcblxuICAvKipcbiAgICogU2V0cyB0aGUgY29uc3RyYWludHMgb24gdGhlIG1vZGVsIGxvYWRlci5cbiAgICpcbiAgICogQHBhcmFtIGNvbnN0cmFpbnRzXG4gICAqL1xuICBzZXRDb25zdHJhaW50cyhjb25zdHJhaW50czogTWF5YmU8QXJyYXlPclZhbHVlPEZpcmVzdG9yZVF1ZXJ5Q29uc3RyYWludD4+KTogdm9pZDtcblxuICAvKipcbiAgICogTG9hZHMgbW9yZSBpdGVtcy5cbiAgICovXG4gIG5leHQoKTogdm9pZDtcbn1cbiJdfQ==
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29sbGVjdGlvbi5sb2FkZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9kYngtZmlyZWJhc2Uvc3JjL2xpYi9tb2RlbC9sb2FkZXIvY29sbGVjdGlvbi5sb2FkZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERvY3VtZW50RGF0YVdpdGhJZEFuZEtleSwgRmlyZXN0b3JlSXRlbVBhZ2VJdGVyYXRpb25JbnN0YW5jZSwgRmlyZXN0b3JlUXVlcnlDb25zdHJhaW50LCBJdGVyYXRpb25RdWVyeURvY0NoYW5nZVdhdGNoZXIgfSBmcm9tICdAZGVyZWVrYi9maXJlYmFzZSc7XG5pbXBvcnQgeyBQYWdlTGlzdExvYWRpbmdTdGF0ZSB9IGZyb20gJ0BkZXJlZWtiL3J4anMnO1xuaW1wb3J0IHsgTWF5YmUsIEFycmF5T3JWYWx1ZSB9IGZyb20gJ0BkZXJlZWtiL3V0aWwnO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xuXG5leHBvcnQgaW50ZXJmYWNlIERieEZpcmViYXNlQ29sbGVjdGlvbkxvYWRlckFjY2Vzc29yPFQgPSB1bmtub3duPiB7XG4gIHJlYWRvbmx5IGNvbnN0cmFpbnRzJDogT2JzZXJ2YWJsZTxNYXliZTxBcnJheU9yVmFsdWU8RmlyZXN0b3JlUXVlcnlDb25zdHJhaW50Pj4+O1xuICByZWFkb25seSBmaXJlc3RvcmVJdGVyYXRpb24kOiBPYnNlcnZhYmxlPEZpcmVzdG9yZUl0ZW1QYWdlSXRlcmF0aW9uSW5zdGFuY2U8VD4+O1xuICByZWFkb25seSBwYWdlTG9hZGluZ1N0YXRlJDogT2JzZXJ2YWJsZTxQYWdlTGlzdExvYWRpbmdTdGF0ZTxEb2N1bWVudERhdGFXaXRoSWRBbmRLZXk8VD4+PjtcbiAgcmVhZG9ubHkgcXVlcnlDaGFuZ2VXYXRjaGVyJDogT2JzZXJ2YWJsZTxJdGVyYXRpb25RdWVyeURvY0NoYW5nZVdhdGNoZXI8VD4+O1xuXG4gIC8qKlxuICAgKiBSZXN0YXJ0cyB0aGUgbG9hZGVyIGFuZCByZWZyZXNoZXMgaXRlbXMgZnJvbSB0aGUgYmVnaW5uaW5nLlxuICAgKi9cbiAgcmVzdGFydCgpOiB2b2lkO1xufVxuXG4vKipcbiAqIEFic3RyYWN0IHR5cGUgdGhhdCBsb2FkcyBtb2RlbHMgZnJvbSBhIGNvbmZpZ3VyZWQgY29sbGVjdGlvbi5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBEYnhGaXJlYmFzZUNvbGxlY3Rpb25Mb2FkZXI8VCA9IHVua25vd24+IGV4dGVuZHMgRGJ4RmlyZWJhc2VDb2xsZWN0aW9uTG9hZGVyQWNjZXNzb3I8VD4ge1xuICAvKipcbiAgICogTWF4aW11bSBudW1iZXIgb2YgcGFnZXMgdG8gbG9hZCBmcm9tIHRoZSBpbnRlcmF0aW9uLlxuICAgKlxuICAgKiBDaGFuZ2luZyB0aGlzIHVwZGF0ZXMgdGhlIGl0ZXJhdGlvbiwgYnV0IGRvZXMgbm90IHJlc2V0IGl0LlxuICAgKi9cbiAgbWF4UGFnZXM6IE1heWJlPG51bWJlcj47XG5cbiAgLyoqXG4gICAqIE51bWJlciBvZiBpdGVtcyB0byBsb2FkIHBlciBwYWdlLlxuICAgKlxuICAgKiBDaGFuZ2luZyB0aGlzIHdpbGwgcmVzZXQgdGhlIGl0ZXJhdGlvbi5cbiAgICovXG4gIGl0ZW1zUGVyUGFnZTogTWF5YmU8bnVtYmVyPjtcblxuICAvKipcbiAgICogU2V0cyB0aGUgY29uc3RyYWludHMgb24gdGhlIG1vZGVsIGxvYWRlci5cbiAgICpcbiAgICogQHBhcmFtIGNvbnN0cmFpbnRzXG4gICAqL1xuICBzZXRDb25zdHJhaW50cyhjb25zdHJhaW50czogTWF5YmU8QXJyYXlPclZhbHVlPEZpcmVzdG9yZVF1ZXJ5Q29uc3RyYWludD4+KTogdm9pZDtcblxuICAvKipcbiAgICogTG9hZHMgbW9yZSBpdGVtcy5cbiAgICovXG4gIG5leHQoKTogdm9pZDtcbn1cbiJdfQ==
@@ -65,4 +65,4 @@ export function dbxFirebaseDocumentLoaderInstance(config) {
65
65
  export function dbxFirebaseDocumentLoaderInstanceWithAccessor(accessor) {
66
66
  return new DbxFirebaseDocumentLoaderInstance({ accessor });
67
67
  }
68
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZG9jdW1lbnQubG9hZGVyLmluc3RhbmNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvZGJ4LWZpcmViYXNlL3NyYy9saWIvbW9kZWwvbG9hZGVyL2RvY3VtZW50LmxvYWRlci5pbnN0YW5jZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQXFCLGVBQWUsRUFBd0IsV0FBVyxFQUFFLGtCQUFrQixFQUFFLFlBQVksRUFBRSx1QkFBdUIsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNqSyxPQUFPLEVBQUUsZUFBZSxFQUFFLEdBQUcsRUFBRSxXQUFXLEVBQUUsb0JBQW9CLEVBQUUsT0FBTyxFQUFFLFNBQVMsRUFBYyxTQUFTLEVBQUUsVUFBVSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ3RJLE9BQU8sRUFBRSx5QkFBeUIsRUFBeUMsK0JBQStCLEVBQWtFLDhCQUE4QixFQUFxQiwrQkFBK0IsRUFBRSw0QkFBNEIsRUFBRSxvQkFBb0IsRUFBb0Msa0NBQWtDLEVBQUUsbUJBQW1CLEVBQUUsb0JBQW9CLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUN4ZCxPQUFPLEVBQWdCLE9BQU8sRUFBc0IsTUFBTSxlQUFlLENBQUM7QUFPMUU7O0dBRUc7QUFDSCxNQUFNLE9BQU8sd0NBQXdDO0lBMkNuRCxZQUE2QixXQUFpRTtRQUFqRSxnQkFBVyxHQUFYLFdBQVcsQ0FBc0Q7UUExQ3JGLGFBQVEsR0FBTSxJQUFJLENBQUMsV0FBVyxDQUFDLFFBQVEsQ0FBQztRQUU5QixlQUFVLEdBQUcsSUFBSSxlQUFlLENBQWEsU0FBUyxDQUFDLENBQUM7UUFDeEQsYUFBUSxHQUFHLElBQUksT0FBTyxFQUFRLENBQUM7UUFDL0IsU0FBSSxHQUFHLElBQUksa0JBQWtCLEVBQUUsQ0FBQztRQUUxQyxlQUFVLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsV0FBVyxFQUFFLEVB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SSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDMUYsQ0FBQztDQUNGO0FBRUQsTUFBTSxVQUFVLHdDQUF3QyxDQUFzSixNQUE0RDtJQUN4USxPQUFPLElBQUksd0NBQXdDLENBQVUsTUFBTSxDQUFDLENBQUM7QUFDdkUsQ0FBQztBQUVELE1BQU0sVUFBVSxvREFBb0QsQ0FBc0osUUFBVztJQUNuTyxPQUFPLElBQUksd0NBQXdDLENBQVUsRUFBRSxRQUFRLEVBQUUsQ0FBQyxDQUFDO0FBQzdFLENBQUM7QUFFRCwrQ0FBK0M7QUFDL0MsTUFBTSxPQUFPLGlDQUFtTCxTQUFRLHdDQUFpRDtJQUN2UCxNQUFNLENBQUMsR0FBOEQ7UUFDbkUsSUFBSSxDQUFDLFlBQVksQ0FBQyxZQUFZLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsbUJBQW1CLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRSxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUN4RyxDQUFDO0NBQ0Y7QUFFRCxNQUFNLFVBQVUsaUNBQWlDLENBQXdJLE1BQTREO0lBQ25QLE9BQU8sSUFBSSxpQ0FBaUMsQ0FBVSxNQUFNLENBQUMsQ0FBQztBQUNoRSxDQUFDO0FBRUQsTUFBTSxVQUFVLDZDQUE2QyxDQUF3SSxRQUFXO0lBQzlNLE9BQU8sSUFBSSxpQ0FBaUMsQ0FBVSxFQUFFLFFBQVEsRUFBRSxDQUFDLENBQUM7QUFDdEUsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE9ic2VydmFibGVPclZhbHVlLCB1c2VBc09ic2VydmFibGUsIFBhZ2VMaXN0TG9hZGluZ1N0YXRlLCBmaWx0ZXJNYXliZSwgU3Vic2NyaXB0aW9uT2JqZWN0LCBhc09ic2VydmFibGUsIHBhZ2VMb2FkaW5nU3RhdGVGcm9tT2JzIH0gZnJvbSAnQGRlcmVla2Ivcnhqcyc7XG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QsIG1hcCwgc2hhcmVSZXBsYXksIGRpc3RpbmN0VW50aWxDaGFuZ2VkLCBTdWJqZWN0LCBzd2l0Y2hNYXAsIE9ic2VydmFibGUsIHN0YXJ0V2l0aCwgZXhoYXVzdE1hcCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgZGF0YUZyb21Eb2N1bWVudFNuYXBzaG90cywgRG9jdW1lbnREYXRhV2l0aElkLCBEb2N1bWVudFJlZmVyZW5jZSwgZG9jdW1lbnRSZWZlcmVuY2VzRnJvbURvY3VtZW50cywgRG9jdW1lbnRTbmFwc2hvdCwgRmlyZXN0b3JlRG9jdW1lbnQsIEZpcmVzdG9yZURvY3VtZW50QWNjZXNzb3IsIGZpcmVzdG9yZU1vZGVsSWRzRnJvbURvY3VtZW50cywgRmlyZXN0b3JlTW9kZWxLZXksIGZpcmVzdG9yZU1vZGVsS2V5c0Zyb21Eb2N1bWVudHMsIGdldERhdGFGcm9tRG9jdW1lbnRTbmFwc2hvdHMsIGdldERvY3VtZW50U25hcHNob3RzLCBMaW1pdGVkRmlyZXN0b3JlRG9jdW1lbnRBY2Nlc3NvciwgbG9hZERvY3VtZW50c0ZvckRvY3VtZW50UmVmZXJlbmNlcywgbG9hZERvY3VtZW50c0ZvcklkcywgbG9hZERvY3VtZW50c0ZvcktleXMsIHN0cmVhbURvY3VtZW50U25hcHNob3RzIH0gZnJvbSAnQGRlcmVla2IvZmlyZWJhc2UnO1xuaW1wb3J0IHsgQXJyYXlPclZhbHVlLCBhc0FycmF5LCBEZXN0cm95YWJsZSwgTWF5YmUgfSBmcm9tICdAZGVyZWVrYi91dGlsJztcbmltcG9ydCB7IERieEZpcmViYXNlRG9jdW1lbnRMb2FkZXIsIERieExpbWl0ZWRGaXJlYmFzZURvY3VtZW50TG9hZGVyIH0gZnJvbSAnLi9kb2N1bWVudC5sb2FkZXInO1xuXG5leHBvcnQgaW50ZXJmYWNlIERieEZpcmViYXNlRG9jdW1lbnRMb2FkZXJJbnN0YW5jZUluaXRDb25maWc8VCwgRCBleHRlbmRzIEZpcmVzdG9yZURvY3VtZW50PFQ+ID0gRmlyZXN0b3JlRG9jdW1lbnQ8VD4sIEEgZXh0ZW5kcyBMaW1pdGVkRmlyZXN0b3JlRG9jdW1lbnRBY2Nlc3NvcjxULCBEPiA9IExpbWl0ZWRGaXJlc3RvcmVEb2N1bWVudEFjY2Vzc29yPFQsIEQ+PiB7XG4gIHJlYWRvbmx5IGFjY2Vzc29yOiBBO1xufVxuXG4vKipcbiAqIERieExpbWl0ZWRGaXJlYmFzZURvY3VtZW50TG9hZGVyIGltcGxlbWVudGF0aW9uIHdpdGhpbiBhbiBpbnN0YW5jZS5cbiAqL1xuZXhwb3J0IGNsYXNzIERieExpbWl0ZWRGaXJlYmFzZURvY3VtZW50TG9hZGVySW5zdGFuY2U8VCA9IHVua25vd24sIEQgZXh0ZW5kcyBGaXJlc3RvcmVEb2N1bWVudDxUPiA9IEZpcmVzdG9yZURvY3VtZW50PFQ+LCBBIGV4dGVuZHMgTGltaXRlZEZpcmVzdG9yZURvY3VtZW50QWNjZXNzb3I8VCwgRD4gPSBMaW1pdGVkRmlyZXN0b3JlRG9jdW1lbnRBY2Nlc3NvcjxULCBEPj4gaW1wbGVtZW50cyBEYnhMaW1pdGVkRmlyZWJhc2VEb2N1bWVudExvYWRlcjxUPiwgRGVzdHJveWFibGUge1xuICByZWFkb25seSBhY2Nlc3NvcjogQSA9IHRoaXMuX2luaXRDb25maWcuYWNjZXNzb3I7XG5cbiAgcHJvdGVjdGVkIHJlYWRvbmx5IF9kb2N1bWVudHMgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PE1heWJlPERbXT4+KHVuZGVmaW5lZCk7XG4gIHByb3RlY3RlZCByZWFkb25seSBfcmVzdGFydCA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XG4gIHByb3RlY3RlZCByZWFkb25seSBfc3ViID0gbmV3IFN1YnNjcmlwdGlvbk9iamVjdCgpO1xuXG4gIHJlYWRvbmx5IGRvY3VtZW50cyQgPSB0aGlzLl9kb2N1bWVudHMucGlwZShmaWx0ZXJNYXliZSgpLCBkaXN0aW5jdFVudGlsQ2hhbmdlZCgpKTtcbiAgcmVhZG9ubHkga2V5cyQgPSB0aGlzLmRvY3VtZW50cyQucGlwZShtYXAoZmlyZXN0b3JlTW9kZWxLZXlzRnJvbURvY3VtZW50cykpO1xuICByZWFkb25seSBpZHMkID0gdGhpcy5kb2N1bWVudHMkLnBpcGUobWFwKGZpcmVzdG9yZU1vZGVsSWRzRnJvbURvY3VtZW50cykpO1xuICByZWFkb25seSByZWZzJCA9IHRoaXMuZG9jdW1lbnRzJC5waXBlKG1hcChkb2N1bWVudFJlZmVyZW5jZXNGcm9tRG9jdW1lbnRzKSk7XG5cbiAgcmVhZG9ubHkgc25hcHNob3RzJDogT2JzZXJ2YWJsZTxEb2N1bWVudFNuYXBzaG90PFQ+W10+ID0gdGhpcy5kb2N1bWVudHMkLnBpcGUoXG4gICAgc3dpdGNoTWFwKChkb2NzKSA9PlxuICAgICAgdGhpcy5fcmVzdGFydC5waXBlKFxuICAgICAgICBzdGFydFdpdGgobnVsbCksXG4gICAgICAgIGV4aGF1c3RNYXAoKCkgPT4gZ2V0RG9jdW1lbnRTbmFwc2hvdHM8RD4oZG9jcykpXG4gICAgICApXG4gICAgKSxcbiAgICBzaGFyZVJlcGxheSgxKVxuICApO1xuXG4gIHJlYWRvbmx5IGRhdGEkOiBPYnNlcnZhYmxlPERvY3VtZW50RGF0YVdpdGhJZDxUPltdPiA9IHRoaXMuc25hcHNob3RzJC5waXBlKFxuICAgIG1hcCgoc25hcHNob3RzKSA9PiBnZXREYXRhRnJvbURvY3VtZW50U25hcHNob3RzKHNuYXBzaG90cywgdHJ1ZSkpLFxuICAgIHNoYXJlUmVwbGF5KDEpXG4gICk7XG5cbiAgLyoqXG4gICAqIFNuYXBzaG90IHN0cmVhbSBvZiB0aGUgZG9jdW1lbnRzXG4gICAqL1xuICByZWFkb25seSBzbmFwc2hvdHNTdHJlYW0kOiBPYnNlcnZhYmxlPERvY3VtZW50U25hcHNob3Q8VD5bXT4gPSB0aGlzLmRvY3VtZW50cyQucGlwZShcbiAgICBzd2l0Y2hNYXAoKGRvY3MpID0+IHN0cmVhbURvY3VtZW50U25hcHNob3RzPFQsIEQ+KGRvY3MpKSxcbiAgICBzaGFyZVJlcGxheSgxKVxuICApO1xuXG4gIC8qKlxuICAgKiBEYXRhIHN0cmVhbWQgb2YgdGhlIGRvY3VtZW50cy5cbiAgICovXG4gIHJlYWRvbmx5IGRhdGFTdHJlYW0kOiBPYnNlcnZhYmxlPERvY3VtZW50RGF0YVdpdGhJZDxUPltdPiA9IHRoaXMuc25hcHNob3RzU3RyZWFtJC5waXBlKGRhdGFGcm9tRG9jdW1lbnRTbmFwc2hvdHMoKSwgc2hhcmVSZXBsYXkoMSkpO1xuXG4gIHJlYWRvbmx5IHBhZ2VMb2FkaW5nU3RhdGUkOiBPYnNlcnZhYmxlPFBhZ2VMaXN0TG9hZGluZ1N0YXRlPERvY3VtZW50RGF0YVdpdGhJZDxUPj4+ID0gcGFnZUxvYWRpbmdTdGF0ZUZyb21PYnModGhpcy5kYXRhJCwgZmFsc2UpO1xuICByZWFkb25seSBwYWdlTG9hZGluZ1N0YXRlU3RyZWFtJDogT2JzZXJ2YWJsZTxQYWdlTGlzdExvYWRpbmdTdGF0ZTxEb2N1bWVudERhdGFXaXRoSWQ8VD4+PiA9IHBhZ2VMb2FkaW5nU3RhdGVGcm9tT2JzKHRoaXMuZGF0YVN0cmVhbSQsIGZhbHNlKTtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHJlYWRvbmx5IF9pbml0Q29uZmlnOiBEYnhGaXJlYmFzZURvY3VtZW50TG9hZGVySW5zdGFuY2VJbml0Q29uZmlnPFQsIEQsIEE+KSB7fVxuXG4gIGRlc3Ryb3koKTogdm9pZCB7XG4gICAgdGhpcy5fZG9jdW1lbnRzLmNvbXBsZXRlKCk7XG4gICAgdGhpcy5fcmVzdGFydC5jb21wbGV0ZSgpO1xuICAgIHRoaXMuX3N1Yi5kZXN0cm95KCk7XG4gIH1cblxuICByZXN0YXJ0KCkge1xuICAgIHRoaXMuX3Jlc3RhcnQubmV4dCgpO1xuICB9XG5cbiAgc2V0S2V5cyhrZXlzOiBNYXliZTxPYnNlcnZhYmxlT3JWYWx1ZTxBcnJheU9yVmFsdWU8RmlyZXN0b3JlTW9kZWxLZXk+Pj4pOiB2b2lkIHtcbiAgICB0aGlzLnNldERvY3VtZW50cyhhc09ic2VydmFibGUoa2V5cykucGlwZShtYXAoKHgpID0+IGxvYWREb2N1bWVudHNGb3JLZXlzKHRoaXMuYWNjZXNzb3IsIGFzQXJyYXkoeCkpKSkpO1xuICB9XG5cbiAgc2V0UmVmcyhyZWZzOiBNYXliZTxPYnNlcnZhYmxlT3JWYWx1ZTxBcnJheU9yVmFsdWU8RG9jdW1lbnRSZWZlcmVuY2U8VD4+Pj4pOiB2b2lkIHtcbiAgICB0aGlzLnNldERvY3VtZW50cyhhc09ic2VydmFibGUocmVmcykucGlwZShtYXAoKHgpID0+IGxvYWREb2N1bWVudHNGb3JEb2N1bWVudFJlZmVyZW5jZXModGhpcy5hY2Nlc3NvciwgYXNBcnJheSh4KSkpKSk7XG4gIH1cblxuICBzZXREb2N1bWVudHMoZG9jczogTWF5YmU8T2JzZXJ2YWJsZU9yVmFsdWU8QXJyYXlPclZhbHVlPEQ+Pj4pOiB2b2lkIHtcbiAgICB0aGlzLl9zdWIuc3Vic2NyaXB0aW9uID0gdXNlQXNPYnNlcnZhYmxlKGRvY3MsICh4KSA9PiB0aGlzLl9kb2N1bWVudHMubmV4dChhc0FycmF5KHgpKSk7XG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGRieExpbWl0ZWRGaXJlYmFzZURvY3VtZW50TG9hZGVySW5zdGFuY2U8VCwgRCBleHRlbmRzIEZpcmVzdG9yZURvY3VtZW50PFQ+ID0gRmlyZXN0b3JlRG9jdW1lbnQ8VD4sIEEgZXh0ZW5kcyBMaW1pdGVkRmlyZXN0b3JlRG9jdW1lbnRBY2Nlc3NvcjxULCBEPiA9IExpbWl0ZWRGaXJlc3RvcmVEb2N1bWVudEFjY2Vzc29yPFQsIEQ+Pihjb25maWc6IERieEZpcmViYXNlRG9jdW1lbnRMb2FkZXJJbnN0YW5jZUluaXRDb25maWc8VCwgRCwgQT4pOiBEYnhMaW1pdGVkRmlyZWJhc2VEb2N1bWVudExvYWRlckluc3RhbmNlPFQsIEQsIEE+IHtcbiAgcmV0dXJuIG5ldyBEYnhMaW1pdGVkRmlyZWJhc2VEb2N1bWVudExvYWRlckluc3RhbmNlPFQsIEQsIEE+KGNvbmZpZyk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBkYnhMaW1pdGVkRmlyZWJhc2VEb2N1bWVudExvYWRlckluc3RhbmNlV2l0aEFjY2Vzc29yPFQsIEQgZXh0ZW5kcyBGaXJlc3RvcmVEb2N1bWVudDxUPiA9IEZpcmVzdG9yZURvY3VtZW50PFQ+LCBBIGV4dGVuZHMgTGltaXRlZEZpcmVzdG9yZURvY3VtZW50QWNjZXNzb3I8VCwgRD4gPSBMaW1pdGVkRmlyZXN0b3JlRG9jdW1lbnRBY2Nlc3NvcjxULCBEPj4oYWNjZXNzb3I6IEEpOiBEYnhMaW1pdGVkRmlyZWJhc2VEb2N1bWVudExvYWRlckluc3RhbmNlPFQsIEQsIEE+IHtcbiAgcmV0dXJuIG5ldyBEYnhMaW1pdGVkRmlyZWJhc2VEb2N1bWVudExvYWRlckluc3RhbmNlPFQsIEQsIEE+KHsgYWNjZXNzb3IgfSk7XG59XG5cbi8vIE1BUks6IEZ1bGwgRGJ4RmlyZWJhc2VEb2N1bWVudExvYWRlckluc3RhbmNlXG5leHBvcnQgY2xhc3MgRGJ4RmlyZWJhc2VEb2N1bWVudExvYWRlckluc3RhbmNlPFQgPSB1bmtub3duLCBEIGV4dGVuZHMgRmlyZXN0b3JlRG9jdW1lbnQ8VD4gPSBGaXJlc3RvcmVEb2N1bWVudDxUPiwgQSBleHRlbmRzIEZpcmVzdG9yZURvY3VtZW50QWNjZXNzb3I8VCwgRD4gPSBGaXJlc3RvcmVEb2N1bWVudEFjY2Vzc29yPFQsIEQ+PiBleHRlbmRzIERieExpbWl0ZWRGaXJlYmFzZURvY3VtZW50TG9hZGVySW5zdGFuY2U8VCwgRCwgQT4gaW1wbGVtZW50cyBEYnhGaXJlYmFzZURvY3VtZW50TG9hZGVyPFQ+LCBEZXN0cm95YWJsZSB7XG4gIHNldElkcyhpZHM6IE1heWJlPE9ic2VydmFibGVPclZhbHVlPEFycmF5T3JWYWx1ZTxGaXJlc3RvcmVNb2RlbEtleT4+Pik6IHZvaWQge1xuICAgIHRoaXMuc2V0RG9jdW1lbnRzKGFzT2JzZXJ2YWJsZShpZHMpLnBpcGUobWFwKCh4KSA9PiBsb2FkRG9jdW1lbnRzRm9ySWRzKHRoaXMuYWNjZXNzb3IsIGFzQXJyYXkoeCkpKSkpO1xuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBkYnhGaXJlYmFzZURvY3VtZW50TG9hZGVySW5zdGFuY2U8VCwgRCBleHRlbmRzIEZpcmVzdG9yZURvY3VtZW50PFQ+ID0gRmlyZXN0b3JlRG9jdW1lbnQ8VD4sIEEgZXh0ZW5kcyBGaXJlc3RvcmVEb2N1bWVudEFjY2Vzc29yPFQsIEQ+ID0gRmlyZXN0b3JlRG9jdW1lbnRBY2Nlc3NvcjxULCBEPj4oY29uZmlnOiBEYnhGaXJlYmFzZURvY3VtZW50TG9hZGVySW5zdGFuY2VJbml0Q29uZmlnPFQsIEQsIEE+KTogRGJ4RmlyZWJhc2VEb2N1bWVudExvYWRlckluc3RhbmNlPFQsIEQsIEE+IHtcbiAgcmV0dXJuIG5ldyBEYnhGaXJlYmFzZURvY3VtZW50TG9hZGVySW5zdGFuY2U8VCwgRCwgQT4oY29uZmlnKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGRieEZpcmViYXNlRG9jdW1lbnRMb2FkZXJJbnN0YW5jZVdpdGhBY2Nlc3NvcjxULCBEIGV4dGVuZHMgRmlyZXN0b3JlRG9jdW1lbnQ8VD4gPSBGaXJlc3RvcmVEb2N1bWVudDxUPiwgQSBleHRlbmRzIEZpcmVzdG9yZURvY3VtZW50QWNjZXNzb3I8VCwgRD4gPSBGaXJlc3RvcmVEb2N1bWVudEFjY2Vzc29yPFQsIEQ+PihhY2Nlc3NvcjogQSk6IERieEZpcmViYXNlRG9jdW1lbnRMb2FkZXJJbnN0YW5jZTxULCBELCBBPiB7XG4gIHJldHVybiBuZXcgRGJ4RmlyZWJhc2VEb2N1bWVudExvYWRlckluc3RhbmNlPFQsIEQsIEE+KHsgYWNjZXNzb3IgfSk7XG59XG4iXX0=
68
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZG9jdW1lbnQubG9hZGVyLmluc3RhbmNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvZGJ4LWZpcmViYXNlL3NyYy9saWIvbW9kZWwvbG9hZGVyL2RvY3VtZW50LmxvYWRlci5pbnN0YW5jZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQXFCLGVBQWUsRUFBd0IsV0FBVyxFQUFFLGtCQUFrQixFQUFFLFlBQVksRUFBRSx1QkFBdUIsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNqSyxPQUFPLEVBQUUsZUFBZSxFQUFFLEdBQUcsRUFBRSxXQUFXLEVBQUUsb0JBQW9CLEVBQUUsT0FBTyxFQUFFLFNBQVMsRUFBYyxTQUFTLEVBQUUsVUFBVSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ3RJLE9BQU8sRUFBRSx5QkFBeUIsRUFBK0MsK0JBQStCLEVBQWtFLDhCQUE4QixFQUFxQiwrQkFBK0IsRUFBRSw0QkFBNEIsRUFBRSxvQkFBb0IsRUFBb0Msa0NBQWtDLEVBQUUsbUJBQW1CLEVBQUUsb0JBQW9CLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUM5ZCxPQUFPLEVBQWdCLE9BQU8sRUFBc0IsTUFBTSxlQUFlLENBQUM7QUFPMUU7O0dBRUc7QUFDSCxNQUFNLE9BQU8sd0NBQXdDO0lBMkNuRCxZQUE2QixXQUFpRTtRQUFqRSxnQkFBVyxHQUFYLFdBQVcsQ0FBc0Q7UUExQ3JGLGFBQVEsR0FBTSxJQUFJLENBQUMsV0FBVyxDQUFDLFFBQVEsQ0FBQztRQUU5QixlQUFVLEdBQUcsSUFBSSxlQUFlLENBQWEsU0FBUyxDQUFDLENBQUM7UUFDeEQsYUFBUSxHQUFHLElBQUksT0FBTyxFQUFRLENBQUM7UUFDL0IsU0FBSSxHQUFHLElBQUksa0JBQWtCLEVBQUUsQ0FBQztRQUUxQyxlQUFVLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsV0FBVyxFQUFFLEVB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SSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDMUYsQ0FBQztDQUNGO0FBRUQsTUFBTSxVQUFVLHdDQUF3QyxDQUFzSixNQUE0RDtJQUN4USxPQUFPLElBQUksd0NBQXdDLENBQVUsTUFBTSxDQUFDLENBQUM7QUFDdkUsQ0FBQztBQUVELE1BQU0sVUFBVSxvREFBb0QsQ0FBc0osUUFBVztJQUNuTyxPQUFPLElBQUksd0NBQXdDLENBQVUsRUFBRSxRQUFRLEVBQUUsQ0FBQyxDQUFDO0FBQzdFLENBQUM7QUFFRCwrQ0FBK0M7QUFDL0MsTUFBTSxPQUFPLGlDQUFtTCxTQUFRLHdDQUFpRDtJQUN2UCxNQUFNLENBQUMsR0FBOEQ7UUFDbkUsSUFBSSxDQUFDLFlBQVksQ0FBQyxZQUFZLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsbUJBQW1CLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRSxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUN4RyxDQUFDO0NBQ0Y7QUFFRCxNQUFNLFVBQVUsaUNBQWlDLENBQXdJLE1BQTREO0lBQ25QLE9BQU8sSUFBSSxpQ0FBaUMsQ0FBVSxNQUFNLENBQUMsQ0FBQztBQUNoRSxDQUFDO0FBRUQsTUFBTSxVQUFVLDZDQUE2QyxDQUF3SSxRQUFXO0lBQzlNLE9BQU8sSUFBSSxpQ0FBaUMsQ0FBVSxFQUFFLFFBQVEsRUFBRSxDQUFDLENBQUM7QUFDdEUsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE9ic2VydmFibGVPclZhbHVlLCB1c2VBc09ic2VydmFibGUsIFBhZ2VMaXN0TG9hZGluZ1N0YXRlLCBmaWx0ZXJNYXliZSwgU3Vic2NyaXB0aW9uT2JqZWN0LCBhc09ic2VydmFibGUsIHBhZ2VMb2FkaW5nU3RhdGVGcm9tT2JzIH0gZnJvbSAnQGRlcmVla2Ivcnhqcyc7XG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QsIG1hcCwgc2hhcmVSZXBsYXksIGRpc3RpbmN0VW50aWxDaGFuZ2VkLCBTdWJqZWN0LCBzd2l0Y2hNYXAsIE9ic2VydmFibGUsIHN0YXJ0V2l0aCwgZXhoYXVzdE1hcCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgZGF0YUZyb21Eb2N1bWVudFNuYXBzaG90cywgRG9jdW1lbnREYXRhV2l0aElkQW5kS2V5LCBEb2N1bWVudFJlZmVyZW5jZSwgZG9jdW1lbnRSZWZlcmVuY2VzRnJvbURvY3VtZW50cywgRG9jdW1lbnRTbmFwc2hvdCwgRmlyZXN0b3JlRG9jdW1lbnQsIEZpcmVzdG9yZURvY3VtZW50QWNjZXNzb3IsIGZpcmVzdG9yZU1vZGVsSWRzRnJvbURvY3VtZW50cywgRmlyZXN0b3JlTW9kZWxLZXksIGZpcmVzdG9yZU1vZGVsS2V5c0Zyb21Eb2N1bWVudHMsIGdldERhdGFGcm9tRG9jdW1lbnRTbmFwc2hvdHMsIGdldERvY3VtZW50U25hcHNob3RzLCBMaW1pdGVkRmlyZXN0b3JlRG9jdW1lbnRBY2Nlc3NvciwgbG9hZERvY3VtZW50c0ZvckRvY3VtZW50UmVmZXJlbmNlcywgbG9hZERvY3VtZW50c0ZvcklkcywgbG9hZERvY3VtZW50c0ZvcktleXMsIHN0cmVhbURvY3VtZW50U25hcHNob3RzIH0gZnJvbSAnQGRlcmVla2IvZmlyZWJhc2UnO1xuaW1wb3J0IHsgQXJyYXlPclZhbHVlLCBhc0FycmF5LCBEZXN0cm95YWJsZSwgTWF5YmUgfSBmcm9tICdAZGVyZWVrYi91dGlsJztcbmltcG9ydCB7IERieEZpcmViYXNlRG9jdW1lbnRMb2FkZXIsIERieExpbWl0ZWRGaXJlYmFzZURvY3VtZW50TG9hZGVyIH0gZnJvbSAnLi9kb2N1bWVudC5sb2FkZXInO1xuXG5leHBvcnQgaW50ZXJmYWNlIERieEZpcmViYXNlRG9jdW1lbnRMb2FkZXJJbnN0YW5jZUluaXRDb25maWc8VCwgRCBleHRlbmRzIEZpcmVzdG9yZURvY3VtZW50PFQ+ID0gRmlyZXN0b3JlRG9jdW1lbnQ8VD4sIEEgZXh0ZW5kcyBMaW1pdGVkRmlyZXN0b3JlRG9jdW1lbnRBY2Nlc3NvcjxULCBEPiA9IExpbWl0ZWRGaXJlc3RvcmVEb2N1bWVudEFjY2Vzc29yPFQsIEQ+PiB7XG4gIHJlYWRvbmx5IGFjY2Vzc29yOiBBO1xufVxuXG4vKipcbiAqIERieExpbWl0ZWRGaXJlYmFzZURvY3VtZW50TG9hZGVyIGltcGxlbWVudGF0aW9uIHdpdGhpbiBhbiBpbnN0YW5jZS5cbiAqL1xuZXhwb3J0IGNsYXNzIERieExpbWl0ZWRGaXJlYmFzZURvY3VtZW50TG9hZGVySW5zdGFuY2U8VCA9IHVua25vd24sIEQgZXh0ZW5kcyBGaXJlc3RvcmVEb2N1bWVudDxUPiA9IEZpcmVzdG9yZURvY3VtZW50PFQ+LCBBIGV4dGVuZHMgTGltaXRlZEZpcmVzdG9yZURvY3VtZW50QWNjZXNzb3I8VCwgRD4gPSBMaW1pdGVkRmlyZXN0b3JlRG9jdW1lbnRBY2Nlc3NvcjxULCBEPj4gaW1wbGVtZW50cyBEYnhMaW1pdGVkRmlyZWJhc2VEb2N1bWVudExvYWRlcjxUPiwgRGVzdHJveWFibGUge1xuICByZWFkb25seSBhY2Nlc3NvcjogQSA9IHRoaXMuX2luaXRDb25maWcuYWNjZXNzb3I7XG5cbiAgcHJvdGVjdGVkIHJlYWRvbmx5IF9kb2N1bWVudHMgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PE1heWJlPERbXT4+KHVuZGVmaW5lZCk7XG4gIHByb3RlY3RlZCByZWFkb25seSBfcmVzdGFydCA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XG4gIHByb3RlY3RlZCByZWFkb25seSBfc3ViID0gbmV3IFN1YnNjcmlwdGlvbk9iamVjdCgpO1xuXG4gIHJlYWRvbmx5IGRvY3VtZW50cyQgPSB0aGlzLl9kb2N1bWVudHMucGlwZShmaWx0ZXJNYXliZSgpLCBkaXN0aW5jdFVudGlsQ2hhbmdlZCgpKTtcbiAgcmVhZG9ubHkga2V5cyQgPSB0aGlzLmRvY3VtZW50cyQucGlwZShtYXAoZmlyZXN0b3JlTW9kZWxLZXlzRnJvbURvY3VtZW50cykpO1xuICByZWFkb25seSBpZHMkID0gdGhpcy5kb2N1bWVudHMkLnBpcGUobWFwKGZpcmVzdG9yZU1vZGVsSWRzRnJvbURvY3VtZW50cykpO1xuICByZWFkb25seSByZWZzJCA9IHRoaXMuZG9jdW1lbnRzJC5waXBlKG1hcChkb2N1bWVudFJlZmVyZW5jZXNGcm9tRG9jdW1lbnRzKSk7XG5cbiAgcmVhZG9ubHkgc25hcHNob3RzJDogT2JzZXJ2YWJsZTxEb2N1bWVudFNuYXBzaG90PFQ+W10+ID0gdGhpcy5kb2N1bWVudHMkLnBpcGUoXG4gICAgc3dpdGNoTWFwKChkb2NzKSA9PlxuICAgICAgdGhpcy5fcmVzdGFydC5waXBlKFxuICAgICAgICBzdGFydFdpdGgobnVsbCksXG4gICAgICAgIGV4aGF1c3RNYXAoKCkgPT4gZ2V0RG9jdW1lbnRTbmFwc2hvdHM8RD4oZG9jcykpXG4gICAgICApXG4gICAgKSxcbiAgICBzaGFyZVJlcGxheSgxKVxuICApO1xuXG4gIHJlYWRvbmx5IGRhdGEkOiBPYnNlcnZhYmxlPERvY3VtZW50RGF0YVdpdGhJZEFuZEtleTxUPltdPiA9IHRoaXMuc25hcHNob3RzJC5waXBlKFxuICAgIG1hcCgoc25hcHNob3RzKSA9PiBnZXREYXRhRnJvbURvY3VtZW50U25hcHNob3RzKHNuYXBzaG90cywgdHJ1ZSkpLFxuICAgIHNoYXJlUmVwbGF5KDEpXG4gICk7XG5cbiAgLyoqXG4gICAqIFNuYXBzaG90IHN0cmVhbSBvZiB0aGUgZG9jdW1lbnRzXG4gICAqL1xuICByZWFkb25seSBzbmFwc2hvdHNTdHJlYW0kOiBPYnNlcnZhYmxlPERvY3VtZW50U25hcHNob3Q8VD5bXT4gPSB0aGlzLmRvY3VtZW50cyQucGlwZShcbiAgICBzd2l0Y2hNYXAoKGRvY3MpID0+IHN0cmVhbURvY3VtZW50U25hcHNob3RzPFQsIEQ+KGRvY3MpKSxcbiAgICBzaGFyZVJlcGxheSgxKVxuICApO1xuXG4gIC8qKlxuICAgKiBEYXRhIHN0cmVhbWQgb2YgdGhlIGRvY3VtZW50cy5cbiAgICovXG4gIHJlYWRvbmx5IGRhdGFTdHJlYW0kOiBPYnNlcnZhYmxlPERvY3VtZW50RGF0YVdpdGhJZEFuZEtleTxUPltdPiA9IHRoaXMuc25hcHNob3RzU3RyZWFtJC5waXBlKGRhdGFGcm9tRG9jdW1lbnRTbmFwc2hvdHMoKSwgc2hhcmVSZXBsYXkoMSkpO1xuXG4gIHJlYWRvbmx5IHBhZ2VMb2FkaW5nU3RhdGUkOiBPYnNlcnZhYmxlPFBhZ2VMaXN0TG9hZGluZ1N0YXRlPERvY3VtZW50RGF0YVdpdGhJZEFuZEtleTxUPj4+ID0gcGFnZUxvYWRpbmdTdGF0ZUZyb21PYnModGhpcy5kYXRhJCwgZmFsc2UpO1xuICByZWFkb25seSBwYWdlTG9hZGluZ1N0YXRlU3RyZWFtJDogT2JzZXJ2YWJsZTxQYWdlTGlzdExvYWRpbmdTdGF0ZTxEb2N1bWVudERhdGFXaXRoSWRBbmRLZXk8VD4+PiA9IHBhZ2VMb2FkaW5nU3RhdGVGcm9tT2JzKHRoaXMuZGF0YVN0cmVhbSQsIGZhbHNlKTtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHJlYWRvbmx5IF9pbml0Q29uZmlnOiBEYnhGaXJlYmFzZURvY3VtZW50TG9hZGVySW5zdGFuY2VJbml0Q29uZmlnPFQsIEQsIEE+KSB7fVxuXG4gIGRlc3Ryb3koKTogdm9pZCB7XG4gICAgdGhpcy5fZG9jdW1lbnRzLmNvbXBsZXRlKCk7XG4gICAgdGhpcy5fcmVzdGFydC5jb21wbGV0ZSgpO1xuICAgIHRoaXMuX3N1Yi5kZXN0cm95KCk7XG4gIH1cblxuICByZXN0YXJ0KCkge1xuICAgIHRoaXMuX3Jlc3RhcnQubmV4dCgpO1xuICB9XG5cbiAgc2V0S2V5cyhrZXlzOiBNYXliZTxPYnNlcnZhYmxlT3JWYWx1ZTxBcnJheU9yVmFsdWU8RmlyZXN0b3JlTW9kZWxLZXk+Pj4pOiB2b2lkIHtcbiAgICB0aGlzLnNldERvY3VtZW50cyhhc09ic2VydmFibGUoa2V5cykucGlwZShtYXAoKHgpID0+IGxvYWREb2N1bWVudHNGb3JLZXlzKHRoaXMuYWNjZXNzb3IsIGFzQXJyYXkoeCkpKSkpO1xuICB9XG5cbiAgc2V0UmVmcyhyZWZzOiBNYXliZTxPYnNlcnZhYmxlT3JWYWx1ZTxBcnJheU9yVmFsdWU8RG9jdW1lbnRSZWZlcmVuY2U8VD4+Pj4pOiB2b2lkIHtcbiAgICB0aGlzLnNldERvY3VtZW50cyhhc09ic2VydmFibGUocmVmcykucGlwZShtYXAoKHgpID0+IGxvYWREb2N1bWVudHNGb3JEb2N1bWVudFJlZmVyZW5jZXModGhpcy5hY2Nlc3NvciwgYXNBcnJheSh4KSkpKSk7XG4gIH1cblxuICBzZXREb2N1bWVudHMoZG9jczogTWF5YmU8T2JzZXJ2YWJsZU9yVmFsdWU8QXJyYXlPclZhbHVlPEQ+Pj4pOiB2b2lkIHtcbiAgICB0aGlzLl9zdWIuc3Vic2NyaXB0aW9uID0gdXNlQXNPYnNlcnZhYmxlKGRvY3MsICh4KSA9PiB0aGlzLl9kb2N1bWVudHMubmV4dChhc0FycmF5KHgpKSk7XG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGRieExpbWl0ZWRGaXJlYmFzZURvY3VtZW50TG9hZGVySW5zdGFuY2U8VCwgRCBleHRlbmRzIEZpcmVzdG9yZURvY3VtZW50PFQ+ID0gRmlyZXN0b3JlRG9jdW1lbnQ8VD4sIEEgZXh0ZW5kcyBMaW1pdGVkRmlyZXN0b3JlRG9jdW1lbnRBY2Nlc3NvcjxULCBEPiA9IExpbWl0ZWRGaXJlc3RvcmVEb2N1bWVudEFjY2Vzc29yPFQsIEQ+Pihjb25maWc6IERieEZpcmViYXNlRG9jdW1lbnRMb2FkZXJJbnN0YW5jZUluaXRDb25maWc8VCwgRCwgQT4pOiBEYnhMaW1pdGVkRmlyZWJhc2VEb2N1bWVudExvYWRlckluc3RhbmNlPFQsIEQsIEE+IHtcbiAgcmV0dXJuIG5ldyBEYnhMaW1pdGVkRmlyZWJhc2VEb2N1bWVudExvYWRlckluc3RhbmNlPFQsIEQsIEE+KGNvbmZpZyk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBkYnhMaW1pdGVkRmlyZWJhc2VEb2N1bWVudExvYWRlckluc3RhbmNlV2l0aEFjY2Vzc29yPFQsIEQgZXh0ZW5kcyBGaXJlc3RvcmVEb2N1bWVudDxUPiA9IEZpcmVzdG9yZURvY3VtZW50PFQ+LCBBIGV4dGVuZHMgTGltaXRlZEZpcmVzdG9yZURvY3VtZW50QWNjZXNzb3I8VCwgRD4gPSBMaW1pdGVkRmlyZXN0b3JlRG9jdW1lbnRBY2Nlc3NvcjxULCBEPj4oYWNjZXNzb3I6IEEpOiBEYnhMaW1pdGVkRmlyZWJhc2VEb2N1bWVudExvYWRlckluc3RhbmNlPFQsIEQsIEE+IHtcbiAgcmV0dXJuIG5ldyBEYnhMaW1pdGVkRmlyZWJhc2VEb2N1bWVudExvYWRlckluc3RhbmNlPFQsIEQsIEE+KHsgYWNjZXNzb3IgfSk7XG59XG5cbi8vIE1BUks6IEZ1bGwgRGJ4RmlyZWJhc2VEb2N1bWVudExvYWRlckluc3RhbmNlXG5leHBvcnQgY2xhc3MgRGJ4RmlyZWJhc2VEb2N1bWVudExvYWRlckluc3RhbmNlPFQgPSB1bmtub3duLCBEIGV4dGVuZHMgRmlyZXN0b3JlRG9jdW1lbnQ8VD4gPSBGaXJlc3RvcmVEb2N1bWVudDxUPiwgQSBleHRlbmRzIEZpcmVzdG9yZURvY3VtZW50QWNjZXNzb3I8VCwgRD4gPSBGaXJlc3RvcmVEb2N1bWVudEFjY2Vzc29yPFQsIEQ+PiBleHRlbmRzIERieExpbWl0ZWRGaXJlYmFzZURvY3VtZW50TG9hZGVySW5zdGFuY2U8VCwgRCwgQT4gaW1wbGVtZW50cyBEYnhGaXJlYmFzZURvY3VtZW50TG9hZGVyPFQ+LCBEZXN0cm95YWJsZSB7XG4gIHNldElkcyhpZHM6IE1heWJlPE9ic2VydmFibGVPclZhbHVlPEFycmF5T3JWYWx1ZTxGaXJlc3RvcmVNb2RlbEtleT4+Pik6IHZvaWQge1xuICAgIHRoaXMuc2V0RG9jdW1lbnRzKGFzT2JzZXJ2YWJsZShpZHMpLnBpcGUobWFwKCh4KSA9PiBsb2FkRG9jdW1lbnRzRm9ySWRzKHRoaXMuYWNjZXNzb3IsIGFzQXJyYXkoeCkpKSkpO1xuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBkYnhGaXJlYmFzZURvY3VtZW50TG9hZGVySW5zdGFuY2U8VCwgRCBleHRlbmRzIEZpcmVzdG9yZURvY3VtZW50PFQ+ID0gRmlyZXN0b3JlRG9jdW1lbnQ8VD4sIEEgZXh0ZW5kcyBGaXJlc3RvcmVEb2N1bWVudEFjY2Vzc29yPFQsIEQ+ID0gRmlyZXN0b3JlRG9jdW1lbnRBY2Nlc3NvcjxULCBEPj4oY29uZmlnOiBEYnhGaXJlYmFzZURvY3VtZW50TG9hZGVySW5zdGFuY2VJbml0Q29uZmlnPFQsIEQsIEE+KTogRGJ4RmlyZWJhc2VEb2N1bWVudExvYWRlckluc3RhbmNlPFQsIEQsIEE+IHtcbiAgcmV0dXJuIG5ldyBEYnhGaXJlYmFzZURvY3VtZW50TG9hZGVySW5zdGFuY2U8VCwgRCwgQT4oY29uZmlnKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGRieEZpcmViYXNlRG9jdW1lbnRMb2FkZXJJbnN0YW5jZVdpdGhBY2Nlc3NvcjxULCBEIGV4dGVuZHMgRmlyZXN0b3JlRG9jdW1lbnQ8VD4gPSBGaXJlc3RvcmVEb2N1bWVudDxUPiwgQSBleHRlbmRzIEZpcmVzdG9yZURvY3VtZW50QWNjZXNzb3I8VCwgRD4gPSBGaXJlc3RvcmVEb2N1bWVudEFjY2Vzc29yPFQsIEQ+PihhY2Nlc3NvcjogQSk6IERieEZpcmViYXNlRG9jdW1lbnRMb2FkZXJJbnN0YW5jZTxULCBELCBBPiB7XG4gIHJldHVybiBuZXcgRGJ4RmlyZWJhc2VEb2N1bWVudExvYWRlckluc3RhbmNlPFQsIEQsIEE+KHsgYWNjZXNzb3IgfSk7XG59XG4iXX0=
@@ -1,2 +1,2 @@
1
1
  export {};
2
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZG9jdW1lbnQubG9hZGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvZGJ4LWZpcmViYXNlL3NyYy9saWIvbW9kZWwvbG9hZGVyL2RvY3VtZW50LmxvYWRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRG9jdW1lbnREYXRhV2l0aElkLCBGaXJlc3RvcmVNb2RlbEtleSwgRG9jdW1lbnRSZWZlcmVuY2UsIEZpcmVzdG9yZURvY3VtZW50LCBGaXJlc3RvcmVNb2RlbElkLCBEb2N1bWVudFNuYXBzaG90IH0gZnJvbSAnQGRlcmVla2IvZmlyZWJhc2UnO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZU9yVmFsdWUsIFBhZ2VMaXN0TG9hZGluZ1N0YXRlIH0gZnJvbSAnQGRlcmVla2Ivcnhqcyc7XG5pbXBvcnQgeyBNYXliZSwgQXJyYXlPclZhbHVlIH0gZnJvbSAnQGRlcmVla2IvdXRpbCc7XG5pbXBvcnQgeyBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XG5cbi8qKlxuICogQWJzdHJhY3QgdHlwZSB0aGF0IGxvYWRzIGRvY3VtZW50IHNuYXBzaG90cyBmcm9tIGtleXMsIHJlZnMsIG9yIGRvY3VtZW50cy5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBEYnhMaW1pdGVkRmlyZWJhc2VEb2N1bWVudExvYWRlcjxUID0gdW5rbm93biwgRCBleHRlbmRzIEZpcmVzdG9yZURvY3VtZW50PFQ+ID0gRmlyZXN0b3JlRG9jdW1lbnQ8VD4+IHtcbiAgLyoqXG4gICAqIEtleXMgb2YgdGhlIGRvY3VtZW50c1xuICAgKi9cbiAgcmVhZG9ubHkga2V5cyQ6IE9ic2VydmFibGU8RmlyZXN0b3JlTW9kZWxLZXlbXT47XG5cbiAgLyoqXG4gICAqIFJlZnMgb2YgdGhlIGRvY3VtZW50c1xuICAgKi9cbiAgcmVhZG9ubHkgcmVmcyQ6IE9ic2VydmFibGU8RG9jdW1lbnRSZWZlcmVuY2U8VD5bXT47XG5cbiAgLyoqXG4gICAqIElkcyBvZiB0aGUgZG9jdW1lbnRzXG4gICAqL1xuICByZWFkb25seSBpZHMkOiBPYnNlcnZhYmxlPEZpcmVzdG9yZU1vZGVsSWRbXT47XG5cbiAgLyoqXG4gICAqIERvY3VtZW50cyB0byBsb2FkLlxuICAgKi9cbiAgcmVhZG9ubHkgZG9jdW1lbnRzJDogT2JzZXJ2YWJsZTxEW10+O1xuXG4gIC8qKlxuICAgKiBTbmFwc2hvdHMgb2YgdGhlIGRvY3VtZW50c1xuICAgKi9cbiAgcmVhZG9ubHkgc25hcHNob3RzJDogT2JzZXJ2YWJsZTxEb2N1bWVudFNuYXBzaG90PFQ+W10+O1xuXG4gIC8qKlxuICAgKiBEYXRhIGZyb20gdGhlIGRvY3VtZW50cy5cbiAgICovXG4gIHJlYWRvbmx5IGRhdGEkOiBPYnNlcnZhYmxlPERvY3VtZW50RGF0YVdpdGhJZDxUPltdPjtcblxuICAvKipcbiAgICogU25hcHNob3Qgc3RyZWFtIG9mIHRoZSBkb2N1bWVudHNcbiAgICovXG4gIHJlYWRvbmx5IHNuYXBzaG90c1N0cmVhbSQ6IE9ic2VydmFibGU8RG9jdW1lbnRTbmFwc2hvdDxUPltdPjtcblxuICAvKipcbiAgICogRGF0YSBzdHJlYW0gb2YgdGhlIGRvY3VtZW50cy5cbiAgICovXG4gIHJlYWRvbmx5IGRhdGFTdHJlYW0kOiBPYnNlcnZhYmxlPERvY3VtZW50RGF0YVdpdGhJZDxUPltdPjtcblxuICAvKipcbiAgICogTG9hZGluZyBzdGF0ZSBmb3IgdGhlIGRvY3VtZW50IGRhdGEuXG4gICAqL1xuICByZWFkb25seSBwYWdlTG9hZGluZ1N0YXRlJDogT2JzZXJ2YWJsZTxQYWdlTGlzdExvYWRpbmdTdGF0ZTxEb2N1bWVudERhdGFXaXRoSWQ8VD4+PjtcblxuICAvKipcbiAgICogTG9hZGluZyBzdGF0ZSBmb3IgdGhlIHN0cmVhbWVkIGRvY3VtZW50IGRhdGEuXG4gICAqL1xuICByZWFkb25seSBwYWdlTG9hZGluZ1N0YXRlU3RyZWFtJDogT2JzZXJ2YWJsZTxQYWdlTGlzdExvYWRpbmdTdGF0ZTxEb2N1bWVudERhdGFXaXRoSWQ8VD4+PjtcblxuICAvKipcbiAgICogU2V0cyB0aGUga2V5cyBvZiB0aGUgbW9kZWxzIHRvIGxvYWQuXG4gICAqXG4gICAqIEBwYXJhbSBjb25zdHJhaW50c1xuICAgKi9cbiAgc2V0S2V5cyhrZXlzOiBNYXliZTxPYnNlcnZhYmxlT3JWYWx1ZTxBcnJheU9yVmFsdWU8RmlyZXN0b3JlTW9kZWxLZXk+Pj4pOiB2b2lkO1xuXG4gIC8qKlxuICAgKiBTZXRzIHRoZSBkb2N1bWVudCByZWZlcmVuY2VzIHRvIGxvYWQuXG4gICAqXG4gICAqIEBwYXJhbSBjb25zdHJhaW50c1xuICAgKi9cbiAgc2V0UmVmcyhyZWZzOiBNYXliZTxPYnNlcnZhYmxlT3JWYWx1ZTxBcnJheU9yVmFsdWU8RG9jdW1lbnRSZWZlcmVuY2U8VD4+Pj4pOiB2b2lkO1xuXG4gIC8qKlxuICAgKiBTZXRzIHRoZSBkb2N1bWVudHMgdG8gbG9hZCBmcm9tLlxuICAgKlxuICAgKiBAcGFyYW0gY29uc3RyYWludHNcbiAgICovXG4gIHNldERvY3VtZW50cyhkb2NzOiBNYXliZTxPYnNlcnZhYmxlT3JWYWx1ZTxBcnJheU9yVmFsdWU8RD4+Pik6IHZvaWQ7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgRGJ4RmlyZWJhc2VEb2N1bWVudExvYWRlcjxUID0gdW5rbm93biwgRCBleHRlbmRzIEZpcmVzdG9yZURvY3VtZW50PFQ+ID0gRmlyZXN0b3JlRG9jdW1lbnQ8VD4+IGV4dGVuZHMgRGJ4TGltaXRlZEZpcmViYXNlRG9jdW1lbnRMb2FkZXI8VCwgRD4ge1xuICAvKipcbiAgICogU2V0cyB0aGUgaWRzIG9mIHRoZSBtb2RlbHMgdG8gbG9hZC5cbiAgICpcbiAgICogQHBhcmFtIGNvbnN0cmFpbnRzXG4gICAqL1xuICBzZXRJZHMoaWRzOiBNYXliZTxPYnNlcnZhYmxlT3JWYWx1ZTxBcnJheU9yVmFsdWU8RmlyZXN0b3JlTW9kZWxJZD4+Pik6IHZvaWQ7XG59XG4iXX0=
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZG9jdW1lbnQubG9hZGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvZGJ4LWZpcmViYXNlL3NyYy9saWIvbW9kZWwvbG9hZGVyL2RvY3VtZW50LmxvYWRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRG9jdW1lbnREYXRhV2l0aElkQW5kS2V5LCBGaXJlc3RvcmVNb2RlbEtleSwgRG9jdW1lbnRSZWZlcmVuY2UsIEZpcmVzdG9yZURvY3VtZW50LCBGaXJlc3RvcmVNb2RlbElkLCBEb2N1bWVudFNuYXBzaG90IH0gZnJvbSAnQGRlcmVla2IvZmlyZWJhc2UnO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZU9yVmFsdWUsIFBhZ2VMaXN0TG9hZGluZ1N0YXRlIH0gZnJvbSAnQGRlcmVla2Ivcnhqcyc7XG5pbXBvcnQgeyBNYXliZSwgQXJyYXlPclZhbHVlIH0gZnJvbSAnQGRlcmVla2IvdXRpbCc7XG5pbXBvcnQgeyBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XG5cbi8qKlxuICogQWJzdHJhY3QgdHlwZSB0aGF0IGxvYWRzIGRvY3VtZW50IHNuYXBzaG90cyBmcm9tIGtleXMsIHJlZnMsIG9yIGRvY3VtZW50cy5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBEYnhMaW1pdGVkRmlyZWJhc2VEb2N1bWVudExvYWRlcjxUID0gdW5rbm93biwgRCBleHRlbmRzIEZpcmVzdG9yZURvY3VtZW50PFQ+ID0gRmlyZXN0b3JlRG9jdW1lbnQ8VD4+IHtcbiAgLyoqXG4gICAqIEtleXMgb2YgdGhlIGRvY3VtZW50c1xuICAgKi9cbiAgcmVhZG9ubHkga2V5cyQ6IE9ic2VydmFibGU8RmlyZXN0b3JlTW9kZWxLZXlbXT47XG5cbiAgLyoqXG4gICAqIFJlZnMgb2YgdGhlIGRvY3VtZW50c1xuICAgKi9cbiAgcmVhZG9ubHkgcmVmcyQ6IE9ic2VydmFibGU8RG9jdW1lbnRSZWZlcmVuY2U8VD5bXT47XG5cbiAgLyoqXG4gICAqIElkcyBvZiB0aGUgZG9jdW1lbnRzXG4gICAqL1xuICByZWFkb25seSBpZHMkOiBPYnNlcnZhYmxlPEZpcmVzdG9yZU1vZGVsSWRbXT47XG5cbiAgLyoqXG4gICAqIERvY3VtZW50cyB0byBsb2FkLlxuICAgKi9cbiAgcmVhZG9ubHkgZG9jdW1lbnRzJDogT2JzZXJ2YWJsZTxEW10+O1xuXG4gIC8qKlxuICAgKiBTbmFwc2hvdHMgb2YgdGhlIGRvY3VtZW50c1xuICAgKi9cbiAgcmVhZG9ubHkgc25hcHNob3RzJDogT2JzZXJ2YWJsZTxEb2N1bWVudFNuYXBzaG90PFQ+W10+O1xuXG4gIC8qKlxuICAgKiBEYXRhIGZyb20gdGhlIGRvY3VtZW50cy5cbiAgICovXG4gIHJlYWRvbmx5IGRhdGEkOiBPYnNlcnZhYmxlPERvY3VtZW50RGF0YVdpdGhJZEFuZEtleTxUPltdPjtcblxuICAvKipcbiAgICogU25hcHNob3Qgc3RyZWFtIG9mIHRoZSBkb2N1bWVudHNcbiAgICovXG4gIHJlYWRvbmx5IHNuYXBzaG90c1N0cmVhbSQ6IE9ic2VydmFibGU8RG9jdW1lbnRTbmFwc2hvdDxUPltdPjtcblxuICAvKipcbiAgICogRGF0YSBzdHJlYW0gb2YgdGhlIGRvY3VtZW50cy5cbiAgICovXG4gIHJlYWRvbmx5IGRhdGFTdHJlYW0kOiBPYnNlcnZhYmxlPERvY3VtZW50RGF0YVdpdGhJZEFuZEtleTxUPltdPjtcblxuICAvKipcbiAgICogTG9hZGluZyBzdGF0ZSBmb3IgdGhlIGRvY3VtZW50IGRhdGEuXG4gICAqL1xuICByZWFkb25seSBwYWdlTG9hZGluZ1N0YXRlJDogT2JzZXJ2YWJsZTxQYWdlTGlzdExvYWRpbmdTdGF0ZTxEb2N1bWVudERhdGFXaXRoSWRBbmRLZXk8VD4+PjtcblxuICAvKipcbiAgICogTG9hZGluZyBzdGF0ZSBmb3IgdGhlIHN0cmVhbWVkIGRvY3VtZW50IGRhdGEuXG4gICAqL1xuICByZWFkb25seSBwYWdlTG9hZGluZ1N0YXRlU3RyZWFtJDogT2JzZXJ2YWJsZTxQYWdlTGlzdExvYWRpbmdTdGF0ZTxEb2N1bWVudERhdGFXaXRoSWRBbmRLZXk8VD4+PjtcblxuICAvKipcbiAgICogU2V0cyB0aGUga2V5cyBvZiB0aGUgbW9kZWxzIHRvIGxvYWQuXG4gICAqXG4gICAqIEBwYXJhbSBjb25zdHJhaW50c1xuICAgKi9cbiAgc2V0S2V5cyhrZXlzOiBNYXliZTxPYnNlcnZhYmxlT3JWYWx1ZTxBcnJheU9yVmFsdWU8RmlyZXN0b3JlTW9kZWxLZXk+Pj4pOiB2b2lkO1xuXG4gIC8qKlxuICAgKiBTZXRzIHRoZSBkb2N1bWVudCByZWZlcmVuY2VzIHRvIGxvYWQuXG4gICAqXG4gICAqIEBwYXJhbSBjb25zdHJhaW50c1xuICAgKi9cbiAgc2V0UmVmcyhyZWZzOiBNYXliZTxPYnNlcnZhYmxlT3JWYWx1ZTxBcnJheU9yVmFsdWU8RG9jdW1lbnRSZWZlcmVuY2U8VD4+Pj4pOiB2b2lkO1xuXG4gIC8qKlxuICAgKiBTZXRzIHRoZSBkb2N1bWVudHMgdG8gbG9hZCBmcm9tLlxuICAgKlxuICAgKiBAcGFyYW0gY29uc3RyYWludHNcbiAgICovXG4gIHNldERvY3VtZW50cyhkb2NzOiBNYXliZTxPYnNlcnZhYmxlT3JWYWx1ZTxBcnJheU9yVmFsdWU8RD4+Pik6IHZvaWQ7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgRGJ4RmlyZWJhc2VEb2N1bWVudExvYWRlcjxUID0gdW5rbm93biwgRCBleHRlbmRzIEZpcmVzdG9yZURvY3VtZW50PFQ+ID0gRmlyZXN0b3JlRG9jdW1lbnQ8VD4+IGV4dGVuZHMgRGJ4TGltaXRlZEZpcmViYXNlRG9jdW1lbnRMb2FkZXI8VCwgRD4ge1xuICAvKipcbiAgICogU2V0cyB0aGUgaWRzIG9mIHRoZSBtb2RlbHMgdG8gbG9hZC5cbiAgICpcbiAgICogQHBhcmFtIGNvbnN0cmFpbnRzXG4gICAqL1xuICBzZXRJZHMoaWRzOiBNYXliZTxPYnNlcnZhYmxlT3JWYWx1ZTxBcnJheU9yVmFsdWU8RmlyZXN0b3JlTW9kZWxJZD4+Pik6IHZvaWQ7XG59XG4iXX0=
@@ -40,6 +40,10 @@ export class AbstractDbxFirebaseCollectionStore extends LockSetComponentStore {
40
40
  this.queryChangeWatcher$ = this.loader$.pipe(switchMap((x) => x.queryChangeWatcher$));
41
41
  this.accumulator$ = this.loader$.pipe(switchMap((x) => x.accumulator$));
42
42
  this.pageLoadingState$ = this.loader$.pipe(switchMap((x) => x.pageLoadingState$));
43
+ this.hasDocuments$ = this.loader$.pipe(switchMap((x) => x.hasDocuments$));
44
+ this.allDocumentRefs$ = this.loader$.pipe(switchMap((x) => x.allDocumentRefs$));
45
+ this.allDocuments$ = this.loader$.pipe(switchMap((x) => x.allDocuments$));
46
+ this.allDocumentData$ = this.loader$.pipe(switchMap((x) => x.allDocumentData$));
43
47
  this.setFirestoreCollection = this.updater((state, firestoreCollection) => ({ ...state, firestoreCollection }));
44
48
  }
45
49
  }
@@ -48,4 +52,4 @@ AbstractDbxFirebaseCollectionStore.ɵprov = i0.ɵɵngDeclareInjectable({ minVers
48
52
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.1.2", ngImport: i0, type: AbstractDbxFirebaseCollectionStore, decorators: [{
49
53
  type: Injectable
50
54
  }] });
51
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RvcmUuY29sbGVjdGlvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2RieC1maXJlYmFzZS9zcmMvbGliL21vZGVsL3N0b3JlL3N0b3JlLmNvbGxlY3Rpb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzQyxPQUFPLEVBQWMsV0FBVyxFQUFFLG9CQUFvQixFQUFnQixVQUFVLEVBQUUsS0FBSyxFQUFFLEdBQUcsRUFBRSxTQUFTLEVBQUUsR0FBRyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBRTNILE9BQU8sRUFBcUIsa0JBQWtCLEVBQXdCLFdBQVcsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUV6RyxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUMxRCxPQUFPLEVBQXVDLG1DQUFtQyxFQUEyQyxNQUFNLHNDQUFzQyxDQUFDOztBQTRCeks7O0dBRUc7QUFFSCxNQUFNLE9BQU8sa0NBQW9NLFNBQVEscUJBQXdCO0lBRGpQOztRQUVFLGdCQUFnQjtRQUNQLGdCQUFXLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLEtBQWdDLEVBQUUsRUFBRTtZQUN0RSxPQUFPLEtBQUssQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsUUFBUSxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsR0FBRyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ3JHLENBQUMsQ0FBQyxDQUFDO1FBRU0sb0JBQWUsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsS0FBZ0MsRUFBRSxFQUFFO1lBQzFFLE9BQU8sS0FBSyxDQUFDLElBQUksQ0FBQyxTQUFTLENB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QztRQUNwSSx3QkFBbUIsR0FBa0QsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsbUJBQW1CLENBQUMsQ0FBQyxDQUFDO1FBQ2hJLGlCQUFZLEdBQWdELElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUM7UUFDaEgsc0JBQWlCLEdBQTRELElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLGlCQUFpQixDQUFDLENBQUMsQ0FBQztRQUV0SSwyQkFBc0IsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUMsS0FBSyxFQUFFLG1CQUFxRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsR0FBRyxLQUFLLEVBQUUsbUJBQW1CLEVBQUUsQ0FBQyxDQUFDLENBQUM7S0FDdks7OytIQXZFWSxrQ0FBa0M7bUlBQWxDLGtDQUFrQzsyRkFBbEMsa0NBQWtDO2tCQUQ5QyxVQUFVIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSwgc2hhcmVSZXBsYXksIGRpc3RpbmN0VW50aWxDaGFuZ2VkLCBTdWJzY3JpcHRpb24sIGV4aGF1c3RNYXAsIGZpcnN0LCBtYXAsIHN3aXRjaE1hcCwgdGFwIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBGaXJlYmFzZVF1ZXJ5SXRlbUFjY3VtdWxhdG9yLCBGaXJlc3RvcmVDb2xsZWN0aW9uTGlrZSwgRmlyZXN0b3JlRG9jdW1lbnQsIEZpcmVzdG9yZUl0ZW1QYWdlSXRlcmF0aW9uSW5zdGFuY2UsIEZpcmVzdG9yZVF1ZXJ5Q29uc3RyYWludCwgSXRlcmF0aW9uUXVlcnlEb2NDaGFuZ2VXYXRjaGVyLCBEb2N1bWVudERhdGFXaXRoSWQgfSBmcm9tICdAZGVyZWVrYi9maXJlYmFzZSc7XG5pbXBvcnQgeyBPYnNlcnZhYmxlT3JWYWx1ZSwgY2xlYW51cERlc3Ryb3lhYmxlLCBQYWdlTGlzdExvYWRpbmdTdGF0ZSwgZmlsdGVyTWF5YmUgfSBmcm9tICdAZGVyZWVrYi9yeGpzJztcbmltcG9ydCB7IEFycmF5T3JWYWx1ZSwgTWF5YmUgfSBmcm9tICdAZGVyZWVrYi91dGlsJztcbmltcG9ydCB7IExvY2tTZXRDb21wb25lbnRTdG9yZSB9IGZyb20gJ0BkZXJlZWtiL2RieC1jb3JlJztcbmltcG9ydCB7IERieEZpcmViYXNlQ29sbGVjdGlvbkxvYWRlckluc3RhbmNlLCBkYnhGaXJlYmFzZUNvbGxlY3Rpb25Mb2FkZXJJbnN0YW5jZSwgRGJ4RmlyZWJhc2VDb2xsZWN0aW9uTG9hZGVySW5zdGFuY2VEYXRhIH0gZnJvbSAnLi4vbG9hZGVyL2NvbGxlY3Rpb24ubG9hZGVyLmluc3RhbmNlJztcbmltcG9ydCB7IERieEZpcmViYXNlQ29sbGVjdGlvbkxvYWRlckFjY2Vzc29yIH0gZnJvbSAnLi4vbG9hZGVyL2NvbGxlY3Rpb24ubG9hZGVyJztcblxuZXhwb3J0IGludGVyZmFjZSBEYnhGaXJlYmFzZUNvbGxlY3Rpb25TdG9yZTxULCBEIGV4dGVuZHMgRmlyZXN0b3JlRG9jdW1lbnQ8VD4gPSBGaXJlc3RvcmVEb2N1bWVudDxUPj4gZXh0ZW5kcyBEYnhGaXJlYmFzZUNvbGxlY3Rpb25Mb2FkZXJBY2Nlc3NvcjxUPiwgRGJ4RmlyZWJhc2VDb2xsZWN0aW9uTG9hZGVySW5zdGFuY2VEYXRhPFQsIEQ+IHtcbiAgcmVhZG9ubHkgZmlyZXN0b3JlQ29sbGVjdGlvbiQ6IE9ic2VydmFibGU8TWF5YmU8RmlyZXN0b3JlQ29sbGVjdGlvbkxpa2U8VCwgRD4+PjtcbiAgcmVhZG9ubHkgbG9hZGVyJDogT2JzZXJ2YWJsZTxEYnhGaXJlYmFzZUNvbGxlY3Rpb25Mb2FkZXJJbnN0YW5jZTxULCBEPj47XG5cbiAgcmVhZG9ubHkgZmlyZXN0b3JlSXRlcmF0aW9uJDogT2JzZXJ2YWJsZTxGaXJlc3RvcmVJdGVtUGFnZUl0ZXJhdGlvbkluc3RhbmNlPFQ+PjtcbiAgcmVhZG9ubHkgcXVlcnlDaGFuZ2VXYXRjaGVyJDogT2JzZXJ2YWJsZTxJdGVyYXRpb25RdWVyeURvY0NoYW5nZVdhdGNoZXI8VD4+O1xuICByZWFkb25seSBhY2N1bXVsYXRvciQ6IE9ic2VydmFibGU8RmlyZWJhc2VRdWVyeUl0ZW1BY2N1bXVsYXRvcjxUPj47XG4gIHJlYWRvbmx5IHBhZ2VMb2FkaW5nU3RhdGUkOiBPYnNlcnZhYmxlPFBhZ2VMaXN0TG9hZGluZ1N0YXRlPERvY3VtZW50RGF0YVdpdGhJZDxUPj4+O1xuXG4gIHNldE1heFBhZ2VzKG9ic2VydmFibGVPclZhbHVlOiBPYnNlcnZhYmxlT3JWYWx1ZTxNYXliZTxudW1iZXI+Pik6IFN1YnNjcmlwdGlvbjtcbiAgc2V0SXRlbXNQZXJQYWdlKG9ic2VydmFibGVPclZhbHVlOiBPYnNlcnZhYmxlT3JWYWx1ZTxNYXliZTxudW1iZXI+Pik6IFN1YnNjcmlwdGlvbjtcbiAgc2V0Q29uc3RyYWludHMob2JzZXJ2YWJsZU9yVmFsdWU6IE9ic2VydmFibGVPclZhbHVlPE1heWJlPEFycmF5T3JWYWx1ZTxGaXJlc3RvcmVRdWVyeUNvbnN0cmFpbnQ+Pj4pOiBTdWJzY3JpcHRpb247XG4gIG5leHQob2JzZXJ2YWJsZU9yVmFsdWU6IE9ic2VydmFibGVPclZhbHVlPHZvaWQ+KTogdm9pZDtcbiAgcmVzdGFydChvYnNlcnZhYmxlT3JWYWx1ZTogT2JzZXJ2YWJsZU9yVmFsdWU8dm9pZD4pOiB2b2lkO1xuXG4gIHJlYWRvbmx5IHNldEZpcmVzdG9yZUNvbGxlY3Rpb246ICgoKSA9PiB2b2lkKSB8ICgob2JzZXJ2YWJsZU9yVmFsdWU6IE9ic2VydmFibGVPclZhbHVlPE1heWJlPEZpcmVzdG9yZUNvbGxlY3Rpb25MaWtlPFQsIEQ+Pj4pID0+IFN1YnNjcmlwdGlvbik7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgRGJ4RmlyZWJhc2VDb2xsZWN0aW9uU3RvcmVDb250ZXh0U3RhdGU8VCwgRCBleHRlbmRzIEZpcmVzdG9yZURvY3VtZW50PFQ+ID0gRmlyZXN0b3JlRG9jdW1lbnQ8VD4+IHtcbiAgcmVhZG9ubHkgZmlyZXN0b3JlQ29sbGVjdGlvbj86IE1heWJlPEZpcmVzdG9yZUNvbGxlY3Rpb25MaWtlPFQsIEQ+PjtcbiAgcmVhZG9ubHkgbWF4UGFnZXM/OiBNYXliZTxudW1iZXI+O1xuICByZWFkb25seSBpdGVtc1BlclBhZ2U/OiBNYXliZTxudW1iZXI+O1xuICByZWFkb25seSBjb25zdHJhaW50cz86IE1heWJlPEFycmF5T3JWYWx1ZTxGaXJlc3RvcmVRdWVyeUNvbnN0cmFpbnQ+Pjtcbn1cblxuLyoqXG4gKiBVc2VkIGZvciBzdG9yaW5nIHRoZSBzdGF0ZSBvZiBhIFBlcnNvbiBhbmQgcmVsYXRlZCBlbWFpbCB0aHJlYWRzLlxuICovXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgQWJzdHJhY3REYnhGaXJlYmFzZUNvbGxlY3Rpb25TdG9yZTxULCBEIGV4dGVuZHMgRmlyZXN0b3JlRG9jdW1lbnQ8VD4gPSBGaXJlc3RvcmVEb2N1bWVudDxUPiwgQyBleHRlbmRzIERieEZpcmViYXNlQ29sbGVjdGlvblN0b3JlQ29udGV4dFN0YXRlPFQsIEQ+ID0gRGJ4RmlyZWJhc2VDb2xsZWN0aW9uU3RvcmVDb250ZXh0U3RhdGU8VCwgRD4+IGV4dGVuZHMgTG9ja1NldENvbXBvbmVudFN0b3JlPEM+IGltcGxlbWVudHMgRGJ4RmlyZWJhc2VDb2xsZWN0aW9uU3RvcmU8VCwgRD4ge1xuICAvLyBNQVJLOiBFZmZlY3RzXG4gIHJlYWRvbmx5IHNldE1heFBhZ2VzID0gdGhpcy5lZmZlY3QoKGlucHV0OiBPYnNlcnZhYmxlPE1heWJlPG51bWJlcj4+KSA9PiB7XG4gICAgcmV0dXJuIGlucHV0LnBpcGUoc3dpdGNoTWFwKChtYXhQYWdlcykgPT4gdGhpcy5sb2FkZXIkLnBpcGUodGFwKCh4KSA9PiAoeC5tYXhQYWdlcyA9IG1heFBhZ2VzKSkpKSk7XG4gIH0pO1xuXG4gIHJlYWRvbmx5IHNldEl0ZW1zUGVyUGFnZSA9IHRoaXMuZWZmZWN0KChpbnB1dDogT2JzZXJ2YWJsZTxNYXliZTxudW1iZXI+PikgPT4ge1xuICAgIHJldHVybiBpbnB1dC5waXBlKHN3aXRjaE1hcCgoaXRlbXNQZXJQYWdlKSA9PiB0aGlzLmxvYWRlciQucGlwZSh0YXAoKHgpID0+ICh4Lml0ZW1zUGVyUGFnZSA9IGl0ZW1zUGVyUGFnZSkpKSkpO1xuICB9KTtcblxuICByZWFkb25seSBzZXRDb25zdHJhaW50cyA9IHRoaXMuZWZmZWN0KChpbnB1dDogT2JzZXJ2YWJsZTxNYXliZTxBcnJheU9yVmFsdWU8RmlyZXN0b3JlUXVlcnlDb25zdHJhaW50Pj4+KSA9PiB7XG4gICAgcmV0dXJuIGlucHV0LnBpcGUoc3dpdGNoTWFwKChjb25zdHJhaW50cykgPT4gdGhpcy5sb2FkZXIkLnBpcGUodGFwKCh4KSA9PiB4LnNldENvbnN0cmFpbnRzKGNvbnN0cmFpbnRzKSkpKSk7XG4gIH0pO1xuXG4gIHJlYWRvbmx5IG5leHQgPSB0aGlzLmVmZmVjdCgoaW5wdXQ6IE9ic2VydmFibGU8dm9pZD4pID0+IHtcbiAgICByZXR1cm4gaW5wdXQucGlwZShcbiAgICAgIGV4aGF1c3RNYXAoKCkgPT5cbiAgICAgICAgdGhpcy5sb2FkZXIkLnBpcGUoXG4gICAgICAgICAgZmlyc3QoKSxcbiAgICAgICAgICB0YXAoKHgpID0+IHgubmV4dCgpKVxuICAgICAgICApXG4gICAgICApXG4gICAgKTtcbiAgfSk7XG5cbiAgcmVhZG9ubHkgcmVzdGFydCA9IHRoaXMuZWZmZWN0KChpbnB1dDogT2JzZXJ2YWJsZTx2b2lkPikgPT4ge1xuICAgIHJldHVybiBpbnB1dC5waXBlKFxuICAgICAgZXhoYXVzdE1hcCgoKSA9PlxuICAgICAgICB0aGlzLmxvYWRlciQucGlwZShcbiAgICAgICAgICBmaXJzdCgpLFxuICAgICAgICAgIHRhcCgoeCkgPT4geC5yZXN0YXJ0KCkpXG4gICAgICAgIClcbiAgICAgIClcbiAgICApO1xuICB9KTtcblxuICAvLyBNQVJLOiBBY2Nlc3NvcnNcbiAgcmVhZG9ubHkgY3VycmVudEZpcmVzdG9yZUNvbGxlY3Rpb24kOiBPYnNlcnZhYmxlPE1heWJlPEZpcmVzdG9yZUNvbGxlY3Rpb25MaWtlPFQsIEQ+Pj4gPSB0aGlzLnN0YXRlJC5waXBlKFxuICAgIG1hcCgoeCkgPT4geC5maXJlc3RvcmVDb2xsZWN0aW9uKSxcbiAgICBkaXN0aW5jdFVudGlsQ2hhbmdlZCgpLFxuICAgIHNoYXJlUmVwbGF5KDEpXG4gICk7XG5cbiAgcmVhZG9ubHkgZmlyZXN0b3JlQ29sbGVjdGlvbiQ6IE9ic2VydmFibGU8RmlyZXN0b3JlQ29sbGVjdGlvbkxpa2U8VCwgRD4+ID0gdGhpcy5jdXJyZW50RmlyZXN0b3JlQ29sbGVjdGlvbiQucGlwZShmaWx0ZXJNYXliZSgpKTtcblxuICByZWFkb25seSBsb2FkZXIkOiBPYnNlcnZhYmxlPERieEZpcmViYXNlQ29sbGVjdGlvbkxvYWRlckluc3RhbmNlPFQsIEQ+PiA9IHRoaXMuY3VycmVudEZpcmVzdG9yZUNvbGxlY3Rpb24kLnBpcGUoXG4gICAgc3dpdGNoTWFwKChjb2xsZWN0aW9uKSA9PlxuICAgICAgdGhpcy5zdGF0ZSQucGlwZShcbiAgICAgICAgZmlyc3QoKSxcbiAgICAgICAgbWFwKCh4KSA9PlxuICAgICAgICAgIGRieEZpcmViYXNlQ29sbGVjdGlvbkxvYWRlckluc3RhbmNlKHtcbiAgICAgICAgICAgIGNvbGxlY3Rpb24sXG4gICAgICAgICAgICBtYXhQYWdlczogeC5tYXhQYWdlcyxcbiAgICAgICAgICAgIGl0ZW1zUGVyUGFnZTogeC5pdGVtc1BlclBhZ2UsXG4gICAgICAgICAgICBjb25zdHJhaW50czogeC5jb25zdHJhaW50c1xuICAgICAgICAgIH0pXG4gICAgICAgIClcbiAgICAgIClcbiAgICApLFxuICAgIGNsZWFudXBEZXN0cm95YWJsZSgpLFxuICAgIGRpc3RpbmN0VW50aWxDaGFuZ2VkKCksXG4gICAgc2hhcmVSZXBsYXkoMSlcbiAgKTtcblxuICByZWFkb25seSBjb25zdHJhaW50cyQ6IE9ic2VydmFibGU8TWF5YmU8QXJyYXlPclZhbHVlPEZpcmVzdG9yZVF1ZXJ5Q29uc3RyYWludD4+PiA9IHRoaXMubG9hZGVyJC5waXBlKHN3aXRjaE1hcCgoeCkgPT4geC5jb25zdHJhaW50cyQpKTtcbiAgcmVhZG9ubHkgZmlyZXN0b3JlSXRlcmF0aW9uJDogT2JzZXJ2YWJsZTxGaXJlc3RvcmVJdGVtUGFnZUl0ZXJhdGlvbkluc3RhbmNlPFQ+PiA9IHRoaXMubG9hZGVyJC5waXBlKHN3aXRjaE1hcCgoeCkgPT4geC5maXJlc3RvcmVJdGVyYXRpb24kKSk7XG4gIHJlYWRvbmx5IHF1ZXJ5Q2hhbmdlV2F0Y2hlciQ6IE9ic2VydmFibGU8SXRlcmF0aW9uUXVlcnlEb2NDaGFuZ2VXYXRjaGVyPFQ+PiA9IHRoaXMubG9hZGVyJC5waXBlKHN3aXRjaE1hcCgoeCkgPT4geC5xdWVyeUNoYW5nZVdhdGNoZXIkKSk7XG4gIHJlYWRvbmx5IGFjY3VtdWxhdG9yJDogT2JzZXJ2YWJsZTxGaXJlYmFzZVF1ZXJ5SXRlbUFjY3VtdWxhdG9yPFQ+PiA9IHRoaXMubG9hZGVyJC5waXBlKHN3aXRjaE1hcCgoeCkgPT4geC5hY2N1bXVsYXRvciQpKTtcbiAgcmVhZG9ubHkgcGFnZUxvYWRpbmdTdGF0ZSQ6IE9ic2VydmFibGU8UGFnZUxpc3RMb2FkaW5nU3RhdGU8RG9jdW1lbnREYXRhV2l0aElkPFQ+Pj4gPSB0aGlzLmxvYWRlciQucGlwZShzd2l0Y2hNYXAoKHgpID0+IHgucGFnZUxvYWRpbmdTdGF0ZSQpKTtcblxuICByZWFkb25seSBzZXRGaXJlc3RvcmVDb2xsZWN0aW9uID0gdGhpcy51cGRhdGVyKChzdGF0ZSwgZmlyZXN0b3JlQ29sbGVjdGlvbjogRmlyZXN0b3JlQ29sbGVjdGlvbkxpa2U8VCwgRD4gfCBudWxsIHwgdW5kZWZpbmVkKSA9PiAoeyAuLi5zdGF0ZSwgZmlyZXN0b3JlQ29sbGVjdGlvbiB9KSk7XG59XG4iXX0=
55
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RvcmUuY29sbGVjdGlvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2RieC1maXJlYmFzZS9zcmMvbGliL21vZGVsL3N0b3JlL3N0b3JlLmNvbGxlY3Rpb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzQyxPQUFPLEVBQWMsV0FBVyxFQUFFLG9CQUFvQixFQUFnQixVQUFVLEVBQUUsS0FBSyxFQUFFLEdBQUcsRUFBRSxTQUFTLEVBQUUsR0FBRyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBRTNILE9BQU8sRUFBcUIsa0JBQWtCLEVBQXdCLFdBQVcsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUV6RyxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUMxRCxPQUFPLEVBQXVDLG1DQUFtQyxFQUEyQyxNQUFNLHNDQUFzQyxDQUFDOztBQWlDeks7O0dBRUc7QUFFSCxNQUFNLE9BQU8sa0NBQW9NLFNBQVEscUJBQXdCO0lBRGpQOztRQUVFLGdCQUFnQjtRQUNQLGdCQUFXLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLEtBQWdDLEVBQUUsRUFBRTtZQUN0RSxPQUFPLEtBQUssQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsUUFBUSxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsR0FBRyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ3JHLENBQUMsQ0FBQyxDQUFDO1FBRU0sb0JBQWUsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsS0FBZ0MsRUFBRSxFQUFFO1lBQzFFLE9BQU8sS0FBSyxDQUFDLElBQUksQ0FBQyxTQUFTLENB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RUFBRSxtQkFBbUIsRUFBRSxDQUFDLENBQUMsQ0FBQztLQUN2Szs7K0hBNUVZLGtDQUFrQzttSUFBbEMsa0NBQWtDOzJGQUFsQyxrQ0FBa0M7a0JBRDlDLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBPYnNlcnZhYmxlLCBzaGFyZVJlcGxheSwgZGlzdGluY3RVbnRpbENoYW5nZWQsIFN1YnNjcmlwdGlvbiwgZXhoYXVzdE1hcCwgZmlyc3QsIG1hcCwgc3dpdGNoTWFwLCB0YXAgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IEZpcmViYXNlUXVlcnlJdGVtQWNjdW11bGF0b3IsIEZpcmVzdG9yZUNvbGxlY3Rpb25MaWtlLCBGaXJlc3RvcmVEb2N1bWVudCwgRmlyZXN0b3JlSXRlbVBhZ2VJdGVyYXRpb25JbnN0YW5jZSwgRmlyZXN0b3JlUXVlcnlDb25zdHJhaW50LCBJdGVyYXRpb25RdWVyeURvY0NoYW5nZVdhdGNoZXIsIERvY3VtZW50RGF0YVdpdGhJZEFuZEtleSwgRG9jdW1lbnRSZWZlcmVuY2UgfSBmcm9tICdAZGVyZWVrYi9maXJlYmFzZSc7XG5pbXBvcnQgeyBPYnNlcnZhYmxlT3JWYWx1ZSwgY2xlYW51cERlc3Ryb3lhYmxlLCBQYWdlTGlzdExvYWRpbmdTdGF0ZSwgZmlsdGVyTWF5YmUgfSBmcm9tICdAZGVyZWVrYi9yeGpzJztcbmltcG9ydCB7IEFycmF5T3JWYWx1ZSwgTWF5YmUgfSBmcm9tICdAZGVyZWVrYi91dGlsJztcbmltcG9ydCB7IExvY2tTZXRDb21wb25lbnRTdG9yZSB9IGZyb20gJ0BkZXJlZWtiL2RieC1jb3JlJztcbmltcG9ydCB7IERieEZpcmViYXNlQ29sbGVjdGlvbkxvYWRlckluc3RhbmNlLCBkYnhGaXJlYmFzZUNvbGxlY3Rpb25Mb2FkZXJJbnN0YW5jZSwgRGJ4RmlyZWJhc2VDb2xsZWN0aW9uTG9hZGVySW5zdGFuY2VEYXRhIH0gZnJvbSAnLi4vbG9hZGVyL2NvbGxlY3Rpb24ubG9hZGVyLmluc3RhbmNlJztcbmltcG9ydCB7IERieEZpcmViYXNlQ29sbGVjdGlvbkxvYWRlckFjY2Vzc29yIH0gZnJvbSAnLi4vbG9hZGVyL2NvbGxlY3Rpb24ubG9hZGVyJztcblxuZXhwb3J0IGludGVyZmFjZSBEYnhGaXJlYmFzZUNvbGxlY3Rpb25TdG9yZTxULCBEIGV4dGVuZHMgRmlyZXN0b3JlRG9jdW1lbnQ8VD4gPSBGaXJlc3RvcmVEb2N1bWVudDxUPj4gZXh0ZW5kcyBEYnhGaXJlYmFzZUNvbGxlY3Rpb25Mb2FkZXJBY2Nlc3NvcjxUPiwgRGJ4RmlyZWJhc2VDb2xsZWN0aW9uTG9hZGVySW5zdGFuY2VEYXRhPFQsIEQ+IHtcbiAgcmVhZG9ubHkgZmlyZXN0b3JlQ29sbGVjdGlvbiQ6IE9ic2VydmFibGU8TWF5YmU8RmlyZXN0b3JlQ29sbGVjdGlvbkxpa2U8VCwgRD4+PjtcbiAgcmVhZG9ubHkgbG9hZGVyJDogT2JzZXJ2YWJsZTxEYnhGaXJlYmFzZUNvbGxlY3Rpb25Mb2FkZXJJbnN0YW5jZTxULCBEPj47XG5cbiAgcmVhZG9ubHkgZmlyZXN0b3JlSXRlcmF0aW9uJDogT2JzZXJ2YWJsZTxGaXJlc3RvcmVJdGVtUGFnZUl0ZXJhdGlvbkluc3RhbmNlPFQ+PjtcbiAgcmVhZG9ubHkgcXVlcnlDaGFuZ2VXYXRjaGVyJDogT2JzZXJ2YWJsZTxJdGVyYXRpb25RdWVyeURvY0NoYW5nZVdhdGNoZXI8VD4+O1xuICByZWFkb25seSBhY2N1bXVsYXRvciQ6IE9ic2VydmFibGU8RmlyZWJhc2VRdWVyeUl0ZW1BY2N1bXVsYXRvcjxUPj47XG4gIHJlYWRvbmx5IHBhZ2VMb2FkaW5nU3RhdGUkOiBPYnNlcnZhYmxlPFBhZ2VMaXN0TG9hZGluZ1N0YXRlPERvY3VtZW50RGF0YVdpdGhJZEFuZEtleTxUPj4+O1xuXG4gIHJlYWRvbmx5IGhhc0RvY3VtZW50cyQ6IE9ic2VydmFibGU8Ym9vbGVhbj47XG4gIHJlYWRvbmx5IGFsbERvY3VtZW50UmVmcyQ6IE9ic2VydmFibGU8RG9jdW1lbnRSZWZlcmVuY2U8VD5bXT47XG4gIHJlYWRvbmx5IGFsbERvY3VtZW50cyQ6IE9ic2VydmFibGU8RFtdPjtcbiAgcmVhZG9ubHkgYWxsRG9jdW1lbnREYXRhJDogT2JzZXJ2YWJsZTxEb2N1bWVudERhdGFXaXRoSWRBbmRLZXk8VD5bXT47XG5cbiAgc2V0TWF4UGFnZXMob2JzZXJ2YWJsZU9yVmFsdWU6IE9ic2VydmFibGVPclZhbHVlPE1heWJlPG51bWJlcj4+KTogU3Vic2NyaXB0aW9uO1xuICBzZXRJdGVtc1BlclBhZ2Uob2JzZXJ2YWJsZU9yVmFsdWU6IE9ic2VydmFibGVPclZhbHVlPE1heWJlPG51bWJlcj4+KTogU3Vic2NyaXB0aW9uO1xuICBzZXRDb25zdHJhaW50cyhvYnNlcnZhYmxlT3JWYWx1ZTogT2JzZXJ2YWJsZU9yVmFsdWU8TWF5YmU8QXJyYXlPclZhbHVlPEZpcmVzdG9yZVF1ZXJ5Q29uc3RyYWludD4+Pik6IFN1YnNjcmlwdGlvbjtcbiAgbmV4dChvYnNlcnZhYmxlT3JWYWx1ZTogT2JzZXJ2YWJsZU9yVmFsdWU8dm9pZD4pOiB2b2lkO1xuICByZXN0YXJ0KG9ic2VydmFibGVPclZhbHVlOiBPYnNlcnZhYmxlT3JWYWx1ZTx2b2lkPik6IHZvaWQ7XG5cbiAgcmVhZG9ubHkgc2V0RmlyZXN0b3JlQ29sbGVjdGlvbjogKCgpID0+IHZvaWQpIHwgKChvYnNlcnZhYmxlT3JWYWx1ZTogT2JzZXJ2YWJsZU9yVmFsdWU8TWF5YmU8RmlyZXN0b3JlQ29sbGVjdGlvbkxpa2U8VCwgRD4+PikgPT4gU3Vic2NyaXB0aW9uKTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBEYnhGaXJlYmFzZUNvbGxlY3Rpb25TdG9yZUNvbnRleHRTdGF0ZTxULCBEIGV4dGVuZHMgRmlyZXN0b3JlRG9jdW1lbnQ8VD4gPSBGaXJlc3RvcmVEb2N1bWVudDxUPj4ge1xuICByZWFkb25seSBmaXJlc3RvcmVDb2xsZWN0aW9uPzogTWF5YmU8RmlyZXN0b3JlQ29sbGVjdGlvbkxpa2U8VCwgRD4+O1xuICByZWFkb25seSBtYXhQYWdlcz86IE1heWJlPG51bWJlcj47XG4gIHJlYWRvbmx5IGl0ZW1zUGVyUGFnZT86IE1heWJlPG51bWJlcj47XG4gIHJlYWRvbmx5IGNvbnN0cmFpbnRzPzogTWF5YmU8QXJyYXlPclZhbHVlPEZpcmVzdG9yZVF1ZXJ5Q29uc3RyYWludD4+O1xufVxuXG4vKipcbiAqIFVzZWQgZm9yIHN0b3JpbmcgdGhlIHN0YXRlIG9mIGEgUGVyc29uIGFuZCByZWxhdGVkIGVtYWlsIHRocmVhZHMuXG4gKi9cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBBYnN0cmFjdERieEZpcmViYXNlQ29sbGVjdGlvblN0b3JlPFQsIEQgZXh0ZW5kcyBGaXJlc3RvcmVEb2N1bWVudDxUPiA9IEZpcmVzdG9yZURvY3VtZW50PFQ+LCBDIGV4dGVuZHMgRGJ4RmlyZWJhc2VDb2xsZWN0aW9uU3RvcmVDb250ZXh0U3RhdGU8VCwgRD4gPSBEYnhGaXJlYmFzZUNvbGxlY3Rpb25TdG9yZUNvbnRleHRTdGF0ZTxULCBEPj4gZXh0ZW5kcyBMb2NrU2V0Q29tcG9uZW50U3RvcmU8Qz4gaW1wbGVtZW50cyBEYnhGaXJlYmFzZUNvbGxlY3Rpb25TdG9yZTxULCBEPiB7XG4gIC8vIE1BUks6IEVmZmVjdHNcbiAgcmVhZG9ubHkgc2V0TWF4UGFnZXMgPSB0aGlzLmVmZmVjdCgoaW5wdXQ6IE9ic2VydmFibGU8TWF5YmU8bnVtYmVyPj4pID0+IHtcbiAgICByZXR1cm4gaW5wdXQucGlwZShzd2l0Y2hNYXAoKG1heFBhZ2VzKSA9PiB0aGlzLmxvYWRlciQucGlwZSh0YXAoKHgpID0+ICh4Lm1heFBhZ2VzID0gbWF4UGFnZXMpKSkpKTtcbiAgfSk7XG5cbiAgcmVhZG9ubHkgc2V0SXRlbXNQZXJQYWdlID0gdGhpcy5lZmZlY3QoKGlucHV0OiBPYnNlcnZhYmxlPE1heWJlPG51bWJlcj4+KSA9PiB7XG4gICAgcmV0dXJuIGlucHV0LnBpcGUoc3dpdGNoTWFwKChpdGVtc1BlclBhZ2UpID0+IHRoaXMubG9hZGVyJC5waXBlKHRhcCgoeCkgPT4gKHguaXRlbXNQZXJQYWdlID0gaXRlbXNQZXJQYWdlKSkpKSk7XG4gIH0pO1xuXG4gIHJlYWRvbmx5IHNldENvbnN0cmFpbnRzID0gdGhpcy5lZmZlY3QoKGlucHV0OiBPYnNlcnZhYmxlPE1heWJlPEFycmF5T3JWYWx1ZTxGaXJlc3RvcmVRdWVyeUNvbnN0cmFpbnQ+Pj4pID0+IHtcbiAgICByZXR1cm4gaW5wdXQucGlwZShzd2l0Y2hNYXAoKGNvbnN0cmFpbnRzKSA9PiB0aGlzLmxvYWRlciQucGlwZSh0YXAoKHgpID0+IHguc2V0Q29uc3RyYWludHMoY29uc3RyYWludHMpKSkpKTtcbiAgfSk7XG5cbiAgcmVhZG9ubHkgbmV4dCA9IHRoaXMuZWZmZWN0KChpbnB1dDogT2JzZXJ2YWJsZTx2b2lkPikgPT4ge1xuICAgIHJldHVybiBpbnB1dC5waXBlKFxuICAgICAgZXhoYXVzdE1hcCgoKSA9PlxuICAgICAgICB0aGlzLmxvYWRlciQucGlwZShcbiAgICAgICAgICBmaXJzdCgpLFxuICAgICAgICAgIHRhcCgoeCkgPT4geC5uZXh0KCkpXG4gICAgICAgIClcbiAgICAgIClcbiAgICApO1xuICB9KTtcblxuICByZWFkb25seSByZXN0YXJ0ID0gdGhpcy5lZmZlY3QoKGlucHV0OiBPYnNlcnZhYmxlPHZvaWQ+KSA9PiB7XG4gICAgcmV0dXJuIGlucHV0LnBpcGUoXG4gICAgICBleGhhdXN0TWFwKCgpID0+XG4gICAgICAgIHRoaXMubG9hZGVyJC5waXBlKFxuICAgICAgICAgIGZpcnN0KCksXG4gICAgICAgICAgdGFwKCh4KSA9PiB4LnJlc3RhcnQoKSlcbiAgICAgICAgKVxuICAgICAgKVxuICAgICk7XG4gIH0pO1xuXG4gIC8vIE1BUks6IEFjY2Vzc29yc1xuICByZWFkb25seSBjdXJyZW50RmlyZXN0b3JlQ29sbGVjdGlvbiQ6IE9ic2VydmFibGU8TWF5YmU8RmlyZXN0b3JlQ29sbGVjdGlvbkxpa2U8VCwgRD4+PiA9IHRoaXMuc3RhdGUkLnBpcGUoXG4gICAgbWFwKCh4KSA9PiB4LmZpcmVzdG9yZUNvbGxlY3Rpb24pLFxuICAgIGRpc3RpbmN0VW50aWxDaGFuZ2VkKCksXG4gICAgc2hhcmVSZXBsYXkoMSlcbiAgKTtcblxuICByZWFkb25seSBmaXJlc3RvcmVDb2xsZWN0aW9uJDogT2JzZXJ2YWJsZTxGaXJlc3RvcmVDb2xsZWN0aW9uTGlrZTxULCBEPj4gPSB0aGlzLmN1cnJlbnRGaXJlc3RvcmVDb2xsZWN0aW9uJC5waXBlKGZpbHRlck1heWJlKCkpO1xuXG4gIHJlYWRvbmx5IGxvYWRlciQ6IE9ic2VydmFibGU8RGJ4RmlyZWJhc2VDb2xsZWN0aW9uTG9hZGVySW5zdGFuY2U8VCwgRD4+ID0gdGhpcy5jdXJyZW50RmlyZXN0b3JlQ29sbGVjdGlvbiQucGlwZShcbiAgICBzd2l0Y2hNYXAoKGNvbGxlY3Rpb24pID0+XG4gICAgICB0aGlzLnN0YXRlJC5waXBlKFxuICAgICAgICBmaXJzdCgpLFxuICAgICAgICBtYXAoKHgpID0+XG4gICAgICAgICAgZGJ4RmlyZWJhc2VDb2xsZWN0aW9uTG9hZGVySW5zdGFuY2Uoe1xuICAgICAgICAgICAgY29sbGVjdGlvbixcbiAgICAgICAgICAgIG1heFBhZ2VzOiB4Lm1heFBhZ2VzLFxuICAgICAgICAgICAgaXRlbXNQZXJQYWdlOiB4Lml0ZW1zUGVyUGFnZSxcbiAgICAgICAgICAgIGNvbnN0cmFpbnRzOiB4LmNvbnN0cmFpbnRzXG4gICAgICAgICAgfSlcbiAgICAgICAgKVxuICAgICAgKVxuICAgICksXG4gICAgY2xlYW51cERlc3Ryb3lhYmxlKCksXG4gICAgZGlzdGluY3RVbnRpbENoYW5nZWQoKSxcbiAgICBzaGFyZVJlcGxheSgxKVxuICApO1xuXG4gIHJlYWRvbmx5IGNvbnN0cmFpbnRzJDogT2JzZXJ2YWJsZTxNYXliZTxBcnJheU9yVmFsdWU8RmlyZXN0b3JlUXVlcnlDb25zdHJhaW50Pj4+ID0gdGhpcy5sb2FkZXIkLnBpcGUoc3dpdGNoTWFwKCh4KSA9PiB4LmNvbnN0cmFpbnRzJCkpO1xuICByZWFkb25seSBmaXJlc3RvcmVJdGVyYXRpb24kOiBPYnNlcnZhYmxlPEZpcmVzdG9yZUl0ZW1QYWdlSXRlcmF0aW9uSW5zdGFuY2U8VD4+ID0gdGhpcy5sb2FkZXIkLnBpcGUoc3dpdGNoTWFwKCh4KSA9PiB4LmZpcmVzdG9yZUl0ZXJhdGlvbiQpKTtcbiAgcmVhZG9ubHkgcXVlcnlDaGFuZ2VXYXRjaGVyJDogT2JzZXJ2YWJsZTxJdGVyYXRpb25RdWVyeURvY0NoYW5nZVdhdGNoZXI8VD4+ID0gdGhpcy5sb2FkZXIkLnBpcGUoc3dpdGNoTWFwKCh4KSA9PiB4LnF1ZXJ5Q2hhbmdlV2F0Y2hlciQpKTtcbiAgcmVhZG9ubHkgYWNjdW11bGF0b3IkOiBPYnNlcnZhYmxlPEZpcmViYXNlUXVlcnlJdGVtQWNjdW11bGF0b3I8VD4+ID0gdGhpcy5sb2FkZXIkLnBpcGUoc3dpdGNoTWFwKCh4KSA9PiB4LmFjY3VtdWxhdG9yJCkpO1xuICByZWFkb25seSBwYWdlTG9hZGluZ1N0YXRlJDogT2JzZXJ2YWJsZTxQYWdlTGlzdExvYWRpbmdTdGF0ZTxEb2N1bWVudERhdGFXaXRoSWRBbmRLZXk8VD4+PiA9IHRoaXMubG9hZGVyJC5waXBlKHN3aXRjaE1hcCgoeCkgPT4geC5wYWdlTG9hZGluZ1N0YXRlJCkpO1xuXG4gIHJlYWRvbmx5IGhhc0RvY3VtZW50cyQ6IE9ic2VydmFibGU8Ym9vbGVhbj4gPSB0aGlzLmxvYWRlciQucGlwZShzd2l0Y2hNYXAoKHgpID0+IHguaGFzRG9jdW1lbnRzJCkpO1xuICByZWFkb25seSBhbGxEb2N1bWVudFJlZnMkOiBPYnNlcnZhYmxlPERvY3VtZW50UmVmZXJlbmNlPFQ+W10+ID0gdGhpcy5sb2FkZXIkLnBpcGUoc3dpdGNoTWFwKCh4KSA9PiB4LmFsbERvY3VtZW50UmVmcyQpKTtcbiAgcmVhZG9ubHkgYWxsRG9jdW1lbnRzJDogT2JzZXJ2YWJsZTxEW10+ID0gdGhpcy5sb2FkZXIkLnBpcGUoc3dpdGNoTWFwKCh4KSA9PiB4LmFsbERvY3VtZW50cyQpKTtcbiAgcmVhZG9ubHkgYWxsRG9jdW1lbnREYXRhJDogT2JzZXJ2YWJsZTxEb2N1bWVudERhdGFXaXRoSWRBbmRLZXk8VD5bXT4gPSB0aGlzLmxvYWRlciQucGlwZShzd2l0Y2hNYXAoKHgpID0+IHguYWxsRG9jdW1lbnREYXRhJCkpO1xuXG4gIHJlYWRvbmx5IHNldEZpcmVzdG9yZUNvbGxlY3Rpb24gPSB0aGlzLnVwZGF0ZXIoKHN0YXRlLCBmaXJlc3RvcmVDb2xsZWN0aW9uOiBGaXJlc3RvcmVDb2xsZWN0aW9uTGlrZTxULCBEPiB8IG51bGwgfCB1bmRlZmluZWQpID0+ICh7IC4uLnN0YXRlLCBmaXJlc3RvcmVDb2xsZWN0aW9uIH0pKTtcbn1cbiJdfQ==
@@ -1,6 +1,6 @@
1
1
  import { Injectable } from '@angular/core';
2
2
  import { shareReplay, distinctUntilChanged, map, switchMap, combineLatest, of } from 'rxjs';
3
- import { documentDataWithId, firestoreModelIdsFromKey, firestoreModelKeyPartPairs, firestoreModelKeyPairObject } from '@dereekb/firebase';
3
+ import { firestoreModelIdsFromKey, firestoreModelKeyPartPairs, firestoreModelKeyPairObject, documentDataWithIdAndKey } from '@dereekb/firebase';
4
4
  import { filterMaybe, beginLoading, successResult, loadingStateFromObs, errorResult } from '@dereekb/rxjs';
5
5
  import { isMaybeSo } from '@dereekb/util';
6
6
  import { LockSetComponentStore } from '@dereekb/dbx-core';
@@ -40,6 +40,10 @@ export class AbstractDbxFirebaseDocumentStore extends LockSetComponentStore {
40
40
  }
41
41
  return document;
42
42
  }), distinctUntilChanged(), shareReplay(1));
43
+ /**
44
+ * Whether or not an id/ref/key has been input and currentDocument is not null.
45
+ */
46
+ this.hasRef$ = this.currentDocument$.pipe(map((x) => x?.documentRef != null), distinctUntilChanged(), shareReplay(1));
43
47
  this.document$ = this.currentDocument$.pipe(filterMaybe(), distinctUntilChanged(), shareReplay(1));
44
48
  this.documentLoadingState$ = this.currentDocument$.pipe(map((x) => (x ? successResult(x) : beginLoading())), shareReplay(1));
45
49
  this.id$ = this.document$.pipe(map((x) => x.id), shareReplay(1));
@@ -50,12 +54,12 @@ export class AbstractDbxFirebaseDocumentStore extends LockSetComponentStore {
50
54
  this.ref$ = this.document$.pipe(map((x) => x.documentRef), shareReplay(1));
51
55
  this.snapshot$ = this.document$.pipe(switchMap((x) => x.accessor.stream()), shareReplay(1));
52
56
  this.snapshotLoadingState$ = this.currentDocument$.pipe(switchMap(() => loadingStateFromObs(this.snapshot$)), shareReplay(1));
53
- this.currentData$ = this.document$.pipe(switchMap((x) => x.accessor.stream().pipe(map((y) => documentDataWithId(y)))), shareReplay(1));
57
+ this.currentData$ = this.document$.pipe(switchMap((x) => x.accessor.stream().pipe(map((y) => documentDataWithIdAndKey(y)))), shareReplay(1));
54
58
  this.data$ = this.currentDocument$.pipe(switchMap(() => this.currentData$.pipe(filterMaybe())), shareReplay(1));
55
59
  this.dataLoadingState$ = this.snapshotLoadingState$.pipe(map((x) => {
56
60
  let result;
57
61
  if (x.value) {
58
- const data = documentDataWithId(x.value);
62
+ const data = documentDataWithIdAndKey(x.value);
59
63
  if (data) {
60
64
  result = successResult(data);
61
65
  }
@@ -71,6 +75,17 @@ export class AbstractDbxFirebaseDocumentStore extends LockSetComponentStore {
71
75
  }
72
76
  return result;
73
77
  }), shareReplay(1));
78
+ /**
79
+ * Returns false while hasRef$ is false, and then returns exists$.
80
+ */
81
+ this.currentExists$ = this.hasRef$.pipe(switchMap((hasRef) => {
82
+ if (hasRef) {
83
+ return this.exists$;
84
+ }
85
+ else {
86
+ return of(false);
87
+ }
88
+ }), shareReplay(1));
74
89
  this.exists$ = this.currentData$.pipe(map((x) => isMaybeSo(x)), shareReplay(1));
75
90
  this.doesNotExist$ = this.exists$.pipe(map((x) => !x), shareReplay(1));
76
91
  this.modelIdentity$ = this.document$.pipe(map((x) => x.modelIdentity), shareReplay(1));
@@ -97,4 +112,4 @@ AbstractDbxFirebaseDocumentStore.ɵprov = i0.ɵɵngDeclareInjectable({ minVersio
97
112
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.1.2", ngImport: i0, type: AbstractDbxFirebaseDocumentStore, decorators: [{
98
113
  type: Injectable
99
114
  }] });
100
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RvcmUuZG9jdW1lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9kYngtZmlyZWJhc2Uvc3JjL2xpYi9tb2RlbC9zdG9yZS9zdG9yZS5kb2N1bWVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNDLE9BQU8sRUFBYyxXQUFXLEVBQUUsb0JBQW9CLEVBQUUsR0FBRyxFQUFFLFNBQVMsRUFBRSxhQUFhLEVBQWdCLEVBQUUsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUN0SCxPQUFPLEVBQStFLGtCQUFrQixFQUE0Ryx3QkFBd0IsRUFBRSwwQkFBMEIsRUFBcUMsMkJBQTJCLEVBQTJDLE1BQU0sbUJBQW1CLENBQUM7QUFDN1ksT0FBTyxFQUFFLFdBQVcsRUFBZ0IsWUFBWSxFQUFFLGFBQWEsRUFBRSxtQkFBbUIsRUFBRSxXQUFXLEVBQXFCLE1BQU0sZUFBZSxDQUFDO0FBQzVJLE9BQU8sRUFBUyxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDakQsT0FBTyxFQUFvQixxQkFBcUIsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQzVFLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLFVBQVUsQ0FBQzs7QUE0RGxEOztHQUVHO0FBRUgsTUFBTSxPQUFPLGdDQUE4TCxTQUFRLHFCQUF3QjtJQUQzTzs7UUFFRSxnQkFBZ0I7UUFFaEIsa0JBQWtCO1FBQ1Qsb0NBQStCLEdBQXFELElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUMzRyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxtQkFBbUIsSUFBSSxDQUFDLENBQUMsdUJBQXVCLENBQUMsRUFDOUQsb0JBQW9CLEVBQUUsRUFDdEIsV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUNmLENBQUM7UUFFTyxnQ0FBMkIsR0FBaUQsSUFBSSxDQUFDLE1B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LEtBQUssRUFBRSxFQUFFLEVBQUUsU0FBUyxFQUFFLEdBQUcsRUFBRSxTQUFTLEVBQUUsR0FBRyxFQUFFLFNBQVMsRUFBRSxDQUFDLENBQUMsQ0FBQztRQUVuRywyQkFBc0IsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUMsS0FBSyxFQUFFLG1CQUFxRCxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsR0FBRyxLQUFLLEVBQUUsbUJBQW1CLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFDN0ksK0JBQTBCLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDLEtBQUssRUFBRSx1QkFBNkQsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEdBQUcsS0FBSyxFQUFFLHVCQUF1QixFQUFFLENBQUMsQ0FBQyxDQUFDO0tBQ3ZLOzs2SEF4S1ksZ0NBQWdDO2lJQUFoQyxnQ0FBZ0M7MkZBQWhDLGdDQUFnQztrQkFENUMsVUFBVSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE9ic2VydmFibGUsIHNoYXJlUmVwbGF5LCBkaXN0aW5jdFVudGlsQ2hhbmdlZCwgbWFwLCBzd2l0Y2hNYXAsIGNvbWJpbmVMYXRlc3QsIFN1YnNjcmlwdGlvbiwgb2YgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IERvY3VtZW50U25hcHNob3QsIERvY3VtZW50UmVmZXJlbmNlLCBGaXJlc3RvcmVDb2xsZWN0aW9uLCBGaXJlc3RvcmVEb2N1bWVudCwgZG9jdW1lbnREYXRhV2l0aElkLCBEb2N1bWVudERhdGFXaXRoSWQsIEZpcmVzdG9yZU1vZGVsSWQsIEZpcmVzdG9yZU1vZGVsS2V5LCBGaXJlc3RvcmVDb2xsZWN0aW9uTGlrZSwgRmlyZXN0b3JlTW9kZWxJZGVudGl0eSwgZmlyZXN0b3JlTW9kZWxJZHNGcm9tS2V5LCBmaXJlc3RvcmVNb2RlbEtleVBhcnRQYWlycywgRmlyZXN0b3JlTW9kZWxDb2xsZWN0aW9uQW5kSWRQYWlyLCBmaXJlc3RvcmVNb2RlbEtleVBhaXJPYmplY3QsIEZpcmVzdG9yZU1vZGVsQ29sbGVjdGlvbkFuZElkUGFpck9iamVjdCB9IGZyb20gJ0BkZXJlZWtiL2ZpcmViYXNlJztcbmltcG9ydCB7IGZpbHRlck1heWJlLCBMb2FkaW5nU3RhdGUsIGJlZ2luTG9hZGluZywgc3VjY2Vzc1Jlc3VsdCwgbG9hZGluZ1N0YXRlRnJvbU9icywgZXJyb3JSZXN1bHQsIE9ic2VydmFibGVPclZhbHVlIH0gZnJvbSAnQGRlcmVla2Ivcnhqcyc7XG5pbXBvcnQgeyBNYXliZSwgaXNNYXliZVNvIH0gZnJvbSAnQGRlcmVla2IvdXRpbCc7XG5pbXBvcnQgeyBMb2NrU2V0Q29tcG9uZW50LCBMb2NrU2V0Q29tcG9uZW50U3RvcmUgfSBmcm9tICdAZGVyZWVrYi9kYngtY29yZSc7XG5pbXBvcnQgeyBtb2RlbERvZXNOb3RFeGlzdEVycm9yIH0gZnJvbSAnLi4vZXJyb3InO1xuXG5leHBvcnQgaW50ZXJmYWNlIERieEZpcmViYXNlRG9jdW1lbnRTdG9yZTxULCBEIGV4dGVuZHMgRmlyZXN0b3JlRG9jdW1lbnQ8VD4gPSBGaXJlc3RvcmVEb2N1bWVudDxUPj4gZXh0ZW5kcyBMb2NrU2V0Q29tcG9uZW50IHtcbiAgcmVhZG9ubHkgZmlyZXN0b3JlQ29sbGVjdGlvbkxpa2UkOiBPYnNlcnZhYmxlPEZpcmVzdG9yZUNvbGxlY3Rpb25MaWtlPFQsIEQ+PjtcbiAgcmVhZG9ubHkgZmlyZXN0b3JlQ29sbGVjdGlvbiQ6IE9ic2VydmFibGU8RmlyZXN0b3JlQ29sbGVjdGlvbjxULCBEPj47XG5cbiAgcmVhZG9ubHkgY3VycmVudElucHV0SWQkOiBPYnNlcnZhYmxlPE1heWJlPEZpcmVzdG9yZU1vZGVsSWQ+PjtcbiAgcmVhZG9ubHkgaW5wdXRJZCQ6IE9ic2VydmFibGU8RmlyZXN0b3JlTW9kZWxJZD47XG4gIHJlYWRvbmx5IGN1cnJlbnRJbnB1dEtleSQ6IE9ic2VydmFibGU8TWF5YmU8RmlyZXN0b3JlTW9kZWxLZXk+PjtcbiAgcmVhZG9ubHkgaW5wdXRLZXkkOiBPYnNlcnZhYmxlPEZpcmVzdG9yZU1vZGVsS2V5PjtcbiAgcmVhZG9ubHkgY3VycmVudElucHV0UmVmJDogT2JzZXJ2YWJsZTxNYXliZTxEb2N1bWVudFJlZmVyZW5jZTxUPj4+O1xuICByZWFkb25seSBpbnB1dFJlZiQ6IE9ic2VydmFibGU8RG9jdW1lbnRSZWZlcmVuY2U8VD4+O1xuXG4gIHJlYWRvbmx5IGN1cnJlbnREb2N1bWVudCQ6IE9ic2VydmFibGU8TWF5YmU8RD4+O1xuICByZWFkb25seSBkb2N1bWVudCQ6IE9ic2VydmFibGU8RD47XG4gIHJlYWRvbmx5IGlkJDogT2JzZXJ2YWJsZTxGaXJlc3RvcmVNb2RlbElkPjtcbiAgcmVhZG9ubHkga2V5JDogT2JzZXJ2YWJsZTxGaXJlc3RvcmVNb2RlbEtleT47XG4gIHJlYWRvbmx5IHJlZiQ6IE9ic2VydmFibGU8RG9jdW1lbnRSZWZlcmVuY2U8VD4+O1xuXG4gIHJlYWRvbmx5IGtleU1vZGVsSWRzJDogT2JzZXJ2YWJsZTxGaXJlc3RvcmVNb2RlbElkW10+O1xuICByZWFkb25seSBrZXlQYWlycyQ6IE9ic2VydmFibGU8RmlyZXN0b3JlTW9kZWxDb2xsZWN0aW9uQW5kSWRQYWlyW10+O1xuICByZWFkb25seSBrZXlQYWlyT2JqZWN0JDogT2JzZXJ2YWJsZTxGaXJlc3RvcmVNb2RlbENvbGxlY3Rpb25BbmRJZFBhaXJPYmplY3Q+O1xuXG4gIHJlYWRvbmx5IGRvY3VtZW50TG9hZGluZ1N0YXRlJDogT2JzZXJ2YWJsZTxMb2FkaW5nU3RhdGU8RD4+O1xuICByZWFkb25seSBzbmFwc2hvdCQ6IE9ic2VydmFibGU8RG9jdW1lbnRTbmFwc2hvdDxUPj47XG4gIHJlYWRvbmx5IHNuYXBzaG90TG9hZGluZ1N0YXRlJDogT2JzZXJ2YWJsZTxMb2FkaW5nU3RhdGU8RG9jdW1lbnRTbmFwc2hvdDxUPj4+O1xuICByZWFkb25seSBjdXJyZW50RGF0YSQ6IE9ic2VydmFibGU8TWF5YmU8RG9jdW1lbnREYXRhV2l0aElkPFQ+Pj47XG4gIHJlYWRvbmx5IGRhdGEkOiBPYnNlcnZhYmxlPERvY3VtZW50RGF0YVdpdGhJZDxUPj47XG4gIHJlYWRvbmx5IGRhdGFMb2FkaW5nU3RhdGUkOiBPYnNlcnZhYmxlPExvYWRpbmdTdGF0ZTxEb2N1bWVudERhdGFXaXRoSWQ8VD4+PjtcbiAgcmVhZG9ubHkgZXhpc3RzJDogT2JzZXJ2YWJsZTxib29sZWFuPjtcbiAgcmVhZG9ubHkgbW9kZWxJZGVudGl0eSQ6IE9ic2VydmFibGU8RmlyZXN0b3JlTW9kZWxJZGVudGl0eT47XG5cbiAgc2V0SWQ6IChvYnNlcnZhYmxlT3JWYWx1ZTogT2JzZXJ2YWJsZU9yVmFsdWU8TWF5YmU8RmlyZXN0b3JlTW9kZWxJZD4+KSA9PiBTdWJzY3JpcHRpb247XG4gIHNldEtleTogKG9ic2VydmFibGVPclZhbHVlOiBPYnNlcnZhYmxlT3JWYWx1ZTxNYXliZTxGaXJlc3RvcmVNb2RlbEtleT4+KSA9PiBTdWJzY3JpcHRpb247XG4gIHNldFJlZjogKG9ic2VydmFibGVPclZhbHVlOiBPYnNlcnZhYmxlT3JWYWx1ZTxNYXliZTxEb2N1bWVudFJlZmVyZW5jZTxUPj4+KSA9PiBTdWJzY3JpcHRpb247XG5cbiAgLyoqXG4gICAqIENsZWFycyB0aGUga2V5L2lkL3JlZiBhbmQgY3VycmVudCBkb2N1bWVudCBmcm9tIHRoZSBzdG9yZS5cbiAgICovXG4gIGNsZWFyUmVmczogKCkgPT4gdm9pZDtcblxuICAvKipcbiAgICogU2V0cyB0aGUgRmlyZXN0b3JlQ29sbGVjdGlvbiB0byByZXRyaWV2ZSBkb2N1bWVudHMgZnJvbS5cbiAgICovXG4gIHJlYWRvbmx5IHNldEZpcmVzdG9yZUNvbGxlY3Rpb246ICgoKSA9PiB2b2lkKSB8ICgob2JzZXJ2YWJsZU9yVmFsdWU6IE9ic2VydmFibGVPclZhbHVlPE1heWJlPEZpcmVzdG9yZUNvbGxlY3Rpb248VCwgRD4+PikgPT4gU3Vic2NyaXB0aW9uKTtcblxuICAvKipcbiAgICogU2V0cyB0aGUgRmlyZXN0b3JlQ29sbGVjdGlvbkxpa2UgdG8gcmV0cmlldmUgZG9jdW1lbnRzIGZyb20uXG4gICAqL1xuICByZWFkb25seSBzZXRGaXJlc3RvcmVDb2xsZWN0aW9uTGlrZTogKCgpID0+IHZvaWQpIHwgKChvYnNlcnZhYmxlT3JWYWx1ZTogT2JzZXJ2YWJsZU9yVmFsdWU8TWF5YmU8RmlyZXN0b3JlQ29sbGVjdGlvbkxpa2U8VCwgRD4+PikgPT4gU3Vic2NyaXB0aW9uKTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBEYnhGaXJlYmFzZURvY3VtZW50U3RvcmVDb250ZXh0U3RhdGU8VCwgRCBleHRlbmRzIEZpcmVzdG9yZURvY3VtZW50PFQ+ID0gRmlyZXN0b3JlRG9jdW1lbnQ8VD4+IHtcbiAgcmVhZG9ubHkgZmlyZXN0b3JlQ29sbGVjdGlvbkxpa2U/OiBNYXliZTxGaXJlc3RvcmVDb2xsZWN0aW9uTGlrZTxULCBEPj47XG4gIHJlYWRvbmx5IGZpcmVzdG9yZUNvbGxlY3Rpb24/OiBNYXliZTxGaXJlc3RvcmVDb2xsZWN0aW9uPFQsIEQ+PjtcbiAgcmVhZG9ubHkgaWQ/OiBNYXliZTxGaXJlc3RvcmVNb2RlbElkPjtcbiAgcmVhZG9ubHkga2V5PzogTWF5YmU8RmlyZXN0b3JlTW9kZWxLZXk+O1xuICByZWFkb25seSByZWY/OiBNYXliZTxEb2N1bWVudFJlZmVyZW5jZTxUPj47XG59XG5cbi8qKlxuICogVXNlZCBmb3Igc3RvcmluZyB0aGUgc3RhdGUgb2YgYSBQZXJzb24gYW5kIHJlbGF0ZWQgZW1haWwgdGhyZWFkcy5cbiAqL1xuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIEFic3RyYWN0RGJ4RmlyZWJhc2VEb2N1bWVudFN0b3JlPFQsIEQgZXh0ZW5kcyBGaXJlc3RvcmVEb2N1bWVudDxUPiA9IEZpcmVzdG9yZURvY3VtZW50PFQ+LCBDIGV4dGVuZHMgRGJ4RmlyZWJhc2VEb2N1bWVudFN0b3JlQ29udGV4dFN0YXRlPFQsIEQ+ID0gRGJ4RmlyZWJhc2VEb2N1bWVudFN0b3JlQ29udGV4dFN0YXRlPFQsIEQ+PiBleHRlbmRzIExvY2tTZXRDb21wb25lbnRTdG9yZTxDPiBpbXBsZW1lbnRzIERieEZpcmViYXNlRG9jdW1lbnRTdG9yZTxULCBEPiB7XG4gIC8vIE1BUks6IEVmZmVjdHNcblxuICAvLyBNQVJLOiBBY2Nlc3NvcnNcbiAgcmVhZG9ubHkgY3VycmVudEZpcmVzdG9yZUNvbGxlY3Rpb25MaWtlJDogT2JzZXJ2YWJsZTxNYXliZTxGaXJlc3RvcmVDb2xsZWN0aW9uTGlrZTxULCBEPj4+ID0gdGhpcy5zdGF0ZSQucGlwZShcbiAgICBtYXAoKHgpID0+IHguZmlyZXN0b3JlQ29sbGVjdGlvbiA/PyB4LmZpcmVzdG9yZUNvbGxlY3Rpb25MaWtlKSxcbiAgICBkaXN0aW5jdFVudGlsQ2hhbmdlZCgpLFxuICAgIHNoYXJlUmVwbGF5KDEpXG4gICk7XG5cbiAgcmVhZG9ubHkgY3VycmVudEZpcmVzdG9yZUNvbGxlY3Rpb24kOiBPYnNlcnZhYmxlPE1heWJlPEZpcmVzdG9yZUNvbGxlY3Rpb248VCwgRD4+PiA9IHRoaXMuc3RhdGUkLnBpcGUoXG4gICAgbWFwKCh4KSA9PiB4LmZpcmVzdG9yZUNvbGxlY3Rpb24pLFxuICAgIGRpc3RpbmN0VW50aWxDaGFuZ2VkKCksXG4gICAgc2hhcmVSZXBsYXkoMSlcbiAgKTtcblxuICByZWFkb25seSBmaXJlc3RvcmVDb2xsZWN0aW9uTGlrZSQ6IE9ic2VydmFibGU8RmlyZXN0b3JlQ29sbGVjdGlvbkxpa2U8VCwgRD4+ID0gdGhpcy5jdXJyZW50RmlyZXN0b3JlQ29sbGVjdGlvbkxpa2UkLnBpcGUoZmlsdGVyTWF5YmUoKSk7XG4gIHJlYWRvbmx5IGZpcmVzdG9yZUNvbGxlY3Rpb24kOiBPYnNlcnZhYmxlPEZpcmVzdG9yZUNvbGxlY3Rpb248VCwgRD4+ID0gdGhpcy5jdXJyZW50RmlyZXN0b3JlQ29sbGVjdGlvbiQucGlwZShmaWx0ZXJNYXliZSgpKTtcblxuICByZWFkb25seSBjdXJyZW50SW5wdXRJZCQ6IE9ic2VydmFibGU8TWF5YmU8RmlyZXN0b3JlTW9kZWxJZD4+ID0gdGhpcy5zdGF0ZSQucGlwZShcbiAgICBtYXAoKHgpID0+IHguaWQpLFxuICAgIGRpc3RpbmN0VW50aWxDaGFuZ2VkKCksXG4gICAgc2hhcmVSZXBsYXkoMSlcbiAgKTtcblxuICByZWFkb25seSBpbnB1dElkJDogT2JzZXJ2YWJsZTxGaXJlc3RvcmVNb2RlbElkPiA9IHRoaXMuY3VycmVudElucHV0SWQkLnBpcGUoZmlsdGVyTWF5YmUoKSwgZGlzdGluY3RVbnRpbENoYW5nZWQoKSwgc2hhcmVSZXBsYXkoMSkpO1xuXG4gIHJlYWRvbmx5IGN1cnJlbnRJbnB1dEtleSQ6IE9ic2VydmFibGU8TWF5YmU8RmlyZXN0b3JlTW9kZWxLZXk+PiA9IHRoaXMuc3RhdGUkLnBpcGUoXG4gICAgbWFwKCh4KSA9PiB4LmtleSksXG4gICAgZGlzdGluY3RVbnRpbENoYW5nZWQoKSxcbiAgICBzaGFyZVJlcGxheSgxKVxuICApO1xuXG4gIHJlYWRvbmx5IGlucHV0S2V5JDogT2JzZXJ2YWJsZTxGaXJlc3RvcmVNb2RlbEtleT4gPSB0aGlzLmN1cnJlbnRJbnB1dEtleSQucGlwZShmaWx0ZXJNYXliZSgpLCBkaXN0aW5jdFVudGlsQ2hhbmdlZCgpLCBzaGFyZVJlcGxheSgxKSk7XG5cbiAgcmVhZG9ubHkgY3VycmVudElucHV0UmVmJDogT2JzZXJ2YWJsZTxNYXliZTxEb2N1bWVudFJlZmVyZW5jZTxUPj4+ID0gdGhpcy5zdGF0ZSQucGlwZShcbiAgICBtYXAoKHgpID0+IHgucmVmKSxcbiAgICBkaXN0aW5jdFVudGlsQ2hhbmdlZCgpLFxuICAgIHNoYXJlUmVwbGF5KDEpXG4gICk7XG5cbiAgcmVhZG9ubHkgaW5wdXRSZWYkOiBPYnNlcnZhYmxlPERvY3VtZW50UmVmZXJlbmNlPFQ+PiA9IHRoaXMuY3VycmVudElucHV0UmVmJC5waXBlKGZpbHRlck1heWJlKCksIGRpc3RpbmN0VW50aWxDaGFuZ2VkKCksIHNoYXJlUmVwbGF5KDEpKTtcblxuICByZWFkb25seSBjdXJyZW50RG9jdW1lbnQkOiBPYnNlcnZhYmxlPE1heWJlPEQ+PiA9IGNvbWJpbmVMYXRlc3QoW3RoaXMuY3VycmVudElucHV0SWQkLCB0aGlzLmN1cnJlbnRJbnB1dEtleSQsIHRoaXMuY3VycmVudElucHV0UmVmJF0pLnBpcGUoXG4gICAgc3dpdGNoTWFwKChbaWQsIGtleSwgcmVmXSkgPT4ge1xuICAgICAgbGV0IGRvY3VtZW50OiBPYnNlcnZhYmxlPE1heWJlPEQ+PjtcblxuICAgICAgaWYgKHJlZikge1xuICAgICAgICBkb2N1bWVudCA9IHRoaXMuZmlyZXN0b3JlQ29sbGVjdGlvbkxpa2UkLnBpcGUobWFwKCh4KSA9PiB4LmRvY3VtZW50QWNjZXNzb3IoKS5sb2FkRG9jdW1lbnQocmVmKSkpO1xuICAgICAgfSBlbHNlIGlmIChrZXkpIHtcbiAgICAgICAgZG9jdW1lbnQgPSB0aGlzLmZpcmVzdG9yZUNvbGxlY3Rpb25MaWtlJC5waXBlKG1hcCgoeCkgPT4geC5kb2N1bWVudEFjY2Vzc29yKCkubG9hZERvY3VtZW50Rm9yS2V5KGtleSkpKTtcbiAgICAgIH0gZWxzZSBpZiAoaWQpIHtcbiAgICAgICAgZG9jdW1lbnQgPSB0aGlzLmZpcmVzdG9yZUNvbGxlY3Rpb24kLnBpcGUobWFwKCh4KSA9PiB4LmRvY3VtZW50QWNjZXNzb3IoKS5sb2FkRG9jdW1lbnRGb3JJZChpZCkpKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGRvY3VtZW50ID0gb2YodW5kZWZpbmVkKTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIGRvY3VtZW50O1xuICAgIH0pLFxuICAgIGRpc3RpbmN0VW50aWxDaGFuZ2VkKCksXG4gICAgc2hhcmVSZXBsYXkoMSlcbiAgKTtcblxuICByZWFkb25seSBkb2N1bWVudCQ6IE9ic2VydmFibGU8RD4gPSB0aGlzLmN1cnJlbnREb2N1bWVudCQucGlwZShmaWx0ZXJNYXliZSgpLCBkaXN0aW5jdFVudGlsQ2hhbmdlZCgpLCBzaGFyZVJlcGxheSgxKSk7XG5cbiAgcmVhZG9ubHkgZG9jdW1lbnRMb2FkaW5nU3RhdGUkOiBPYnNlcnZhYmxlPExvYWRpbmdTdGF0ZTxEPj4gPSB0aGlzLmN1cnJlbnREb2N1bWVudCQucGlwZShcbiAgICBtYXAoKHgpID0+ICh4ID8gc3VjY2Vzc1Jlc3VsdCh4KSA6IGJlZ2luTG9hZGluZzxEPigpKSksXG4gICAgc2hhcmVSZXBsYXkoMSlcbiAgKTtcblxuICByZWFkb25seSBpZCQ6IE9ic2VydmFibGU8RmlyZXN0b3JlTW9kZWxJZD4gPSB0aGlzLmRvY3VtZW50JC5waXBlKFxuICAgIG1hcCgoeCkgPT4geC5pZCksXG4gICAgc2hhcmVSZXBsYXkoMSlcbiAgKTtcblxuICByZWFkb25seSBrZXkkOiBPYnNlcnZhYmxlPEZpcmVzdG9yZU1vZGVsS2V5PiA9IHRoaXMuZG9jdW1lbnQkLnBpcGUoXG4gICAgbWFwKCh4KSA9PiB4LmtleSksXG4gICAgc2hhcmVSZXBsYXkoMSlcbiAgKTtcblxuICByZWFkb25seSBrZXlNb2RlbElkcyQ6IE9ic2VydmFibGU8RmlyZXN0b3JlTW9kZWxJZFtdPiA9IHRoaXMua2V5JC5waXBlKG1hcChmaXJlc3RvcmVNb2RlbElkc0Zyb21LZXkpLCBzaGFyZVJlcGxheSgxKSk7XG4gIHJlYWRvbmx5IGtleVBhaXJzJDogT2JzZXJ2YWJsZTxGaXJlc3RvcmVNb2RlbENvbGxlY3Rpb25BbmRJZFBhaXJbXT4gPSB0aGlzLmtleSQucGlwZShtYXAoZmlyZXN0b3JlTW9kZWxLZXlQYXJ0UGFpcnMpLCBmaWx0ZXJNYXliZSgpLCBzaGFyZVJlcGxheSgxKSk7XG4gIHJlYWRvbmx5IGtleVBhaXJPYmplY3QkOiBPYnNlcnZhYmxlPEZpcmVzdG9yZU1vZGVsQ29sbGVjdGlvbkFuZElkUGFpck9iamVjdD4gPSB0aGlzLmtleSQucGlwZShtYXAoZmlyZXN0b3JlTW9kZWxLZXlQYWlyT2JqZWN0KSwgZmlsdGVyTWF5YmUoKSwgc2hhcmVSZXBsYXkoMSkpO1xuXG4gIHJlYWRvbmx5IHJlZiQ6IE9ic2VydmFibGU8RG9jdW1lbnRSZWZlcmVuY2U8VD4+ID0gdGhpcy5kb2N1bWVudCQucGlwZShcbiAgICBtYXAoKHgpID0+IHguZG9jdW1lbnRSZWYpLFxuICAgIHNoYXJlUmVwbGF5KDEpXG4gICk7XG5cbiAgcmVhZG9ubHkgc25hcHNob3QkOiBPYnNlcnZhYmxlPERvY3VtZW50U25hcHNob3Q8VD4+ID0gdGhpcy5kb2N1bWVudCQucGlwZShcbiAgICBzd2l0Y2hNYXAoKHgpID0+IHguYWNjZXNzb3Iuc3RyZWFtKCkpLFxuICAgIHNoYXJlUmVwbGF5KDEpXG4gICk7XG5cbiAgcmVhZG9ubHkgc25hcHNob3RMb2FkaW5nU3RhdGUkOiBPYnNlcnZhYmxlPExvYWRpbmdTdGF0ZTxEb2N1bWVudFNuYXBzaG90PFQ+Pj4gPSB0aGlzLmN1cnJlbnREb2N1bWVudCQucGlwZShcbiAgICBzd2l0Y2hNYXAoKCkgPT4gbG9hZGluZ1N0YXRlRnJvbU9icyh0aGlzLnNuYXBzaG90JCkpLFxuICAgIHNoYXJlUmVwbGF5KDEpXG4gICk7XG5cbiAgcmVhZG9ubHkgY3VycmVudERhdGEkOiBPYnNlcnZhYmxlPE1heWJlPERvY3VtZW50RGF0YVdpdGhJZDxUPj4+ID0gdGhpcy5kb2N1bWVudCQucGlwZShcbiAgICBzd2l0Y2hNYXAoKHgpID0+IHguYWNjZXNzb3Iuc3RyZWFtKCkucGlwZShtYXAoKHkpID0+IGRvY3VtZW50RGF0YVdpdGhJZCh5KSkpKSxcbiAgICBzaGFyZVJlcGxheSgxKVxuICApO1xuXG4gIHJlYWRvbmx5IGRhdGEkOiBPYnNlcnZhYmxlPERvY3VtZW50RGF0YVdpdGhJZDxUPj4gPSB0aGlzLmN1cnJlbnREb2N1bWVudCQucGlwZShcbiAgICBzd2l0Y2hNYXAoKCkgPT4gdGhpcy5jdXJyZW50RGF0YSQucGlwZShmaWx0ZXJNYXliZSgpKSksXG4gICAgc2hhcmVSZXBsYXkoMSlcbiAgKTtcblxuICByZWFkb25seSBkYXRhTG9hZGluZ1N0YXRlJDogT2JzZXJ2YWJsZTxMb2FkaW5nU3RhdGU8RG9jdW1lbnREYXRhV2l0aElkPFQ+Pj4gPSB0aGlzLnNuYXBzaG90TG9hZGluZ1N0YXRlJC5waXBlKFxuICAgIG1hcCgoeCkgPT4ge1xuICAgICAgbGV0IHJlc3VsdDogTG9hZGluZ1N0YXRlPERvY3VtZW50RGF0YVdpdGhJZDxUPj47XG5cbiAgICAgIGlmICh4LnZhbHVlKSB7XG4gICAgICAgIGNvbnN0IGRhdGEgPSBkb2N1bWVudERhdGFXaXRoSWQoeC52YWx1ZSk7XG5cbiAgICAgICAgaWYgKGRhdGEpIHtcbiAgICAgICAgICByZXN1bHQgPSBzdWNjZXNzUmVzdWx0KGRhdGEpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHJlc3VsdCA9IGVycm9yUmVzdWx0KG1vZGVsRG9lc05vdEV4aXN0RXJyb3IoKSk7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJlc3VsdCA9IHtcbiAgICAgICAgICAuLi54LFxuICAgICAgICAgIHZhbHVlOiB1bmRlZmluZWRcbiAgICAgICAgfTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9KSxcbiAgICBzaGFyZVJlcGxheSgxKVxuICApO1xuXG4gIHJlYWRvbmx5IGV4aXN0cyQ6IE9ic2VydmFibGU8Ym9vbGVhbj4gPSB0aGlzLmN1cnJlbnREYXRhJC5waXBlKFxuICAgIG1hcCgoeCkgPT4gaXNNYXliZVNvKHgpKSxcbiAgICBzaGFyZVJlcGxheSgxKVxuICApO1xuXG4gIHJlYWRvbmx5IGRvZXNOb3RFeGlzdCQ6IE9ic2VydmFibGU8Ym9vbGVhbj4gPSB0aGlzLmV4aXN0cyQucGlwZShcbiAgICBtYXAoKHgpID0+ICF4KSxcbiAgICBzaGFyZVJlcGxheSgxKVxuICApO1xuXG4gIHJlYWRvbmx5IG1vZGVsSWRlbnRpdHkkOiBPYnNlcnZhYmxlPEZpcmVzdG9yZU1vZGVsSWRlbnRpdHk+ID0gdGhpcy5kb2N1bWVudCQucGlwZShcbiAgICBtYXAoKHgpID0+IHgubW9kZWxJZGVudGl0eSksXG4gICAgc2hhcmVSZXBsYXkoMSlcbiAgKTtcblxuICAvLyBNQVJLOiBTdGF0ZSBDaGFuZ2VzXG4gIC8qKlxuICAgKiBTZXRzIHRoZSBpZCBvZiB0aGUgZG9jdW1lbnQgdG8gbG9hZC5cbiAgICovXG4gIHJlYWRvbmx5IHNldElkID0gdGhpcy51cGRhdGVyKChzdGF0ZSwgaWQ6IE1heWJlPEZpcmVzdG9yZU1vZGVsSWQ+KSA9PiAoaWQgPyB7IC4uLnN0YXRlLCBpZCwga2V5OiB1bmRlZmluZWQsIHJlZjogdW5kZWZpbmVkIH0gOiB7IC4uLnN0YXRlLCBpZCB9KSkgYXMgKG9ic2VydmFibGVPclZhbHVlOiBNYXliZTxzdHJpbmc+IHwgT2JzZXJ2YWJsZTxNYXliZTxzdHJpbmc+PikgPT4gU3Vic2NyaXB0aW9uO1xuXG4gIC8qKlxuICAgKiBTZXRzIHRoZSBrZXkgb2YgdGhlIGRvY3VtZW50IHRvIGxvYWQuXG4gICAqL1xuICByZWFkb25seSBzZXRLZXkgPSB0aGlzLnVwZGF0ZXIoKHN0YXRlLCBrZXk6IE1heWJlPEZpcmVzdG9yZU1vZGVsS2V5PikgPT4gKGtleSA/IHsgLi4uc3RhdGUsIGtleSwgaWQ6IHVuZGVmaW5lZCwgcmVmOiB1bmRlZmluZWQgfSA6IHsgLi4uc3RhdGUsIGtleSB9KSkgYXMgKG9ic2VydmFibGVPclZhbHVlOiBNYXliZTxzdHJpbmc+IHwgT2JzZXJ2YWJsZTxNYXliZTxzdHJpbmc+PikgPT4gU3Vic2NyaXB0aW9uO1xuXG4gIC8qKlxuICAgKiBTZXRzIHRoZSByZWYgb2YgdGhlIGRvY3VtZW50IHRvIGxvYWQuXG4gICAqL1xuICByZWFkb25seSBzZXRSZWYgPSB0aGlzLnVwZGF0ZXIoKHN0YXRlLCByZWY6IE1heWJlPERvY3VtZW50UmVmZXJlbmNlPFQ+PikgPT4gKHJlZiA/IHsgLi4uc3RhdGUsIGtleTogdW5kZWZpbmVkLCBpZDogdW5kZWZpbmVkLCByZWYgfSA6IHsgLi4uc3RhdGUsIHJlZiB9KSkgYXMgKG9ic2VydmFibGVPclZhbHVlOiBNYXliZTxEb2N1bWVudFJlZmVyZW5jZTxUPj4gfCBPYnNlcnZhYmxlPE1heWJlPERvY3VtZW50UmVmZXJlbmNlPFQ+Pj4pID0+IFN1YnNjcmlwdGlvbjtcblxuICByZWFkb25seSBjbGVhclJlZnMgPSB0aGlzLnVwZGF0ZXIoKHN0YXRlKSA9PiAoeyAuLi5zdGF0ZSwgaWQ6IHVuZGVmaW5lZCwga2V5OiB1bmRlZmluZWQsIHJlZjogdW5kZWZpbmVkIH0pKTtcblxuICByZWFkb25seSBzZXRGaXJlc3RvcmVDb2xsZWN0aW9uID0gdGhpcy51cGRhdGVyKChzdGF0ZSwgZmlyZXN0b3JlQ29sbGVjdGlvbjogTWF5YmU8RmlyZXN0b3JlQ29sbGVjdGlvbjxULCBEPj4pID0+ICh7IC4uLnN0YXRlLCBmaXJlc3RvcmVDb2xsZWN0aW9uIH0pKTtcbiAgcmVhZG9ubHkgc2V0RmlyZXN0b3JlQ29sbGVjdGlvbkxpa2UgPSB0aGlzLnVwZGF0ZXIoKHN0YXRlLCBmaXJlc3RvcmVDb2xsZWN0aW9uTGlrZTogTWF5YmU8RmlyZXN0b3JlQ29sbGVjdGlvbkxpa2U8VCwgRD4+KSA9PiAoeyAuLi5zdGF0ZSwgZmlyZXN0b3JlQ29sbGVjdGlvbkxpa2UgfSkpO1xufVxuIl19
115
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RvcmUuZG9jdW1lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9kYngtZmlyZWJhc2Uvc3JjL2xpYi9tb2RlbC9zdG9yZS9zdG9yZS5kb2N1bWVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNDLE9BQU8sRUFBYyxXQUFXLEVBQUUsb0JBQW9CLEVBQUUsR0FBRyxFQUFFLFNBQVMsRUFBRSxhQUFhLEVBQWdCLEVBQUUsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUN0SCxPQUFPLEVBQStMLHdCQUF3QixFQUFFLDBCQUEwQixFQUFxQywyQkFBMkIsRUFBMkMsd0JBQXdCLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUN6WixPQUFPLEVBQUUsV0FBVyxFQUFnQixZQUFZLEVBQUUsYUFBYSxFQUFFLG1CQUFtQixFQUFFLFdBQVcsRUFBcUIsTUFBTSxlQUFlLENBQUM7QUFDNUksT0FBTyxFQUFTLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNqRCxPQUFPLEVBQW9CLHFCQUFxQixFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDNUUsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sVUFBVSxDQUFDOztBQThEbEQ7O0dBRUc7QUFFSCxNQUFNLE9BQU8sZ0NBQThMLFNBQVEscUJBQXdCO0lBRDNPOztRQUVFLGdCQUFnQjtRQUVoQixrQkFBa0I7UUFDVCxvQ0FBK0IsR0FBcUQsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQzNHLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLG1CQUFtQixJQUFJLENBQUMsQ0FBQyx1QkFBdUIsQ0FBQyxFQUM5RCxvQkFBb0IsRUFBRSxFQUN0QixXQUFXLENBQUMsQ0FBQyxDQUFDLENBQ2YsQ0FBQztRQUVPLGdDQUEyQixHQUFpRCxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FDbkcsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsbUJBQW1CLENBQUMsRUFDakMsb0JBQW9CLEVBQUUsRUFDdEIsV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUNmLENBQUM7UUFFTyw2QkFBd0IsR0FBOEMsSUFBSSxDQUFDLCtCQUErQixDQUFDLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQyxDQUFDO1FBQy9ILHlCQUFvQixHQUEwQyxJQUFJLENBQUMsMkJBQTJCLENBQUMsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDLENBQUM7UUFFbkgsb0JBQWUsR0FBd0MsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQzlFLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUNoQixvQkFBb0IsRUFBRSxFQUN0QixXQUFXLENBQUMsQ0FBQyxDQUFDLENBQ2YsQ0FBQztRQUVPLGFBQVEsR0FBaUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsV0FBVyxFQUFFLEVBQUUsb0JBQW9CLEVBQUUsRUFBRSxXQUFXLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUUxSCxxQkFBZ0IsR0FBeUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQ2hGLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxFQUNqQixvQkFBb0IsRUFBRSxFQUN0QixXQUFXLENBQUMsQ0FBQyxDQUFDLENBQ2YsQ0FBQztRQUVPLGNBQVMsR0FBa0MsSUFBSSxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQyxXQUFXLEVBQUUsRUFBRSxvQkFBb0IsRUFBRSxFQUFFLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBRTdILHFCQUFnQixHQUE0QyxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FDbkYsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEVBQ2pCLG9CQUFvQixFQUFFLEVBQ3RCLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FDZixDQUFDO1FBRU8sY0FBUyxHQUFxQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLFdBQVcsRUFBRSxFQUFFLG9CQUFvQixFQUFFLEVBQUUsV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFFaEkscUJBQWdCLEdBQXlCLGFBQWEsQ0FBQyxDQUFDLElBQUksQ0FBQyxlQUFlLEVBQUUsSUFBSSxDQUFDLGdCQUFnQixFQUFFLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUN4SSxTQUFTLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxHQUFHLEVBQUUsR0FBRyxDQUFDLEVBQUUsRUFBRTtZQUMzQixJQUFJLFFBQThCLENBQUM7WUFFbkMsSUFBSSxHQUFHLEVBQUU7Z0JBQ1AsUUFBUSxHQUFHLElBQUksQ0FBQyx3QkFBd0IsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQyxZQUFZLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDO2FBQ25HO2lCQUFNLElBQUksR0FBRyxFQUFFO2dCQUNkLFFBQVEsR0FBRyxJQUFJLENBQUMsd0JBQXdCLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLGdCQUFnQixFQUFFLENBQUMsa0JBQWtCLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDO2FBQ3pHO2lCQUFNLElBQUksRUFBRSxFQUFFO2dCQUNiLFFBQVEsR0FBRyxJQUFJLENBQUMsb0JBQW9CLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLGdCQUFnQixFQUFFLENBQUMsaUJBQWlCLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDO2FBQ25HO2lCQUFNO2dCQUNMLFFBQVEsR0FBRyxFQUFFLENBQUMsU0FBUyxDQUFDLENBQUM7YUFDMUI7WUFFRCxPQUFPLFFBQVEsQ0FBQztRQUNsQixDQUFDLENBQUMsRUFDRixvQkFBb0IsRUFBRSxFQUN0QixXQUFXLENBQUMsQ0FBQyxDQUFDLENBQ2YsQ0FBQztRQUVGOztXQUVHO1FBQ00sWUFBTyxHQUF3QixJQUFJLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUNoRSxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxXQUFXLElBQUksSUFBSSxDQUFDLEVBQ2xDLG9CQUFvQixFQUFFLEVBQ3RCLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FDZixDQUFDO1FBRU8sY0FBUyxHQUFrQixJQUFJLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLFdBQVcsRUFBRSxFQUFFLG9CQUFvQixFQUFFLEVBQUUsV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFFN0csMEJBQXFCLEdBQWdDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQ3RGLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsWUFBWSxFQUFLLENBQUMsQ0FBQyxFQUN0RCxXQUFXLENBQUMsQ0FBQyxDQUFDLENBQ2YsQ0FBQztRQUVPLFFBQUcsR0FBaUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQzlELEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUNoQixXQUFXLENBQUMsQ0FBQyxDQUFDLENBQ2YsQ0FBQztRQUVPLFNBQUksR0FBa0MsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQ2hFLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxFQUNqQixXQUFXLENBQUMsQ0FBQyxDQUFDLENBQ2YsQ0FBQztRQUVPLGlCQUFZLEdBQW1DLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyx3QkFBd0IsQ0FBQyxFQUFFLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQzdHLGNBQVMsR0FBb0QsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLDBCQUEwQixDQUFDLEVBQUUsV0FBVyxFQUFFLEVBQUUsV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDNUksbUJBQWMsR0FBd0QsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLDJCQUEyQixDQUFDLEVBQUUsV0FBVyxFQUFFLEVBQUUsV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFFdEosU0FBSSxHQUFxQyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FDbkUsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsV0FBVyxDQUFDLEVBQ3pCLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FDZixDQUFDO1FBRU8sY0FBUyxHQUFvQyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FDdkUsU0FBUyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLE1BQU0sRUFBRSxDQUFDLEVBQ3JDLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FDZixDQUFDO1FBRU8sMEJBQXFCLEdBQWtELElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQ3hHLFNBQVMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxtQkFBbUIsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsRUFDcEQsV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUNmLENBQUM7UUFFTyxpQkFBWSxHQUFtRCxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FDekYsU0FBUyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLE1BQU0sRUFBRSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLHdCQUF3QixDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUNuRixXQUFXLENBQUMsQ0FBQyxDQUFDLENBQ2YsQ0FBQztRQUVPLFVBQUssR0FBNEMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FDbEYsU0FBUyxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDLENBQUMsRUFDdEQsV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUNmLENBQUM7UUFFTyxzQkFBaUIsR0FBMEQsSUFBSSxDQUFDLHFCQUFxQixDQUFDLElBQUksQ0FDakgsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUU7WUFDUixJQUFJLE1BQWlELENBQUM7WUFFdEQsSUFBSSxDQUFDLENBQUMsS0FBSyxFQUFFO2dCQUNYLE1BQU0sSUFBSSxHQUFHLHdCQUF3QixDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQztnQkFFL0MsSUFBSSxJQUFJLEVBQUU7b0JBQ1IsTUFBTSxHQUFHLGFBQWEsQ0FBQyxJQUFJLENBQUMsQ0FBQztpQkFDOUI7cUJBQU07b0JBQ0wsTUFBTSxHQUFHLFdBQVcsQ0FBQyxzQkFBc0IsRUFBRSxDQUFDLENBQUM7aUJBQ2hEO2FBQ0Y7aUJBQU07Z0JBQ0wsTUFBTSxHQUFHO29CQUNQLEdBQUcsQ0FBQztvQkFDSixLQUFLLEVBQUUsU0FBUztpQkFDakIsQ0FBQzthQUNIO1lBRUQsT0FBTyxNQUFNLENBQUM7UUFDaEIsQ0FBQyxDQUFDLEVBQ0YsV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUNmLENBQUM7UUFFRjs7V0FFRztRQUNNLG1CQUFjLEdBQXdCLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUM5RCxTQUFTLENBQUMsQ0FBQyxNQUFNLEVBQUUsRUFBRTtZQUNuQixJQUFJLE1BQU0sRUFBRTtnQkFDVixPQUFPLElBQUksQ0FBQyxPQUFPLENBQUM7YUFDckI7aUJBQU07Z0JBQ0wsT0FBTyxFQUFFLENBQUMsS0FBSyxDQUFDLENBQUM7YUFDbEI7UUFDSCxDQUFDLENBQUMsRUFDRixXQUFXLENBQUMsQ0FBQyxDQUFDLENBQ2YsQ0FBQztRQUVPLFlBQU8sR0FBd0IsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQzVELEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQ3hCLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FDZixDQUFDO1FBRU8sa0JBQWEsR0FBd0IsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQzdELEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFDZCxXQUFXLENBQUMsQ0FBQyxDQUFDLENBQ2YsQ0FBQztRQUVPLG1CQUFjLEdBQXVDLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUMvRSxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxhQUFhLENBQUMsRUFDM0IsV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUNmLENBQUM7UUFFRixzQkFBc0I7UUFDdEI7O1dBRUc7UUFDTSxVQUFLLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDLEtBQUssRUFBRSxFQUEyQixFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxHQUFHLEtBQUssRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFLFNBQVMsRUFBRSxHQUFHLEVBQUUsU0FBUyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsR0FBRyxLQUFLLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBbUYsQ0FBQztRQUVwTzs7V0FFRztRQUNNLFdBQU0sR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUMsS0FBSyxFQUFFLEdBQTZCLEVBQUUsRUFBRSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLEdBQUcsS0FBSyxFQUFFLEdBQUcsRUFBRSxFQUFFLEVBQUUsU0FBUyxFQUFFLEdBQUcsRUFBRSxTQUFTLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxHQUFHLEtBQUssRUFBRSxHQUFHLEVBQUUsQ0FBQyxDQUFtRixDQUFDO1FBRXpPOztXQUVHO1FBQ00sV0FBTSxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxLQUFLLEVBQUUsR0FBZ0MsRUFBRSxFQUFFLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsR0FBRyxLQUFLLEVBQUUsR0FBRyxFQUFFLFNBQVMsRUFBRSxFQUFFLEVBQUUsU0FBUyxFQUFFLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLEdBQUcsS0FBSyxFQUFFLEdBQUcsRUFBRSxDQUFDLENBQStHLENBQUM7UUFFL1AsY0FBUyxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxHQUFHLEtBQUssRUFBRSxFQUFFLEVBQUUsU0FBUyxFQUFFLEdBQUcsRUFBRSxTQUFTLEVBQUUsR0FBRyxFQUFFLFNBQVMsRUFBRSxDQUFDLENBQUMsQ0FBQztRQUVuRywyQkFBc0IsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUMsS0FBSyxFQUFFLG1CQUFxRCxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsR0FBRyxLQUFLLEVBQUUsbUJBQW1CLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFDN0ksK0JBQTBCLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDLEtBQUssRUFBRSx1QkFBNkQsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEdBQUcsS0FBSyxFQUFFLHVCQUF1QixFQUFFLENBQUMsQ0FBQyxDQUFDO0tBQ3ZLOzs2SEEvTFksZ0NBQWdDO2lJQUFoQyxnQ0FBZ0M7MkZBQWhDLGdDQUFnQztrQkFENUMsVUFBVSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE9ic2VydmFibGUsIHNoYXJlUmVwbGF5LCBkaXN0aW5jdFVudGlsQ2hhbmdlZCwgbWFwLCBzd2l0Y2hNYXAsIGNvbWJpbmVMYXRlc3QsIFN1YnNjcmlwdGlvbiwgb2YgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IERvY3VtZW50U25hcHNob3QsIERvY3VtZW50UmVmZXJlbmNlLCBGaXJlc3RvcmVDb2xsZWN0aW9uLCBGaXJlc3RvcmVEb2N1bWVudCwgRG9jdW1lbnREYXRhV2l0aElkQW5kS2V5LCBGaXJlc3RvcmVNb2RlbElkLCBGaXJlc3RvcmVNb2RlbEtleSwgRmlyZXN0b3JlQ29sbGVjdGlvbkxpa2UsIEZpcmVzdG9yZU1vZGVsSWRlbnRpdHksIGZpcmVzdG9yZU1vZGVsSWRzRnJvbUtleSwgZmlyZXN0b3JlTW9kZWxLZXlQYXJ0UGFpcnMsIEZpcmVzdG9yZU1vZGVsQ29sbGVjdGlvbkFuZElkUGFpciwgZmlyZXN0b3JlTW9kZWxLZXlQYWlyT2JqZWN0LCBGaXJlc3RvcmVNb2RlbENvbGxlY3Rpb25BbmRJZFBhaXJPYmplY3QsIGRvY3VtZW50RGF0YVdpdGhJZEFuZEtleSB9IGZyb20gJ0BkZXJlZWtiL2ZpcmViYXNlJztcbmltcG9ydCB7IGZpbHRlck1heWJlLCBMb2FkaW5nU3RhdGUsIGJlZ2luTG9hZGluZywgc3VjY2Vzc1Jlc3VsdCwgbG9hZGluZ1N0YXRlRnJvbU9icywgZXJyb3JSZXN1bHQsIE9ic2VydmFibGVPclZhbHVlIH0gZnJvbSAnQGRlcmVla2Ivcnhqcyc7XG5pbXBvcnQgeyBNYXliZSwgaXNNYXliZVNvIH0gZnJvbSAnQGRlcmVla2IvdXRpbCc7XG5pbXBvcnQgeyBMb2NrU2V0Q29tcG9uZW50LCBMb2NrU2V0Q29tcG9uZW50U3RvcmUgfSBmcm9tICdAZGVyZWVrYi9kYngtY29yZSc7XG5pbXBvcnQgeyBtb2RlbERvZXNOb3RFeGlzdEVycm9yIH0gZnJvbSAnLi4vZXJyb3InO1xuXG5leHBvcnQgaW50ZXJmYWNlIERieEZpcmViYXNlRG9jdW1lbnRTdG9yZTxULCBEIGV4dGVuZHMgRmlyZXN0b3JlRG9jdW1lbnQ8VD4gPSBGaXJlc3RvcmVEb2N1bWVudDxUPj4gZXh0ZW5kcyBMb2NrU2V0Q29tcG9uZW50IHtcbiAgcmVhZG9ubHkgZmlyZXN0b3JlQ29sbGVjdGlvbkxpa2UkOiBPYnNlcnZhYmxlPEZpcmVzdG9yZUNvbGxlY3Rpb25MaWtlPFQsIEQ+PjtcbiAgcmVhZG9ubHkgZmlyZXN0b3JlQ29sbGVjdGlvbiQ6IE9ic2VydmFibGU8RmlyZXN0b3JlQ29sbGVjdGlvbjxULCBEPj47XG5cbiAgcmVhZG9ubHkgY3VycmVudElucHV0SWQkOiBPYnNlcnZhYmxlPE1heWJlPEZpcmVzdG9yZU1vZGVsSWQ+PjtcbiAgcmVhZG9ubHkgaW5wdXRJZCQ6IE9ic2VydmFibGU8RmlyZXN0b3JlTW9kZWxJZD47XG4gIHJlYWRvbmx5IGN1cnJlbnRJbnB1dEtleSQ6IE9ic2VydmFibGU8TWF5YmU8RmlyZXN0b3JlTW9kZWxLZXk+PjtcbiAgcmVhZG9ubHkgaW5wdXRLZXkkOiBPYnNlcnZhYmxlPEZpcmVzdG9yZU1vZGVsS2V5PjtcbiAgcmVhZG9ubHkgY3VycmVudElucHV0UmVmJDogT2JzZXJ2YWJsZTxNYXliZTxEb2N1bWVudFJlZmVyZW5jZTxUPj4+O1xuICByZWFkb25seSBpbnB1dFJlZiQ6IE9ic2VydmFibGU8RG9jdW1lbnRSZWZlcmVuY2U8VD4+O1xuXG4gIHJlYWRvbmx5IGN1cnJlbnREb2N1bWVudCQ6IE9ic2VydmFibGU8TWF5YmU8RD4+O1xuICByZWFkb25seSBkb2N1bWVudCQ6IE9ic2VydmFibGU8RD47XG4gIHJlYWRvbmx5IGlkJDogT2JzZXJ2YWJsZTxGaXJlc3RvcmVNb2RlbElkPjtcbiAgcmVhZG9ubHkga2V5JDogT2JzZXJ2YWJsZTxGaXJlc3RvcmVNb2RlbEtleT47XG4gIHJlYWRvbmx5IHJlZiQ6IE9ic2VydmFibGU8RG9jdW1lbnRSZWZlcmVuY2U8VD4+O1xuICByZWFkb25seSBoYXNSZWYkOiBPYnNlcnZhYmxlPGJvb2xlYW4+O1xuXG4gIHJlYWRvbmx5IGtleU1vZGVsSWRzJDogT2JzZXJ2YWJsZTxGaXJlc3RvcmVNb2RlbElkW10+O1xuICByZWFkb25seSBrZXlQYWlycyQ6IE9ic2VydmFibGU8RmlyZXN0b3JlTW9kZWxDb2xsZWN0aW9uQW5kSWRQYWlyW10+O1xuICByZWFkb25seSBrZXlQYWlyT2JqZWN0JDogT2JzZXJ2YWJsZTxGaXJlc3RvcmVNb2RlbENvbGxlY3Rpb25BbmRJZFBhaXJPYmplY3Q+O1xuXG4gIHJlYWRvbmx5IGRvY3VtZW50TG9hZGluZ1N0YXRlJDogT2JzZXJ2YWJsZTxMb2FkaW5nU3RhdGU8RD4+O1xuICByZWFkb25seSBzbmFwc2hvdCQ6IE9ic2VydmFibGU8RG9jdW1lbnRTbmFwc2hvdDxUPj47XG4gIHJlYWRvbmx5IHNuYXBzaG90TG9hZGluZ1N0YXRlJDogT2JzZXJ2YWJsZTxMb2FkaW5nU3RhdGU8RG9jdW1lbnRTbmFwc2hvdDxUPj4+O1xuICByZWFkb25seSBjdXJyZW50RGF0YSQ6IE9ic2VydmFibGU8TWF5YmU8RG9jdW1lbnREYXRhV2l0aElkQW5kS2V5PFQ+Pj47XG4gIHJlYWRvbmx5IGRhdGEkOiBPYnNlcnZhYmxlPERvY3VtZW50RGF0YVdpdGhJZEFuZEtleTxUPj47XG4gIHJlYWRvbmx5IGRhdGFMb2FkaW5nU3RhdGUkOiBPYnNlcnZhYmxlPExvYWRpbmdTdGF0ZTxEb2N1bWVudERhdGFXaXRoSWRBbmRLZXk8VD4+PjtcbiAgcmVhZG9ubHkgY3VycmVudEV4aXN0cyQ6IE9ic2VydmFibGU8Ym9vbGVhbj47XG4gIHJlYWRvbmx5IGV4aXN0cyQ6IE9ic2VydmFibGU8Ym9vbGVhbj47XG4gIHJlYWRvbmx5IG1vZGVsSWRlbnRpdHkkOiBPYnNlcnZhYmxlPEZpcmVzdG9yZU1vZGVsSWRlbnRpdHk+O1xuXG4gIHNldElkOiAob2JzZXJ2YWJsZU9yVmFsdWU6IE9ic2VydmFibGVPclZhbHVlPE1heWJlPEZpcmVzdG9yZU1vZGVsSWQ+PikgPT4gU3Vic2NyaXB0aW9uO1xuICBzZXRLZXk6IChvYnNlcnZhYmxlT3JWYWx1ZTogT2JzZXJ2YWJsZU9yVmFsdWU8TWF5YmU8RmlyZXN0b3JlTW9kZWxLZXk+PikgPT4gU3Vic2NyaXB0aW9uO1xuICBzZXRSZWY6IChvYnNlcnZhYmxlT3JWYWx1ZTogT2JzZXJ2YWJsZU9yVmFsdWU8TWF5YmU8RG9jdW1lbnRSZWZlcmVuY2U8VD4+PikgPT4gU3Vic2NyaXB0aW9uO1xuXG4gIC8qKlxuICAgKiBDbGVhcnMgdGhlIGtleS9pZC9yZWYgYW5kIGN1cnJlbnQgZG9jdW1lbnQgZnJvbSB0aGUgc3RvcmUuXG4gICAqL1xuICBjbGVhclJlZnM6ICgpID0+IHZvaWQ7XG5cbiAgLyoqXG4gICAqIFNldHMgdGhlIEZpcmVzdG9yZUNvbGxlY3Rpb24gdG8gcmV0cmlldmUgZG9jdW1lbnRzIGZyb20uXG4gICAqL1xuICByZWFkb25seSBzZXRGaXJlc3RvcmVDb2xsZWN0aW9uOiAoKCkgPT4gdm9pZCkgfCAoKG9ic2VydmFibGVPclZhbHVlOiBPYnNlcnZhYmxlT3JWYWx1ZTxNYXliZTxGaXJlc3RvcmVDb2xsZWN0aW9uPFQsIEQ+Pj4pID0+IFN1YnNjcmlwdGlvbik7XG5cbiAgLyoqXG4gICAqIFNldHMgdGhlIEZpcmVzdG9yZUNvbGxlY3Rpb25MaWtlIHRvIHJldHJpZXZlIGRvY3VtZW50cyBmcm9tLlxuICAgKi9cbiAgcmVhZG9ubHkgc2V0RmlyZXN0b3JlQ29sbGVjdGlvbkxpa2U6ICgoKSA9PiB2b2lkKSB8ICgob2JzZXJ2YWJsZU9yVmFsdWU6IE9ic2VydmFibGVPclZhbHVlPE1heWJlPEZpcmVzdG9yZUNvbGxlY3Rpb25MaWtlPFQsIEQ+Pj4pID0+IFN1YnNjcmlwdGlvbik7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgRGJ4RmlyZWJhc2VEb2N1bWVudFN0b3JlQ29udGV4dFN0YXRlPFQsIEQgZXh0ZW5kcyBGaXJlc3RvcmVEb2N1bWVudDxUPiA9IEZpcmVzdG9yZURvY3VtZW50PFQ+PiB7XG4gIHJlYWRvbmx5IGZpcmVzdG9yZUNvbGxlY3Rpb25MaWtlPzogTWF5YmU8RmlyZXN0b3JlQ29sbGVjdGlvbkxpa2U8VCwgRD4+O1xuICByZWFkb25seSBmaXJlc3RvcmVDb2xsZWN0aW9uPzogTWF5YmU8RmlyZXN0b3JlQ29sbGVjdGlvbjxULCBEPj47XG4gIHJlYWRvbmx5IGlkPzogTWF5YmU8RmlyZXN0b3JlTW9kZWxJZD47XG4gIHJlYWRvbmx5IGtleT86IE1heWJlPEZpcmVzdG9yZU1vZGVsS2V5PjtcbiAgcmVhZG9ubHkgcmVmPzogTWF5YmU8RG9jdW1lbnRSZWZlcmVuY2U8VD4+O1xufVxuXG4vKipcbiAqIFVzZWQgZm9yIHN0b3JpbmcgdGhlIHN0YXRlIG9mIGEgUGVyc29uIGFuZCByZWxhdGVkIGVtYWlsIHRocmVhZHMuXG4gKi9cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBBYnN0cmFjdERieEZpcmViYXNlRG9jdW1lbnRTdG9yZTxULCBEIGV4dGVuZHMgRmlyZXN0b3JlRG9jdW1lbnQ8VD4gPSBGaXJlc3RvcmVEb2N1bWVudDxUPiwgQyBleHRlbmRzIERieEZpcmViYXNlRG9jdW1lbnRTdG9yZUNvbnRleHRTdGF0ZTxULCBEPiA9IERieEZpcmViYXNlRG9jdW1lbnRTdG9yZUNvbnRleHRTdGF0ZTxULCBEPj4gZXh0ZW5kcyBMb2NrU2V0Q29tcG9uZW50U3RvcmU8Qz4gaW1wbGVtZW50cyBEYnhGaXJlYmFzZURvY3VtZW50U3RvcmU8VCwgRD4ge1xuICAvLyBNQVJLOiBFZmZlY3RzXG5cbiAgLy8gTUFSSzogQWNjZXNzb3JzXG4gIHJlYWRvbmx5IGN1cnJlbnRGaXJlc3RvcmVDb2xsZWN0aW9uTGlrZSQ6IE9ic2VydmFibGU8TWF5YmU8RmlyZXN0b3JlQ29sbGVjdGlvbkxpa2U8VCwgRD4+PiA9IHRoaXMuc3RhdGUkLnBpcGUoXG4gICAgbWFwKCh4KSA9PiB4LmZpcmVzdG9yZUNvbGxlY3Rpb24gPz8geC5maXJlc3RvcmVDb2xsZWN0aW9uTGlrZSksXG4gICAgZGlzdGluY3RVbnRpbENoYW5nZWQoKSxcbiAgICBzaGFyZVJlcGxheSgxKVxuICApO1xuXG4gIHJlYWRvbmx5IGN1cnJlbnRGaXJlc3RvcmVDb2xsZWN0aW9uJDogT2JzZXJ2YWJsZTxNYXliZTxGaXJlc3RvcmVDb2xsZWN0aW9uPFQsIEQ+Pj4gPSB0aGlzLnN0YXRlJC5waXBlKFxuICAgIG1hcCgoeCkgPT4geC5maXJlc3RvcmVDb2xsZWN0aW9uKSxcbiAgICBkaXN0aW5jdFVudGlsQ2hhbmdlZCgpLFxuICAgIHNoYXJlUmVwbGF5KDEpXG4gICk7XG5cbiAgcmVhZG9ubHkgZmlyZXN0b3JlQ29sbGVjdGlvbkxpa2UkOiBPYnNlcnZhYmxlPEZpcmVzdG9yZUNvbGxlY3Rpb25MaWtlPFQsIEQ+PiA9IHRoaXMuY3VycmVudEZpcmVzdG9yZUNvbGxlY3Rpb25MaWtlJC5waXBlKGZpbHRlck1heWJlKCkpO1xuICByZWFkb25seSBmaXJlc3RvcmVDb2xsZWN0aW9uJDogT2JzZXJ2YWJsZTxGaXJlc3RvcmVDb2xsZWN0aW9uPFQsIEQ+PiA9IHRoaXMuY3VycmVudEZpcmVzdG9yZUNvbGxlY3Rpb24kLnBpcGUoZmlsdGVyTWF5YmUoKSk7XG5cbiAgcmVhZG9ubHkgY3VycmVudElucHV0SWQkOiBPYnNlcnZhYmxlPE1heWJlPEZpcmVzdG9yZU1vZGVsSWQ+PiA9IHRoaXMuc3RhdGUkLnBpcGUoXG4gICAgbWFwKCh4KSA9PiB4LmlkKSxcbiAgICBkaXN0aW5jdFVudGlsQ2hhbmdlZCgpLFxuICAgIHNoYXJlUmVwbGF5KDEpXG4gICk7XG5cbiAgcmVhZG9ubHkgaW5wdXRJZCQ6IE9ic2VydmFibGU8RmlyZXN0b3JlTW9kZWxJZD4gPSB0aGlzLmN1cnJlbnRJbnB1dElkJC5waXBlKGZpbHRlck1heWJlKCksIGRpc3RpbmN0VW50aWxDaGFuZ2VkKCksIHNoYXJlUmVwbGF5KDEpKTtcblxuICByZWFkb25seSBjdXJyZW50SW5wdXRLZXkkOiBPYnNlcnZhYmxlPE1heWJlPEZpcmVzdG9yZU1vZGVsS2V5Pj4gPSB0aGlzLnN0YXRlJC5waXBlKFxuICAgIG1hcCgoeCkgPT4geC5rZXkpLFxuICAgIGRpc3RpbmN0VW50aWxDaGFuZ2VkKCksXG4gICAgc2hhcmVSZXBsYXkoMSlcbiAgKTtcblxuICByZWFkb25seSBpbnB1dEtleSQ6IE9ic2VydmFibGU8RmlyZXN0b3JlTW9kZWxLZXk+ID0gdGhpcy5jdXJyZW50SW5wdXRLZXkkLnBpcGUoZmlsdGVyTWF5YmUoKSwgZGlzdGluY3RVbnRpbENoYW5nZWQoKSwgc2hhcmVSZXBsYXkoMSkpO1xuXG4gIHJlYWRvbmx5IGN1cnJlbnRJbnB1dFJlZiQ6IE9ic2VydmFibGU8TWF5YmU8RG9jdW1lbnRSZWZlcmVuY2U8VD4+PiA9IHRoaXMuc3RhdGUkLnBpcGUoXG4gICAgbWFwKCh4KSA9PiB4LnJlZiksXG4gICAgZGlzdGluY3RVbnRpbENoYW5nZWQoKSxcbiAgICBzaGFyZVJlcGxheSgxKVxuICApO1xuXG4gIHJlYWRvbmx5IGlucHV0UmVmJDogT2JzZXJ2YWJsZTxEb2N1bWVudFJlZmVyZW5jZTxUPj4gPSB0aGlzLmN1cnJlbnRJbnB1dFJlZiQucGlwZShmaWx0ZXJNYXliZSgpLCBkaXN0aW5jdFVudGlsQ2hhbmdlZCgpLCBzaGFyZVJlcGxheSgxKSk7XG5cbiAgcmVhZG9ubHkgY3VycmVudERvY3VtZW50JDogT2JzZXJ2YWJsZTxNYXliZTxEPj4gPSBjb21iaW5lTGF0ZXN0KFt0aGlzLmN1cnJlbnRJbnB1dElkJCwgdGhpcy5jdXJyZW50SW5wdXRLZXkkLCB0aGlzLmN1cnJlbnRJbnB1dFJlZiRdKS5waXBlKFxuICAgIHN3aXRjaE1hcCgoW2lkLCBrZXksIHJlZl0pID0+IHtcbiAgICAgIGxldCBkb2N1bWVudDogT2JzZXJ2YWJsZTxNYXliZTxEPj47XG5cbiAgICAgIGlmIChyZWYpIHtcbiAgICAgICAgZG9jdW1lbnQgPSB0aGlzLmZpcmVzdG9yZUNvbGxlY3Rpb25MaWtlJC5waXBlKG1hcCgoeCkgPT4geC5kb2N1bWVudEFjY2Vzc29yKCkubG9hZERvY3VtZW50KHJlZikpKTtcbiAgICAgIH0gZWxzZSBpZiAoa2V5KSB7XG4gICAgICAgIGRvY3VtZW50ID0gdGhpcy5maXJlc3RvcmVDb2xsZWN0aW9uTGlrZSQucGlwZShtYXAoKHgpID0+IHguZG9jdW1lbnRBY2Nlc3NvcigpLmxvYWREb2N1bWVudEZvcktleShrZXkpKSk7XG4gICAgICB9IGVsc2UgaWYgKGlkKSB7XG4gICAgICAgIGRvY3VtZW50ID0gdGhpcy5maXJlc3RvcmVDb2xsZWN0aW9uJC5waXBlKG1hcCgoeCkgPT4geC5kb2N1bWVudEFjY2Vzc29yKCkubG9hZERvY3VtZW50Rm9ySWQoaWQpKSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBkb2N1bWVudCA9IG9mKHVuZGVmaW5lZCk7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBkb2N1bWVudDtcbiAgICB9KSxcbiAgICBkaXN0aW5jdFVudGlsQ2hhbmdlZCgpLFxuICAgIHNoYXJlUmVwbGF5KDEpXG4gICk7XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgb3Igbm90IGFuIGlkL3JlZi9rZXkgaGFzIGJlZW4gaW5wdXQgYW5kIGN1cnJlbnREb2N1bWVudCBpcyBub3QgbnVsbC5cbiAgICovXG4gIHJlYWRvbmx5IGhhc1JlZiQ6IE9ic2VydmFibGU8Ym9vbGVhbj4gPSB0aGlzLmN1cnJlbnREb2N1bWVudCQucGlwZShcbiAgICBtYXAoKHgpID0+IHg/LmRvY3VtZW50UmVmICE9IG51bGwpLFxuICAgIGRpc3RpbmN0VW50aWxDaGFuZ2VkKCksXG4gICAgc2hhcmVSZXBsYXkoMSlcbiAgKTtcblxuICByZWFkb25seSBkb2N1bWVudCQ6IE9ic2VydmFibGU8RD4gPSB0aGlzLmN1cnJlbnREb2N1bWVudCQucGlwZShmaWx0ZXJNYXliZSgpLCBkaXN0aW5jdFVudGlsQ2hhbmdlZCgpLCBzaGFyZVJlcGxheSgxKSk7XG5cbiAgcmVhZG9ubHkgZG9jdW1lbnRMb2FkaW5nU3RhdGUkOiBPYnNlcnZhYmxlPExvYWRpbmdTdGF0ZTxEPj4gPSB0aGlzLmN1cnJlbnREb2N1bWVudCQucGlwZShcbiAgICBtYXAoKHgpID0+ICh4ID8gc3VjY2Vzc1Jlc3VsdCh4KSA6IGJlZ2luTG9hZGluZzxEPigpKSksXG4gICAgc2hhcmVSZXBsYXkoMSlcbiAgKTtcblxuICByZWFkb25seSBpZCQ6IE9ic2VydmFibGU8RmlyZXN0b3JlTW9kZWxJZD4gPSB0aGlzLmRvY3VtZW50JC5waXBlKFxuICAgIG1hcCgoeCkgPT4geC5pZCksXG4gICAgc2hhcmVSZXBsYXkoMSlcbiAgKTtcblxuICByZWFkb25seSBrZXkkOiBPYnNlcnZhYmxlPEZpcmVzdG9yZU1vZGVsS2V5PiA9IHRoaXMuZG9jdW1lbnQkLnBpcGUoXG4gICAgbWFwKCh4KSA9PiB4LmtleSksXG4gICAgc2hhcmVSZXBsYXkoMSlcbiAgKTtcblxuICByZWFkb25seSBrZXlNb2RlbElkcyQ6IE9ic2VydmFibGU8RmlyZXN0b3JlTW9kZWxJZFtdPiA9IHRoaXMua2V5JC5waXBlKG1hcChmaXJlc3RvcmVNb2RlbElkc0Zyb21LZXkpLCBzaGFyZVJlcGxheSgxKSk7XG4gIHJlYWRvbmx5IGtleVBhaXJzJDogT2JzZXJ2YWJsZTxGaXJlc3RvcmVNb2RlbENvbGxlY3Rpb25BbmRJZFBhaXJbXT4gPSB0aGlzLmtleSQucGlwZShtYXAoZmlyZXN0b3JlTW9kZWxLZXlQYXJ0UGFpcnMpLCBmaWx0ZXJNYXliZSgpLCBzaGFyZVJlcGxheSgxKSk7XG4gIHJlYWRvbmx5IGtleVBhaXJPYmplY3QkOiBPYnNlcnZhYmxlPEZpcmVzdG9yZU1vZGVsQ29sbGVjdGlvbkFuZElkUGFpck9iamVjdD4gPSB0aGlzLmtleSQucGlwZShtYXAoZmlyZXN0b3JlTW9kZWxLZXlQYWlyT2JqZWN0KSwgZmlsdGVyTWF5YmUoKSwgc2hhcmVSZXBsYXkoMSkpO1xuXG4gIHJlYWRvbmx5IHJlZiQ6IE9ic2VydmFibGU8RG9jdW1lbnRSZWZlcmVuY2U8VD4+ID0gdGhpcy5kb2N1bWVudCQucGlwZShcbiAgICBtYXAoKHgpID0+IHguZG9jdW1lbnRSZWYpLFxuICAgIHNoYXJlUmVwbGF5KDEpXG4gICk7XG5cbiAgcmVhZG9ubHkgc25hcHNob3QkOiBPYnNlcnZhYmxlPERvY3VtZW50U25hcHNob3Q8VD4+ID0gdGhpcy5kb2N1bWVudCQucGlwZShcbiAgICBzd2l0Y2hNYXAoKHgpID0+IHguYWNjZXNzb3Iuc3RyZWFtKCkpLFxuICAgIHNoYXJlUmVwbGF5KDEpXG4gICk7XG5cbiAgcmVhZG9ubHkgc25hcHNob3RMb2FkaW5nU3RhdGUkOiBPYnNlcnZhYmxlPExvYWRpbmdTdGF0ZTxEb2N1bWVudFNuYXBzaG90PFQ+Pj4gPSB0aGlzLmN1cnJlbnREb2N1bWVudCQucGlwZShcbiAgICBzd2l0Y2hNYXAoKCkgPT4gbG9hZGluZ1N0YXRlRnJvbU9icyh0aGlzLnNuYXBzaG90JCkpLFxuICAgIHNoYXJlUmVwbGF5KDEpXG4gICk7XG5cbiAgcmVhZG9ubHkgY3VycmVudERhdGEkOiBPYnNlcnZhYmxlPE1heWJlPERvY3VtZW50RGF0YVdpdGhJZEFuZEtleTxUPj4+ID0gdGhpcy5kb2N1bWVudCQucGlwZShcbiAgICBzd2l0Y2hNYXAoKHgpID0+IHguYWNjZXNzb3Iuc3RyZWFtKCkucGlwZShtYXAoKHkpID0+IGRvY3VtZW50RGF0YVdpdGhJZEFuZEtleSh5KSkpKSxcbiAgICBzaGFyZVJlcGxheSgxKVxuICApO1xuXG4gIHJlYWRvbmx5IGRhdGEkOiBPYnNlcnZhYmxlPERvY3VtZW50RGF0YVdpdGhJZEFuZEtleTxUPj4gPSB0aGlzLmN1cnJlbnREb2N1bWVudCQucGlwZShcbiAgICBzd2l0Y2hNYXAoKCkgPT4gdGhpcy5jdXJyZW50RGF0YSQucGlwZShmaWx0ZXJNYXliZSgpKSksXG4gICAgc2hhcmVSZXBsYXkoMSlcbiAgKTtcblxuICByZWFkb25seSBkYXRhTG9hZGluZ1N0YXRlJDogT2JzZXJ2YWJsZTxMb2FkaW5nU3RhdGU8RG9jdW1lbnREYXRhV2l0aElkQW5kS2V5PFQ+Pj4gPSB0aGlzLnNuYXBzaG90TG9hZGluZ1N0YXRlJC5waXBlKFxuICAgIG1hcCgoeCkgPT4ge1xuICAgICAgbGV0IHJlc3VsdDogTG9hZGluZ1N0YXRlPERvY3VtZW50RGF0YVdpdGhJZEFuZEtleTxUPj47XG5cbiAgICAgIGlmICh4LnZhbHVlKSB7XG4gICAgICAgIGNvbnN0IGRhdGEgPSBkb2N1bWVudERhdGFXaXRoSWRBbmRLZXkoeC52YWx1ZSk7XG5cbiAgICAgICAgaWYgKGRhdGEpIHtcbiAgICAgICAgICByZXN1bHQgPSBzdWNjZXNzUmVzdWx0KGRhdGEpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHJlc3VsdCA9IGVycm9yUmVzdWx0KG1vZGVsRG9lc05vdEV4aXN0RXJyb3IoKSk7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJlc3VsdCA9IHtcbiAgICAgICAgICAuLi54LFxuICAgICAgICAgIHZhbHVlOiB1bmRlZmluZWRcbiAgICAgICAgfTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9KSxcbiAgICBzaGFyZVJlcGxheSgxKVxuICApO1xuXG4gIC8qKlxuICAgKiBSZXR1cm5zIGZhbHNlIHdoaWxlIGhhc1JlZiQgaXMgZmFsc2UsIGFuZCB0aGVuIHJldHVybnMgZXhpc3RzJC5cbiAgICovXG4gIHJlYWRvbmx5IGN1cnJlbnRFeGlzdHMkOiBPYnNlcnZhYmxlPGJvb2xlYW4+ID0gdGhpcy5oYXNSZWYkLnBpcGUoXG4gICAgc3dpdGNoTWFwKChoYXNSZWYpID0+IHtcbiAgICAgIGlmIChoYXNSZWYpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZXhpc3RzJDtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiBvZihmYWxzZSk7XG4gICAgICB9XG4gICAgfSksXG4gICAgc2hhcmVSZXBsYXkoMSlcbiAgKTtcblxuICByZWFkb25seSBleGlzdHMkOiBPYnNlcnZhYmxlPGJvb2xlYW4+ID0gdGhpcy5jdXJyZW50RGF0YSQucGlwZShcbiAgICBtYXAoKHgpID0+IGlzTWF5YmVTbyh4KSksXG4gICAgc2hhcmVSZXBsYXkoMSlcbiAgKTtcblxuICByZWFkb25seSBkb2VzTm90RXhpc3QkOiBPYnNlcnZhYmxlPGJvb2xlYW4+ID0gdGhpcy5leGlzdHMkLnBpcGUoXG4gICAgbWFwKCh4KSA9PiAheCksXG4gICAgc2hhcmVSZXBsYXkoMSlcbiAgKTtcblxuICByZWFkb25seSBtb2RlbElkZW50aXR5JDogT2JzZXJ2YWJsZTxGaXJlc3RvcmVNb2RlbElkZW50aXR5PiA9IHRoaXMuZG9jdW1lbnQkLnBpcGUoXG4gICAgbWFwKCh4KSA9PiB4Lm1vZGVsSWRlbnRpdHkpLFxuICAgIHNoYXJlUmVwbGF5KDEpXG4gICk7XG5cbiAgLy8gTUFSSzogU3RhdGUgQ2hhbmdlc1xuICAvKipcbiAgICogU2V0cyB0aGUgaWQgb2YgdGhlIGRvY3VtZW50IHRvIGxvYWQuXG4gICAqL1xuICByZWFkb25seSBzZXRJZCA9IHRoaXMudXBkYXRlcigoc3RhdGUsIGlkOiBNYXliZTxGaXJlc3RvcmVNb2RlbElkPikgPT4gKGlkID8geyAuLi5zdGF0ZSwgaWQsIGtleTogdW5kZWZpbmVkLCByZWY6IHVuZGVmaW5lZCB9IDogeyAuLi5zdGF0ZSwgaWQgfSkpIGFzIChvYnNlcnZhYmxlT3JWYWx1ZTogTWF5YmU8c3RyaW5nPiB8IE9ic2VydmFibGU8TWF5YmU8c3RyaW5nPj4pID0+IFN1YnNjcmlwdGlvbjtcblxuICAvKipcbiAgICogU2V0cyB0aGUga2V5IG9mIHRoZSBkb2N1bWVudCB0byBsb2FkLlxuICAgKi9cbiAgcmVhZG9ubHkgc2V0S2V5ID0gdGhpcy51cGRhdGVyKChzdGF0ZSwga2V5OiBNYXliZTxGaXJlc3RvcmVNb2RlbEtleT4pID0+IChrZXkgPyB7IC4uLnN0YXRlLCBrZXksIGlkOiB1bmRlZmluZWQsIHJlZjogdW5kZWZpbmVkIH0gOiB7IC4uLnN0YXRlLCBrZXkgfSkpIGFzIChvYnNlcnZhYmxlT3JWYWx1ZTogTWF5YmU8c3RyaW5nPiB8IE9ic2VydmFibGU8TWF5YmU8c3RyaW5nPj4pID0+IFN1YnNjcmlwdGlvbjtcblxuICAvKipcbiAgICogU2V0cyB0aGUgcmVmIG9mIHRoZSBkb2N1bWVudCB0byBsb2FkLlxuICAgKi9cbiAgcmVhZG9ubHkgc2V0UmVmID0gdGhpcy51cGRhdGVyKChzdGF0ZSwgcmVmOiBNYXliZTxEb2N1bWVudFJlZmVyZW5jZTxUPj4pID0+IChyZWYgPyB7IC4uLnN0YXRlLCBrZXk6IHVuZGVmaW5lZCwgaWQ6IHVuZGVmaW5lZCwgcmVmIH0gOiB7IC4uLnN0YXRlLCByZWYgfSkpIGFzIChvYnNlcnZhYmxlT3JWYWx1ZTogTWF5YmU8RG9jdW1lbnRSZWZlcmVuY2U8VD4+IHwgT2JzZXJ2YWJsZTxNYXliZTxEb2N1bWVudFJlZmVyZW5jZTxUPj4+KSA9PiBTdWJzY3JpcHRpb247XG5cbiAgcmVhZG9ubHkgY2xlYXJSZWZzID0gdGhpcy51cGRhdGVyKChzdGF0ZSkgPT4gKHsgLi4uc3RhdGUsIGlkOiB1bmRlZmluZWQsIGtleTogdW5kZWZpbmVkLCByZWY6IHVuZGVmaW5lZCB9KSk7XG5cbiAgcmVhZG9ubHkgc2V0RmlyZXN0b3JlQ29sbGVjdGlvbiA9IHRoaXMudXBkYXRlcigoc3RhdGUsIGZpcmVzdG9yZUNvbGxlY3Rpb246IE1heWJlPEZpcmVzdG9yZUNvbGxlY3Rpb248VCwgRD4+KSA9PiAoeyAuLi5zdGF0ZSwgZmlyZXN0b3JlQ29sbGVjdGlvbiB9KSk7XG4gIHJlYWRvbmx5IHNldEZpcmVzdG9yZUNvbGxlY3Rpb25MaWtlID0gdGhpcy51cGRhdGVyKChzdGF0ZSwgZmlyZXN0b3JlQ29sbGVjdGlvbkxpa2U6IE1heWJlPEZpcmVzdG9yZUNvbGxlY3Rpb25MaWtlPFQsIEQ+PikgPT4gKHsgLi4uc3RhdGUsIGZpcmVzdG9yZUNvbGxlY3Rpb25MaWtlIH0pKTtcbn1cbiJdfQ==