angular-three 2.1.0 → 2.2.0

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.
package/esm2022/index.mjs CHANGED
@@ -16,10 +16,10 @@ export * from './lib/utils/attach';
16
16
  export * from './lib/utils/before-render';
17
17
  export * from './lib/utils/is';
18
18
  export * from './lib/utils/make';
19
- export * from './lib/utils/non-nullish';
20
19
  export * from './lib/utils/object-events';
20
+ export * from './lib/utils/output-ref';
21
21
  export * from './lib/utils/parameters';
22
22
  export * from './lib/utils/resolve-ref';
23
23
  export * from './lib/utils/signal-store';
24
24
  export * from './lib/utils/update';
25
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9saWJzL2NvcmUvc3JjL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMsY0FBYyxDQUFDO0FBQzdCLGNBQWMsdUJBQXVCLENBQUM7QUFDdEMsY0FBYyw0QkFBNEIsQ0FBQztBQUMzQyxjQUFjLFlBQVksQ0FBQztBQUMzQixjQUFjLGdCQUFnQixDQUFDO0FBQy9CLGNBQWMsY0FBYyxDQUFDO0FBQzdCLGNBQWMsWUFBWSxDQUFDO0FBQzNCLGNBQWMsb0JBQW9CLENBQUM7QUFDbkMsY0FBYyxjQUFjLENBQUM7QUFDN0IsY0FBYyxnQkFBZ0IsQ0FBQztBQUMvQixjQUFjLGFBQWEsQ0FBQztBQUM1QixjQUFjLG9CQUFvQixDQUFDO0FBQ25DLGNBQWMsYUFBYSxDQUFDO0FBQzVCLGNBQWMseUJBQXlCLENBQUM7QUFDeEMsY0FBYyxvQkFBb0IsQ0FBQztBQUNuQyxjQUFjLDJCQUEyQixDQUFDO0FBQzFDLGNBQWMsZ0JBQWdCLENBQUM7QUFDL0IsY0FBYyxrQkFBa0IsQ0FBQztBQUNqQyxjQUFjLHlCQUF5QixDQUFDO0FBQ3hDLGNBQWMsMkJBQTJCLENBQUM7QUFDMUMsY0FBYyx3QkFBd0IsQ0FBQztBQUN2QyxjQUFjLHlCQUF5QixDQUFDO0FBQ3hDLGNBQWMsMEJBQTBCLENBQUM7QUFDekMsY0FBYyxvQkFBb0IsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vbGliL2NhbnZhcyc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9kaXJlY3RpdmVzL2FyZ3MnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvZGlyZWN0aXZlcy9zZWxlY3Rpb24nO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvaHRtbCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9pbnN0YW5jZSc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9sb2FkZXInO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvbG9vcCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9waXBlcy9oZXhpZnknO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvcG9ydGFsJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL3JlbmRlcmVyJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL3Jvb3RzJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL3JvdXRlZC1zY2VuZSc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9zdG9yZSc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi91dGlscy9hcHBseS1wcm9wcyc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi91dGlscy9hdHRhY2gnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvdXRpbHMvYmVmb3JlLXJlbmRlcic7XG5leHBvcnQgKiBmcm9tICcuL2xpYi91dGlscy9pcyc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi91dGlscy9tYWtlJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL3V0aWxzL25vbi1udWxsaXNoJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL3V0aWxzL29iamVjdC1ldmVudHMnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvdXRpbHMvcGFyYW1ldGVycyc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi91dGlscy9yZXNvbHZlLXJlZic7XG5leHBvcnQgKiBmcm9tICcuL2xpYi91dGlscy9zaWduYWwtc3RvcmUnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvdXRpbHMvdXBkYXRlJztcblxuZXhwb3J0IHR5cGUgKiBmcm9tICcuL2xpYi90aHJlZS10eXBlcyc7XG5leHBvcnQgdHlwZSAqIGZyb20gJy4vbGliL3R5cGVzJztcbiJdfQ==
25
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9saWJzL2NvcmUvc3JjL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMsY0FBYyxDQUFDO0FBQzdCLGNBQWMsdUJBQXVCLENBQUM7QUFDdEMsY0FBYyw0QkFBNEIsQ0FBQztBQUMzQyxjQUFjLFlBQVksQ0FBQztBQUMzQixjQUFjLGdCQUFnQixDQUFDO0FBQy9CLGNBQWMsY0FBYyxDQUFDO0FBQzdCLGNBQWMsWUFBWSxDQUFDO0FBQzNCLGNBQWMsb0JBQW9CLENBQUM7QUFDbkMsY0FBYyxjQUFjLENBQUM7QUFDN0IsY0FBYyxnQkFBZ0IsQ0FBQztBQUMvQixjQUFjLGFBQWEsQ0FBQztBQUM1QixjQUFjLG9CQUFvQixDQUFDO0FBQ25DLGNBQWMsYUFBYSxDQUFDO0FBQzVCLGNBQWMseUJBQXlCLENBQUM7QUFDeEMsY0FBYyxvQkFBb0IsQ0FBQztBQUNuQyxjQUFjLDJCQUEyQixDQUFDO0FBQzFDLGNBQWMsZ0JBQWdCLENBQUM7QUFDL0IsY0FBYyxrQkFBa0IsQ0FBQztBQUNqQyxjQUFjLDJCQUEyQixDQUFDO0FBQzFDLGNBQWMsd0JBQXdCLENBQUM7QUFDdkMsY0FBYyx3QkFBd0IsQ0FBQztBQUN2QyxjQUFjLHlCQUF5QixDQUFDO0FBQ3hDLGNBQWMsMEJBQTBCLENBQUM7QUFDekMsY0FBYyxvQkFBb0IsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vbGliL2NhbnZhcyc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9kaXJlY3RpdmVzL2FyZ3MnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvZGlyZWN0aXZlcy9zZWxlY3Rpb24nO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvaHRtbCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9pbnN0YW5jZSc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9sb2FkZXInO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvbG9vcCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9waXBlcy9oZXhpZnknO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvcG9ydGFsJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL3JlbmRlcmVyJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL3Jvb3RzJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL3JvdXRlZC1zY2VuZSc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9zdG9yZSc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi91dGlscy9hcHBseS1wcm9wcyc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi91dGlscy9hdHRhY2gnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvdXRpbHMvYmVmb3JlLXJlbmRlcic7XG5leHBvcnQgKiBmcm9tICcuL2xpYi91dGlscy9pcyc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi91dGlscy9tYWtlJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL3V0aWxzL29iamVjdC1ldmVudHMnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvdXRpbHMvb3V0cHV0LXJlZic7XG5leHBvcnQgKiBmcm9tICcuL2xpYi91dGlscy9wYXJhbWV0ZXJzJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL3V0aWxzL3Jlc29sdmUtcmVmJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL3V0aWxzL3NpZ25hbC1zdG9yZSc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi91dGlscy91cGRhdGUnO1xuXG5leHBvcnQgdHlwZSAqIGZyb20gJy4vbGliL3RocmVlLXR5cGVzJztcbmV4cG9ydCB0eXBlICogZnJvbSAnLi9saWIvdHlwZXMnO1xuIl19
@@ -45,11 +45,11 @@ export function prepare(object, localState) {
45
45
  else {
46
46
  instance.__ngt__.instanceStore.update((prev) => ({ [type]: [...prev[type], object] }));
47
47
  }
48
- notifyAncestors(instance.__ngt__.instanceStore.snapshot.parent);
48
+ notifyAncestors(instance.__ngt__.instanceStore.snapshot.parent, type);
49
49
  },
50
50
  remove(object, type) {
51
51
  instance.__ngt__.instanceStore.update((prev) => ({ [type]: prev[type].filter((node) => node !== object) }));
52
- notifyAncestors(instance.__ngt__.instanceStore.snapshot.parent);
52
+ notifyAncestors(instance.__ngt__.instanceStore.snapshot.parent, type);
53
53
  },
54
54
  setParent(parent) {
55
55
  instance.__ngt__.instanceStore.update({ parent });
@@ -59,14 +59,14 @@ export function prepare(object, localState) {
59
59
  }
60
60
  return instance;
61
61
  }
62
- function notifyAncestors(instance) {
62
+ function notifyAncestors(instance, type) {
63
63
  if (!instance)
64
64
  return;
65
65
  const localState = getLocalState(instance);
66
66
  if (!localState)
67
67
  return;
68
- const { parent, objects, nonObjects } = localState.instanceStore.snapshot;
69
- localState.instanceStore.update({ objects: (objects || []).slice(), nonObjects: (nonObjects || []).slice() });
70
- notifyAncestors(parent);
68
+ const { parent } = localState.instanceStore.snapshot;
69
+ localState.instanceStore.update({ [type]: (localState.instanceStore.snapshot[type] || []).slice() });
70
+ notifyAncestors(parent, type);
71
71
  }
72
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5zdGFuY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9saWJzL2NvcmUvc3JjL2xpYi9pbnN0YW5jZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDbkQsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRTdDLE1BQU0sVUFBVSxhQUFhLENBQTJCLEdBQTBCO0lBQ2pGLElBQUksQ0FBQyxHQUFHO1FBQUUsT0FBTyxTQUFTLENBQUM7SUFDM0IsT0FBUSxHQUFvQixDQUFDLFNBQVMsQ0FBQyxDQUFDO0FBQ3pDLENBQUM7QUFFRCxNQUFNLFVBQVUsa0JBQWtCLENBQTJCLFFBQW1CO0lBQy9FLElBQUksS0FBSyxHQUFHLGFBQWEsQ0FBQyxRQUFRLENBQUMsRUFBRSxLQUFLLENBQUM7SUFFM0MsSUFBSSxLQUFLLEVBQUUsQ0FBQztRQUNYLE9BQU8sS0FBSyxDQUFDLFFBQVEsQ0FBQyxZQUFZLEVBQUUsQ0FBQztZQUNwQyxLQUFLLEdBQUcsS0FBSyxDQUFDLFFBQVEsQ0FBQyxZQUFZLENBQUM7UUFDckMsQ0FBQztRQUNELElBQUksS0FBSyxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsTUFBTSxLQUFLLENBQUMsRUFBRSxDQUFDO1lBQzFDLEtBQUssQ0FBQyxRQUFRLENBQUMsVUFBVSxFQUFFLENBQUM7UUFDN0IsQ0FBQztJQUNGLENBQUM7SUFFRCxXQUFXLENBQUMsUUFBUSxDQUFDLENBQUM7QUFDdkIsQ0FBQztBQUVELE1BQU0sVUFBVSxPQUFPLENBQ3RCLE1BQWlCLEVBQ2pCLFVBQW1DO0lBRW5DLE1BQU0sUUFBUSxHQUFHLE1BQStDLENBQUM7SUFFakUsSUFBSSxVQUFVLEVBQUUsU0FBUyxJQUFJLENBQUMsUUFBUSxDQUFDLE9BQU8sRUFBRSxDQUFDO1FBQ2hELE1BQU0sRUFDTCxhQUFhLEdBQUcsV0FBVyxDQUF3QjtZ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QUFDLEVBQUUsT0FBTyxFQUFFLENBQUMsT0FBTyxJQUFJLEVBQUUsQ0FBQyxDQUFDLEtBQUssRUFBRSxFQUFFLFVBQVUsRUFBRSxDQUFDLFVBQVUsSUFBSSxFQUFFLENBQUMsQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLENBQUM7SUFDOUcsZUFBZSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0FBQ3pCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBOZ3RBbnlSZWNvcmQsIE5ndEluc3RhbmNlTm9kZSwgTmd0TG9jYWxJbnN0YW5jZVN0YXRlLCBOZ3RMb2NhbFN0YXRlIH0gZnJvbSAnLi90eXBlcyc7XG5pbXBvcnQgeyBzaWduYWxTdG9yZSB9IGZyb20gJy4vdXRpbHMvc2lnbmFsLXN0b3JlJztcbmltcG9ydCB7IGNoZWNrVXBkYXRlIH0gZnJvbSAnLi91dGlscy91cGRhdGUnO1xuXG5leHBvcnQgZnVuY3Rpb24gZ2V0TG9jYWxTdGF0ZTxUSW5zdGFuY2UgZXh0ZW5kcyBvYmplY3Q+KG9iajogVEluc3RhbmNlIHwgdW5kZWZpbmVkKTogTmd0TG9jYWxTdGF0ZSB8IHVuZGVmaW5lZCB7XG5cdGlmICghb2JqKSByZXR1cm4gdW5kZWZpbmVkO1xuXHRyZXR1cm4gKG9iaiBhcyBOZ3RBbnlSZWNvcmQpWydfX25ndF9fJ107XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpbnZhbGlkYXRlSW5zdGFuY2U8VEluc3RhbmNlIGV4dGVuZHMgb2JqZWN0PihpbnN0YW5jZTogVEluc3RhbmNlKSB7XG5cdGxldCBzdG9yZSA9IGdldExvY2FsU3RhdGUoaW5zdGFuY2UpPy5zdG9yZTtcblxuXHRpZiAoc3RvcmUpIHtcblx0XHR3aGlsZSAoc3RvcmUuc25hcHNob3QucHJldmlvdXNSb290KSB7XG5cdFx0XHRzdG9yZSA9IHN0b3JlLnNuYXBzaG90LnByZXZpb3VzUm9vdDtcblx0XHR9XG5cdFx0aWYgKHN0b3JlLnNuYXBzaG90LmludGVybmFsLmZyYW1lcyA9PT0gMCkge1xuXHRcdFx0c3RvcmUuc25hcHNob3QuaW52YWxpZGF0ZSgpO1xuXHRcdH1cblx0fVxuXG5cdGNoZWNrVXBkYXRlKGluc3RhbmNlKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHByZXBhcmU8VEluc3RhbmNlIGV4dGVuZHMgb2JqZWN0ID0gTmd0QW55UmVjb3JkPihcblx0b2JqZWN0OiBUSW5zdGFuY2UsXG5cdGxvY2FsU3RhdGU/OiBQYXJ0aWFsPE5ndExvY2FsU3RhdGU+LFxuKSB7XG5cdGNvbnN0IGluc3RhbmNlID0gb2JqZWN0IGFzIHVua25vd24gYXMgTmd0SW5zdGFuY2VOb2RlPFRJbnN0YW5jZT47XG5cblx0aWYgKGxvY2FsU3RhdGU/LnByaW1pdGl2ZSB8fCAhaW5zdGFuY2UuX19uZ3RfXykge1xuXHRcdGNvbnN0IHtcblx0XHRcdGluc3RhbmNlU3RvcmUgPSBzaWduYWxTdG9yZTxOZ3RMb2NhbEluc3RhbmNlU3RhdGU+KHtcblx0XHRcdFx0cGFyZW50OiBudWxsLFxuXHRcdFx0XHRvYmplY3RzOiBbXSxcblx0XHRcdFx0bm9uT2JqZWN0czogW10sXG5cdFx0XHR9KSxcblx0XHRcdC4uLnJlc3Rcblx0XHR9ID0gbG9jYWxTdGF0ZSB8fCB7fTtcblxuXHRcdGluc3RhbmNlLl9fbmd0X18gPSB7XG5cdFx0XHRwcmV2aW91c0F0dGFjaDogbnVsbCxcblx0XHRcdHN0b3JlOiBudWxsLFxuXHRcdFx0bWVtb2l6ZWQ6IHt9LFxuXHRcdFx0ZXZlbnRDb3VudDogMCxcblx0XHRcdGhhbmRsZXJzOiB7fSxcblx0XHRcdGluc3RhbmNlU3RvcmUsXG5cdFx0XHRwYXJlbnQ6IGluc3RhbmNlU3RvcmUuc2VsZWN0KCdwYXJlbnQnKSxcblx0XHRcdG9iamVjdHM6IGluc3RhbmNlU3RvcmUuc2VsZWN0KCdvYmplY3RzJyksXG5cdFx0XHRub25PYmplY3RzOiBpbnN0YW5jZVN0b3JlLnNlbGVjdCgnbm9uT2JqZWN0cycpLFxuXHRcdFx0YWRkKG9iamVjdCwgdHlwZSkge1xuXHRcdFx0XHRjb25zdCBjdXJyZW50ID0gaW5zdGFuY2UuX19uZ3RfXy5pbnN0YW5jZVN0b3JlLnNuYXBzaG90W3R5cGVdO1xuXHRcdFx0XHRjb25zdCBmb3VuZEluZGV4ID0gY3VycmVudC5pbmRleE9mKChub2RlOiBOZ3RJbnN0YW5jZU5vZGUpID0+IG9iamVjdCA9PT0gbm9kZSk7XG5cdFx0XHRcdGlmIChmb3VuZEluZGV4ID4gLTEpIHtcblx0XHRcdFx0XHRjdXJyZW50LnNwbGljZShmb3VuZEluZGV4LCAxLCBvYmplY3QpO1xuXHRcdFx0XHRcdGluc3RhbmNlLl9fbmd0X18uaW5zdGFuY2VTdG9yZS51cGRhdGUoeyBbdHlwZV06IGN1cnJlbnQgfSk7XG5cdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0aW5zdGFuY2UuX19uZ3RfXy5pbnN0YW5jZVN0b3JlLnVwZGF0ZSgocHJldikgPT4gKHsgW3R5cGVdOiBbLi4ucHJldlt0eXBlXSwgb2JqZWN0XSB9KSk7XG5cdFx0XHRcdH1cblxuXHRcdFx0XHRub3RpZnlBbmNlc3RvcnMoaW5zdGFuY2UuX19uZ3RfXy5pbnN0YW5jZVN0b3JlLnNuYXBzaG90LnBhcmVudCk7XG5cdFx0XHR9LFxuXHRcdFx0cmVtb3ZlKG9iamVjdCwgdHlwZSkge1xuXHRcdFx0XHRpbnN0YW5jZS5fX25ndF9fLmluc3RhbmNlU3RvcmUudXBkYXRlKChwcmV2KSA9PiAoeyBbdHlwZV06IHByZXZbdHlwZV0uZmlsdGVyKChub2RlKSA9PiBub2RlICE9PSBvYmplY3QpIH0pKTtcblx0XHRcdFx0bm90aWZ5QW5jZXN0b3JzKGluc3RhbmNlLl9fbmd0X18uaW5zdGFuY2VTdG9yZS5zbmFwc2hvdC5wYXJlbnQpO1xuXHRcdFx0fSxcblx0XHRcdHNldFBhcmVudChwYXJlbnQpIHtcblx0XHRcdFx0aW5zdGFuY2UuX19uZ3RfXy5pbnN0YW5jZVN0b3JlLnVwZGF0ZSh7IHBhcmVudCB9KTtcblx0XHRcdH0sXG5cdFx0XHQuLi5yZXN0LFxuXHRcdH0gYXMgTmd0TG9jYWxTdGF0ZTtcblx0fVxuXG5cdHJldHVybiBpbnN0YW5jZTtcbn1cblxuZnVuY3Rpb24gbm90aWZ5QW5jZXN0b3JzKGluc3RhbmNlOiBOZ3RJbnN0YW5jZU5vZGUgfCBudWxsKSB7XG5cdGlmICghaW5zdGFuY2UpIHJldHVybjtcblx0Y29uc3QgbG9jYWxTdGF0ZSA9IGdldExvY2FsU3RhdGUoaW5zdGFuY2UpO1xuXHRpZiAoIWxvY2FsU3RhdGUpIHJldHVybjtcblx0Y29uc3QgeyBwYXJlbnQsIG9iamVjdHMsIG5vbk9iamVjdHMgfSA9IGxvY2FsU3RhdGUuaW5zdGFuY2VTdG9yZS5zbmFwc2hvdDtcblx0bG9jYWxTdGF0ZS5pbnN0YW5jZVN0b3JlLnVwZGF0ZSh7IG9iamVjdHM6IChvYmplY3RzIHx8IFtdKS5zbGljZSgpLCBub25PYmplY3RzOiAobm9uT2JqZWN0cyB8fCBbXSkuc2xpY2UoKSB9KTtcblx0bm90aWZ5QW5jZXN0b3JzKHBhcmVudCk7XG59XG4iXX0=
72
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5zdGFuY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9saWJzL2NvcmUvc3JjL2xpYi9pbnN0YW5jZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDbkQsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRTdDLE1BQU0sVUFBVSxhQUFhLENBQTJCLEdBQTBCO0lBQ2pGLElBQUksQ0FBQyxHQUFHO1FBQUUsT0FBTyxTQUFTLENBQUM7SUFDM0IsT0FBUSxHQUFvQixDQUFDLFNBQVMsQ0FBQyxDQUFDO0FBQ3pDLENBQUM7QUFFRCxNQUFNLFVBQVUsa0JBQWtCLENBQTJCLFFBQW1CO0lBQy9FLElBQUksS0FBSyxHQUFHLGFBQWEsQ0FBQyxRQUFRLENBQUMsRUFBRSxLQUFLLENBQUM7SUFFM0MsSUFBSSxLQUFLLEVBQUUsQ0FBQztRQUNYLE9BQU8sS0FBSyxDQUFDLFFBQVEsQ0FBQyxZQUFZLEVBQUUsQ0FBQztZQUNwQyxLQUFLLEdBQUcsS0FBSyxDQUFDLFFBQVEsQ0FBQyxZQUFZLENBQUM7UUFDckMsQ0FBQztRQUNELElBQUksS0FBSyxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsTUFBTSxLQUFLLENBQUMsRUFBRSxDQUFDO1lBQzFDLEtBQUssQ0FBQyxRQUFRLENBQUMsVUFBVSxFQUFFLENBQUM7UUFDN0IsQ0FBQztJQUNGLENBQUM7SUFFRCxXQUFXLENBQUMsUUFBUSxDQUFDLENBQUM7QUFDdkIsQ0FBQztBQUVELE1BQU0sVUFBVSxPQUFPLENBQ3RCLE1BQWlCLEVBQ2pCLFVBQW1DO0lBRW5DLE1BQU0sUUFBUSxHQUFHLE1BQStDLENBQUM7SUFFakUsSUFBSSxVQUFVLEVBQUUsU0FBUyxJQUFJLENBQUMsUUFBUSxDQUFDLE9BQU8sRUFBRSxDQUFDO1FBQ2hELE1BQU0sRUFDTCxhQUFhLEdBQUcsV0FBVyxDQUF3QjtZ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Q0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsVUFBVSxDQUFDLGFBQWEsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxDQUFDO0lBQ3JHLGVBQWUsQ0FBQyxNQUFNLEVBQUUsSUFBSSxDQUFDLENBQUM7QUFDL0IsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE5ndEFueVJlY29yZCwgTmd0SW5zdGFuY2VOb2RlLCBOZ3RMb2NhbEluc3RhbmNlU3RhdGUsIE5ndExvY2FsU3RhdGUgfSBmcm9tICcuL3R5cGVzJztcbmltcG9ydCB7IHNpZ25hbFN0b3JlIH0gZnJvbSAnLi91dGlscy9zaWduYWwtc3RvcmUnO1xuaW1wb3J0IHsgY2hlY2tVcGRhdGUgfSBmcm9tICcuL3V0aWxzL3VwZGF0ZSc7XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRMb2NhbFN0YXRlPFRJbnN0YW5jZSBleHRlbmRzIG9iamVjdD4ob2JqOiBUSW5zdGFuY2UgfCB1bmRlZmluZWQpOiBOZ3RMb2NhbFN0YXRlIHwgdW5kZWZpbmVkIHtcblx0aWYgKCFvYmopIHJldHVybiB1bmRlZmluZWQ7XG5cdHJldHVybiAob2JqIGFzIE5ndEFueVJlY29yZClbJ19fbmd0X18nXTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGludmFsaWRhdGVJbnN0YW5jZTxUSW5zdGFuY2UgZXh0ZW5kcyBvYmplY3Q+KGluc3RhbmNlOiBUSW5zdGFuY2UpIHtcblx0bGV0IHN0b3JlID0gZ2V0TG9jYWxTdGF0ZShpbnN0YW5jZSk/LnN0b3JlO1xuXG5cdGlmIChzdG9yZSkge1xuXHRcdHdoaWxlIChzdG9yZS5zbmFwc2hvdC5wcmV2aW91c1Jvb3QpIHtcblx0XHRcdHN0b3JlID0gc3RvcmUuc25hcHNob3QucHJldmlvdXNSb290O1xuXHRcdH1cblx0XHRpZiAoc3RvcmUuc25hcHNob3QuaW50ZXJuYWwuZnJhbWVzID09PSAwKSB7XG5cdFx0XHRzdG9yZS5zbmFwc2hvdC5pbnZhbGlkYXRlKCk7XG5cdFx0fVxuXHR9XG5cblx0Y2hlY2tVcGRhdGUoaW5zdGFuY2UpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcHJlcGFyZTxUSW5zdGFuY2UgZXh0ZW5kcyBvYmplY3QgPSBOZ3RBbnlSZWNvcmQ+KFxuXHRvYmplY3Q6IFRJbnN0YW5jZSxcblx0bG9jYWxTdGF0ZT86IFBhcnRpYWw8Tmd0TG9jYWxTdGF0ZT4sXG4pIHtcblx0Y29uc3QgaW5zdGFuY2UgPSBvYmplY3QgYXMgdW5rbm93biBhcyBOZ3RJbnN0YW5jZU5vZGU8VEluc3RhbmNlPjtcblxuXHRpZiAobG9jYWxTdGF0ZT8ucHJpbWl0aXZlIHx8ICFpbnN0YW5jZS5fX25ndF9fKSB7XG5cdFx0Y29uc3Qge1xuXHRcdFx0aW5zdGFuY2VTdG9yZSA9IHNpZ25hbFN0b3JlPE5ndExvY2FsSW5zdGFuY2VTdGF0ZT4oe1xuXHRcdFx0XHRwYXJlbnQ6IG51bGwsXG5cdFx0XHRcdG9iamVjdHM6IFtdLFxuXHRcdFx0XHRub25PYmplY3RzOiBbXSxcblx0XHRcdH0pLFxuXHRcdFx0Li4ucmVzdFxuXHRcdH0gPSBsb2NhbFN0YXRlIHx8IHt9O1xuXG5cdFx0aW5zdGFuY2UuX19uZ3RfXyA9IHtcblx0XHRcdHByZXZpb3VzQXR0YWNoOiBudWxsLFxuXHRcdFx0c3RvcmU6IG51bGwsXG5cdFx0XHRtZW1vaXplZDoge30sXG5cdFx0XHRldmVudENvdW50OiAwLFxuXHRcdFx0aGFuZGxlcnM6IHt9LFxuXHRcdFx0aW5zdGFuY2VTdG9yZSxcblx0XHRcdHBhcmVudDogaW5zdGFuY2VTdG9yZS5zZWxlY3QoJ3BhcmVudCcpLFxuXHRcdFx0b2JqZWN0czogaW5zdGFuY2VTdG9yZS5zZWxlY3QoJ29iamVjdHMnKSxcblx0XHRcdG5vbk9iamVjdHM6IGluc3RhbmNlU3RvcmUuc2VsZWN0KCdub25PYmplY3RzJyksXG5cdFx0XHRhZGQob2JqZWN0LCB0eXBlKSB7XG5cdFx0XHRcdGNvbnN0IGN1cnJlbnQgPSBpbnN0YW5jZS5fX25ndF9fLmluc3RhbmNlU3RvcmUuc25hcHNob3RbdHlwZV07XG5cdFx0XHRcdGNvbnN0IGZvdW5kSW5kZXggPSBjdXJyZW50LmluZGV4T2YoKG5vZGU6IE5ndEluc3RhbmNlTm9kZSkgPT4gb2JqZWN0ID09PSBub2RlKTtcblx0XHRcdFx0aWYgKGZvdW5kSW5kZXggPiAtMSkge1xuXHRcdFx0XHRcdGN1cnJlbnQuc3BsaWNlKGZvdW5kSW5kZXgsIDEsIG9iamVjdCk7XG5cdFx0XHRcdFx0aW5zdGFuY2UuX19uZ3RfXy5pbnN0YW5jZVN0b3JlLnVwZGF0ZSh7IFt0eXBlXTogY3VycmVudCB9KTtcblx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRpbnN0YW5jZS5fX25ndF9fLmluc3RhbmNlU3RvcmUudXBkYXRlKChwcmV2KSA9PiAoeyBbdHlwZV06IFsuLi5wcmV2W3R5cGVdLCBvYmplY3RdIH0pKTtcblx0XHRcdFx0fVxuXG5cdFx0XHRcdG5vdGlmeUFuY2VzdG9ycyhpbnN0YW5jZS5fX25ndF9fLmluc3RhbmNlU3RvcmUuc25hcHNob3QucGFyZW50LCB0eXBlKTtcblx0XHRcdH0sXG5cdFx0XHRyZW1vdmUob2JqZWN0LCB0eXBlKSB7XG5cdFx0XHRcdGluc3RhbmNlLl9fbmd0X18uaW5zdGFuY2VTdG9yZS51cGRhdGUoKHByZXYpID0+ICh7IFt0eXBlXTogcHJldlt0eXBlXS5maWx0ZXIoKG5vZGUpID0+IG5vZGUgIT09IG9iamVjdCkgfSkpO1xuXHRcdFx0XHRub3RpZnlBbmNlc3RvcnMoaW5zdGFuY2UuX19uZ3RfXy5pbnN0YW5jZVN0b3JlLnNuYXBzaG90LnBhcmVudCwgdHlwZSk7XG5cdFx0XHR9LFxuXHRcdFx0c2V0UGFyZW50KHBhcmVudCkge1xuXHRcdFx0XHRpbnN0YW5jZS5fX25ndF9fLmluc3RhbmNlU3RvcmUudXBkYXRlKHsgcGFyZW50IH0pO1xuXHRcdFx0fSxcblx0XHRcdC4uLnJlc3QsXG5cdFx0fSBhcyBOZ3RMb2NhbFN0YXRlO1xuXHR9XG5cblx0cmV0dXJuIGluc3RhbmNlO1xufVxuXG5mdW5jdGlvbiBub3RpZnlBbmNlc3RvcnMoaW5zdGFuY2U6IE5ndEluc3RhbmNlTm9kZSB8IG51bGwsIHR5cGU6ICdvYmplY3RzJyB8ICdub25PYmplY3RzJykge1xuXHRpZiAoIWluc3RhbmNlKSByZXR1cm47XG5cdGNvbnN0IGxvY2FsU3RhdGUgPSBnZXRMb2NhbFN0YXRlKGluc3RhbmNlKTtcblx0aWYgKCFsb2NhbFN0YXRlKSByZXR1cm47XG5cdGNvbnN0IHsgcGFyZW50IH0gPSBsb2NhbFN0YXRlLmluc3RhbmNlU3RvcmUuc25hcHNob3Q7XG5cdGxvY2FsU3RhdGUuaW5zdGFuY2VTdG9yZS51cGRhdGUoeyBbdHlwZV06IChsb2NhbFN0YXRlLmluc3RhbmNlU3RvcmUuc25hcHNob3RbdHlwZV0gfHwgW10pLnNsaWNlKCkgfSk7XG5cdG5vdGlmeUFuY2VzdG9ycyhwYXJlbnQsIHR5cGUpO1xufVxuIl19
@@ -1,5 +1,6 @@
1
1
  export const ROUTED_SCENE = '__ngt_renderer_is_routed_scene__';
2
2
  export const HTML = '__ngt_renderer_is_html';
3
+ export const NON_ROOT = '__ngt_renderer_is_non_root__';
3
4
  export const SPECIAL_INTERNAL_ADD_COMMENT = '__ngt_renderer_add_comment__';
4
5
  export const SPECIAL_DOM_TAG = {
5
6
  NGT_PORTAL: 'ngt-portal',
@@ -18,4 +19,4 @@ export const SPECIAL_EVENTS = {
18
19
  ATTACHED: 'attached',
19
20
  };
20
21
  export const THREE_NATIVE_EVENTS = ['added', 'removed', 'childadded', 'childremoved', 'disposed'];
21
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uc3RhbnRzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb3JlL3NyYy9saWIvcmVuZGVyZXIvY29uc3RhbnRzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE1BQU0sQ0FBQyxNQUFNLFlBQVksR0FBRyxrQ0FBa0MsQ0FBQztBQUMvRCxNQUFNLENBQUMsTUFBTSxJQUFJLEdBQUcsd0JBQXdCLENBQUM7QUFDN0MsTUFBTSxDQUFDLE1BQU0sNEJBQTRCLEdBQUcsOEJBQThCLENBQUM7QUFFM0UsTUFBTSxDQUFDLE1BQU0sZUFBZSxHQUFHO0lBQzlCLFVBQVUsRUFBRSxZQUFZO0lBQ3hCLGFBQWEsRUFBRSxlQUFlO0lBQzlCLFNBQVMsRUFBRSxXQUFXO0NBQ2IsQ0FBQztBQUVYLE1BQU0sQ0FBQyxNQUFNLGtCQUFrQixHQUFHO0lBQ2pDLGVBQWUsRUFBRSxVQUFVO0lBQzNCLE1BQU0sRUFBRSxRQUFRO0lBQ2hCLFNBQVMsRUFBRSxVQUFVO0lBQ3JCLFVBQVUsRUFBRSxZQUFZO0NBQ2YsQ0FBQztBQUVYLE1BQU0sQ0FBQyxNQUFNLGNBQWMsR0FBRztJQUM3QixhQUFhLEVBQUUsY0FBYztJQUM3QixPQUFPLEVBQUUsU0FBUztJQUNsQixRQUFRLEVBQUUsVUFBVTtDQUNYLENBQUM7QUFFWCxNQUFNLENBQUMsTUFBTSxtQkFBbUIsR0FBRyxDQUFDLE9BQU8sRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLGNBQWMsRUFBRSxVQUFVLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBjb25zdCBST1VURURfU0NFTkUgPSAnX19uZ3RfcmVuZGVyZXJfaXNfcm91dGVkX3NjZW5lX18nO1xuZXhwb3J0IGNvbnN0IEhUTUwgPSAnX19uZ3RfcmVuZGVyZXJfaXNfaHRtbCc7XG5leHBvcnQgY29uc3QgU1BFQ0lBTF9JTlRFUk5BTF9BRERfQ09NTUVOVCA9ICdfX25ndF9yZW5kZXJlcl9hZGRfY29tbWVudF9fJztcblxuZXhwb3J0IGNvbnN0IFNQRUNJQUxfRE9NX1RBRyA9IHtcblx0TkdUX1BPUlRBTDogJ25ndC1wb3J0YWwnLFxuXHROR1RfUFJJTUlUSVZFOiAnbmd0LXByaW1pdGl2ZScsXG5cdE5HVF9WQUxVRTogJ25ndC12YWx1ZScsXG59IGFzIGNvbnN0O1xuXG5leHBvcnQgY29uc3QgU1BFQ0lBTF9QUk9QRVJUSUVTID0ge1xuXHRSRU5ERVJfUFJJT1JJVFk6ICdwcmlvcml0eScsXG5cdEFUVEFDSDogJ2F0dGFjaCcsXG5cdFJBV19WQUxVRTogJ3Jhd1ZhbHVlJyxcblx0UEFSQU1FVEVSUzogJ3BhcmFtZXRlcnMnLFxufSBhcyBjb25zdDtcblxuZXhwb3J0IGNvbnN0IFNQRUNJQUxfRVZFTlRTID0ge1xuXHRCRUZPUkVfUkVOREVSOiAnYmVmb3JlUmVuZGVyJyxcblx0VVBEQVRFRDogJ3VwZGF0ZWQnLFxuXHRBVFRBQ0hFRDogJ2F0dGFjaGVkJyxcbn0gYXMgY29uc3Q7XG5cbmV4cG9ydCBjb25zdCBUSFJFRV9OQVRJVkVfRVZFTlRTID0gWydhZGRlZCcsICdyZW1vdmVkJywgJ2NoaWxkYWRkZWQnLCAnY2hpbGRyZW1vdmVkJywgJ2Rpc3Bvc2VkJ107XG4iXX0=
22
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uc3RhbnRzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb3JlL3NyYy9saWIvcmVuZGVyZXIvY29uc3RhbnRzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE1BQU0sQ0FBQyxNQUFNLFlBQVksR0FBRyxrQ0FBa0MsQ0FBQztBQUMvRCxNQUFNLENBQUMsTUFBTSxJQUFJLEdBQUcsd0JBQXdCLENBQUM7QUFDN0MsTUFBTSxDQUFDLE1BQU0sUUFBUSxHQUFHLDhCQUE4QixDQUFDO0FBQ3ZELE1BQU0sQ0FBQyxNQUFNLDRCQUE0QixHQUFHLDhCQUE4QixDQUFDO0FBRTNFLE1BQU0sQ0FBQyxNQUFNLGVBQWUsR0FBRztJQUM5QixVQUFVLEVBQUUsWUFBWTtJQUN4QixhQUFhLEVBQUUsZUFBZTtJQUM5QixTQUFTLEVBQUUsV0FBVztDQUNiLENBQUM7QUFFWCxNQUFNLENBQUMsTUFBTSxrQkFBa0IsR0FBRztJQUNqQyxlQUFlLEVBQUUsVUFBVTtJQUMzQixNQUFNLEVBQUUsUUFBUTtJQUNoQixTQUFTLEVBQUUsVUFBVTtJQUNyQixVQUFVLEVBQUUsWUFBWTtDQUNmLENBQUM7QUFFWCxNQUFNLENBQUMsTUFBTSxjQUFjLEdBQUc7SUFDN0IsYUFBYSxFQUFFLGNBQWM7SUFDN0IsT0FBTyxFQUFFLFNBQVM7SUFDbEIsUUFBUSxFQUFFLFVBQVU7Q0FDWCxDQUFDO0FBRVgsTUFBTSxDQUFDLE1BQU0sbUJBQW1CLEdBQUcsQ0FBQyxPQUFPLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxjQUFjLEVBQUUsVUFBVSxDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgY29uc3QgUk9VVEVEX1NDRU5FID0gJ19fbmd0X3JlbmRlcmVyX2lzX3JvdXRlZF9zY2VuZV9fJztcbmV4cG9ydCBjb25zdCBIVE1MID0gJ19fbmd0X3JlbmRlcmVyX2lzX2h0bWwnO1xuZXhwb3J0IGNvbnN0IE5PTl9ST09UID0gJ19fbmd0X3JlbmRlcmVyX2lzX25vbl9yb290X18nO1xuZXhwb3J0IGNvbnN0IFNQRUNJQUxfSU5URVJOQUxfQUREX0NPTU1FTlQgPSAnX19uZ3RfcmVuZGVyZXJfYWRkX2NvbW1lbnRfXyc7XG5cbmV4cG9ydCBjb25zdCBTUEVDSUFMX0RPTV9UQUcgPSB7XG5cdE5HVF9QT1JUQUw6ICduZ3QtcG9ydGFsJyxcblx0TkdUX1BSSU1JVElWRTogJ25ndC1wcmltaXRpdmUnLFxuXHROR1RfVkFMVUU6ICduZ3QtdmFsdWUnLFxufSBhcyBjb25zdDtcblxuZXhwb3J0IGNvbnN0IFNQRUNJQUxfUFJPUEVSVElFUyA9IHtcblx0UkVOREVSX1BSSU9SSVRZOiAncHJpb3JpdHknLFxuXHRBVFRBQ0g6ICdhdHRhY2gnLFxuXHRSQVdfVkFMVUU6ICdyYXdWYWx1ZScsXG5cdFBBUkFNRVRFUlM6ICdwYXJhbWV0ZXJzJyxcbn0gYXMgY29uc3Q7XG5cbmV4cG9ydCBjb25zdCBTUEVDSUFMX0VWRU5UUyA9IHtcblx0QkVGT1JFX1JFTkRFUjogJ2JlZm9yZVJlbmRlcicsXG5cdFVQREFURUQ6ICd1cGRhdGVkJyxcblx0QVRUQUNIRUQ6ICdhdHRhY2hlZCcsXG59IGFzIGNvbnN0O1xuXG5leHBvcnQgY29uc3QgVEhSRUVfTkFUSVZFX0VWRU5UUyA9IFsnYWRkZWQnLCAncmVtb3ZlZCcsICdjaGlsZGFkZGVkJywgJ2NoaWxkcmVtb3ZlZCcsICdkaXNwb3NlZCddO1xuIl19
@@ -7,7 +7,7 @@ import { applyProps } from '../utils/apply-props';
7
7
  import { is } from '../utils/is';
8
8
  import { signalStore } from '../utils/signal-store';
9
9
  import { injectCatalogue } from './catalogue';
10
- import { HTML, ROUTED_SCENE, SPECIAL_DOM_TAG, SPECIAL_INTERNAL_ADD_COMMENT, SPECIAL_PROPERTIES } from './constants';
10
+ import { HTML, NON_ROOT, ROUTED_SCENE, SPECIAL_DOM_TAG, SPECIAL_INTERNAL_ADD_COMMENT, SPECIAL_PROPERTIES, } from './constants';
11
11
  import { addChild, createNode, getClosestParentWithInstance, isDOM, removeChild, setParent, } from './state';
12
12
  import { attachThreeChild, kebabToPascal, processThreeEvent, removeThreeChild } from './utils';
13
13
  import * as i0 from "@angular/core";
@@ -33,11 +33,12 @@ export class NgtRendererFactory {
33
33
  if (type['type'][ROUTED_SCENE]) {
34
34
  this.routedSet.add(type.id);
35
35
  }
36
+ const isNonRoot = type['type'][NON_ROOT];
36
37
  let renderer = this.rendererMap.get(type.id);
37
38
  if (!renderer) {
38
39
  this.rendererMap.set(type.id, (renderer = new NgtRenderer(delegateRenderer, this.rootStore, this.document, this.portalCommentsNodes, this.catalogue,
39
40
  // setting root scene if there's no routed scene OR this component is the routed Scene
40
- !hostElement && (this.routedSet.size === 0 || this.routedSet.has(type.id)))));
41
+ !hostElement && !isNonRoot && (this.routedSet.size === 0 || this.routedSet.has(type.id)))));
41
42
  }
42
43
  return renderer;
43
44
  }
@@ -544,5 +545,5 @@ export function provideNgtRenderer(store) {
544
545
  return makeEnvironmentProviders(providers);
545
546
  }
546
547
  export { extend } from './catalogue';
547
- export { HTML, ROUTED_SCENE } from './constants';
548
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvcmUvc3JjL2xpYi9yZW5kZXJlci9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDM0MsT0FBTyxFQUNOLFNBQVMsRUFDVCxVQUFVLEVBRVYsZ0JBQWdCLEVBRWhCLE1BQU0sRUFDTix3QkFBd0IsRUFDeEIsU0FBUyxHQUNULE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUM3QyxPQUFPLEVBQUUsYUFBYSxFQUFFLE9BQU8sRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUNyRCxPQUFPLEVBQUUsU0FBUyxFQUFFLFdBQVcsRUFBRSxZQUFZLEVBQUUsTUFBTSxVQUFVLENBQUM7QUFFaEUsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ2xELE9BQU8sRUFBRSxFQUFFLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDakMsT0FBTyxFQUFrQixXQUFXLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUNwRSxPQUFPLEVBQXFCLGVBQWUsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUNqRSxPQUFPLEVBQUUsSUFBSSxFQUFFLFlBQVksRUFBRSxlQUFlLEVBQUUsNEJBQTRCLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDcEgsT0FBTyxFQUdOLFFBQVEsRUFDUixVQUFVLEVBQ1YsNEJBQTRCLEVBQzVCLEtBQUssRUFDTCxXQUFXLEVBQ1gsU0FBUyxHQUNULE1BQU0sU0FBUyxDQUFDO0FBQ2pCLE9BQU8sRUFBc0IsZ0JBQWdCLEVBQUUsYUFBYSxFQUFFLGlCQUFpQixFQUFFLGdCQUFnQixFQUFFLE1BQU0sU0FBUyxDQUFDOztBQUduSCxNQUFNLE9BQU8sa0JBQWtCO0lBRC9CO1FBRVMsNEJBQXVC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QGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7XG5cdERlYnVnTm9kZSxcblx0SW5qZWN0YWJsZSxcblx0UmVuZGVyZXIyLFxuXHRSZW5kZXJlckZhY3RvcnkyLFxuXHRSZW5kZXJlclR5cGUyLFxuXHRpbmplY3QsXG5cdG1ha2VFbnZpcm9ubWVudFByb3ZpZGVycyxcblx0dW50cmFja2VkLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE5ndEFyZ3MgfSBmcm9tICcuLi9kaXJlY3RpdmVzL2FyZ3MnO1xuaW1wb3J0IHsgZ2V0TG9jYWxTdGF0ZSwgcHJlcGFyZSB9IGZyb20gJy4uL2luc3RhbmNlJztcbmltcG9ydCB7IE5HVF9TVE9SRSwgaW5qZWN0U3RvcmUsIHByb3ZpZGVTdG9yZSB9IGZyb20gJy4uL3N0b3JlJztcbmltcG9ydCB7IE5ndEFueVJlY29yZCwgTmd0SW5zdGFuY2VOb2RlLCBOZ3RMb2NhbFN0YXRlLCBOZ3RTdGF0ZSB9IGZyb20gJy4uL3R5cGVzJztcbmltcG9ydCB7IGFwcGx5UHJvcHMgfSBmcm9tICcuLi91dGlscy9hcHBseS1wcm9wcyc7XG5pbXBvcnQgeyBpcyB9IGZyb20gJy4uL3V0aWxzL2lzJztcbmltcG9ydCB7IE5ndFNpZ25hbFN0b3JlLCBzaWduYWxTdG9yZSB9IGZyb20gJy4uL3V0aWxzL3NpZ25hbC1zdG9yZSc7XG5pbXBvcnQgeyBOZ3RBbnlDb25zdHJ1Y3RvciwgaW5qZWN0Q2F0YWxvZ3VlIH0gZnJvbSAnLi9jYXRhbG9ndWUnO1xuaW1wb3J0IHsgSFRNTCwgUk9VVEVEX1NDRU5FLCBTUEVDSUFMX0RPTV9UQUcsIFNQRUNJQUxfSU5URVJOQUxfQUREX0NPTU1FTlQsIFNQRUNJQUxfUFJPUEVSVElFUyB9IGZyb20gJy4vY29uc3RhbnRzJztcbmltcG9ydCB7XG5cdE5ndFJlbmRlcmVyTm9kZSxcblx0Tmd0UmVuZGVyZXJTdGF0ZSxcblx0YWRkQ2hpbGQsXG5cdGNyZWF0ZU5vZGUsXG5cdGdldENsb3Nlc3RQYXJlbnRXaXRoSW5zdGFuY2UsXG5cdGlzRE9NLFxuXHRyZW1vdmVDaGlsZCxcblx0c2V0UGFyZW50LFxufSBmcm9tICcuL3N0YXRlJztcbmltcG9ydCB7IE5ndFJlbmRlcmVyQ2xhc3NJZCwgYXR0YWNoVGhyZWVDaGlsZCwga2ViYWJUb1Bhc2NhbCwgcHJvY2Vzc1RocmVlRXZlbnQsIHJlbW92ZVRocmVlQ2hpbGQgfSBmcm9tICcuL3V0aWxzJztcblxuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIE5ndFJlbmRlcmVyRmFjdG9yeSBpbXBsZW1lbnRzIFJlbmRlcmVyRmFjdG9yeTIge1xuXHRwcml2YXRlIGRlbGVnYXRlUmVuZGVyZXJGYWN0b3J5ID0gaW5qZWN0KFJlbmRlcmVyRmFjdG9yeTIsIHsgc2tpcFNlbGY6IHRydWUgfSk7XG5cdHByaXZhdGUgZG9jdW1lbnQgPSBpbmplY3QoRE9DVU1FTlQpO1xuXHRwcml2YXRlIGNhdGFsb2d1ZSA9IGluamVjdENhdGFsb2d1ZSgpO1xuXHRwcml2YXRlIHJvb3RTdG9yZSA9IGluamVjdFN0b3JlKCk7XG5cblx0cHJpdmF0ZSBwb3J0YWxDb21tZW50c05vZGVzOiBBcnJheTxOZ3RSZW5kZXJlck5vZGU+ID0gW107XG5cdHByaXZhdGUgcmVuZGVyZXJNYXAgPSBuZXcgTWFwPHN0cmluZywgUmVuZGVyZXIyPigpO1xuXHRwcml2YXRlIHJvdXRlZFNldCA9IG5ldyBTZXQ8c3RyaW5nPigpO1xuXG5cdGNyZWF0ZVJlbmRlcmVyKGhvc3RFbGVtZW50OiBhbnksIHR5cGU6IFJlbmRlcmVyVHlwZTIgfCBudWxsKTogUmVuZGVyZXIyIHtcblx0XHRjb25zdCBkZWxlZ2F0ZVJlbmRlcmVyID0gdGhpcy5kZWxlZ2F0ZVJlbmRlcmVyRmFjdG9yeS5jcmVhdGVSZW5kZXJlcihob3N0RWxlbWVudCwgdHlwZSk7XG5cblx0XHRpZiAoIXR5cGUpIHJldHVybiBkZWxlZ2F0ZVJlbmRlcmVyO1xuXG5cdFx0Ly8gTk9URTogbWlnaHQgbmVlZCB0byByZXZpc2l0IHRoaXNcblx0XHRpZiAoKHR5cGUgYXMgTmd0QW55UmVjb3JkKVsndHlwZSddW0hUTUxdKSB7XG5cdFx0XHR0aGlzLnJlbmRlcmVyTWFwLnNldCh0eXBlLmlkLCBkZWxlZ2F0ZVJlbmRlcmVyKTtcblx0XHRcdHJldHVybiBkZWxlZ2F0ZVJlbmRlcmVyO1xuXHRcdH1cblxuXHRcdGlmICgodHlwZSBhcyBOZ3RBbnlSZWNvcmQpWyd0eXBlJ11bUk9VVEVEX1NDRU5FXSkge1xuXHRcdFx0dGhpcy5yb3V0ZWRTZXQuYWRkKHR5cGUuaWQpO1xuXHRcdH1cblxuXHRcdGxldCByZW5kZXJlciA9IHRoaXMucmVuZGVyZXJNYXAuZ2V0KHR5cGUuaWQpO1xuXHRcdGlmICghcmVuZGVyZXIpIHtcblx0XHRcdHRoaXMucmVuZGVyZXJNYXAuc2V0KFxuXHRcdFx0XHR0eXBlLmlkLFxuXHRcdFx0XHQocmVuZGVyZXIgPSBuZXcgTmd0UmVuZGVyZXIoXG5cdFx0XHRcdFx0ZGVsZWdhdGVSZW5kZXJlcixcblx0XHRcdFx0XHR0aGlzLnJvb3RTdG9yZSxcblx0XHRcdFx0XHR0aGlzLmRvY3VtZW50LFxuXHRcdFx0XHRcdHRoaXMucG9ydGFsQ29tbWVudHNOb2Rlcyxcblx0XHRcdFx0XHR0aGlzLmNhdGFsb2d1ZSxcblx0XHRcdFx0XHQvLyBzZXR0aW5nIHJvb3Qgc2NlbmUgaWYgdGhlcmUncyBubyByb3V0ZWQgc2NlbmUgT1IgdGhpcyBjb21wb25lbnQgaXMgdGhlIHJvdXRlZCBTY2VuZVxuXHRcdFx0XHRcdCFob3N0RWxlbWVudCAmJiAodGhpcy5yb3V0ZWRTZXQuc2l6ZSA9PT0gMCB8fCB0aGlzLnJvdXRlZFNldC5oYXModHlwZS5pZCkpLFxuXHRcdFx0XHQpKSxcblx0XHRcdCk7XG5cdFx0fVxuXHRcdHJldHVybiByZW5kZXJlcjtcblx0fVxufVxuXG5leHBvcnQgY2xhc3MgTmd0UmVuZGVyZXIgaW1wbGVtZW50cyBSZW5kZXJlcjIge1xuXHRwcml2YXRlIGFyZ3NDb21tZW50Tm9kZXM6IEFycmF5PE5ndFJlbmRlcmVyTm9kZT4gPSBbXTtcblxuXHRjb25zdHJ1Y3Rvcihcblx0XHRwcml2YXRlIGRlbGVnYXRlOiBSZW5kZXJlcjIsXG5cdFx0cHJpdmF0ZSByb290U3RvcmU6IE5ndFNpZ25hbFN0b3JlPE5ndFN0YXRlPixcblx0XHRwcml2YXRlIGRvY3VtZW50OiBEb2N1bWVudCxcblx0XHRwcml2YXRlIHBvcnRhbENvbW1lbnRzTm9kZXM6IEFycmF5PE5ndFJlbmRlcmVyTm9kZT4sXG5cdFx0cHJpdmF0ZSBjYXRhbG9ndWU6IFJlY29yZDxzdHJpbmcsIE5ndEFueUNvbnN0cnVjdG9yPixcblx0XHRwcml2YXRlIGlzUm9vdCA9IHRydWUsXG5cdCkge31cblxuXHRjcmVhdGVFbGVtZW50KG5hbWU6IHN0cmluZywgbmFtZXNwYWNlPzogc3RyaW5nIHwgbnVsbCB8IHVuZGVmaW5lZCkge1xuXHRcdGNvbnN0IGVsZW1lbnQgPSB0aGlzLmRlbGVnYXRlLmNyZWF0ZUVsZW1lbnQobmFtZSwgbmFtZXNwYWNlKTtcblxuXHRcdC8vIGlmIHRoZXJlJ3MgbmFtZXNwYWNlLCB3ZSBkb24ndCBkbyBhbnl0aGluZ1xuXHRcdGlmIChuYW1lc3BhY2UpIHtcblx0XHRcdHJldHVybiBjcmVhdGVOb2RlKCdkb20nLCBlbGVtZW50LCB0aGlzLmRvY3VtZW50KTtcblx0XHR9XG5cblx0XHQvLyBvbiBmaXJzdCBwYXNzLCB3ZSByZXR1cm4gdGhlIFJvb3QgU2NlbmUgYXMgdGhlIHJvb3Qgbm9kZVxuXHRcdGlmICh0aGlzLmlzUm9vdCkge1xuXHRcdFx0dGhpcy5pc1Jvb3QgPSBmYWxzZTtcblx0XHRcdGNvbnN0IG5vZGUgPSBjcmVhdGVOb2RlKCd0aHJlZScsIHRoaXMucm9vdFN0b3JlLnNuYXBzaG90LnNjZW5lLCB0aGlzLmRvY3VtZW50KTtcblx0XHRcdG5vZGUuX19uZ3RfcmVuZGVyZXJfX1tOZ3RSZW5kZXJlckNsYXNzSWQuZGVidWdOb2RlRmFjdG9yeV0gPSAoKSA9PiB7XG5cdFx0XHRcdGlmICghbm9kZS5fX25ndF9yZW5kZXJlcl9fW05ndFJlbmRlcmVyQ2xhc3NJZC5kZWJ1Z05vZGVdKSB7XG5cdFx0XHRcdFx0bm9kZS5fX25ndF9yZW5kZXJlcl9fW05ndFJlbmRlcmVyQ2xhc3NJZC5kZWJ1Z05vZGVdID0gbmV3IERlYnVnTm9kZShlbGVtZW50KTtcblx0XHRcdFx0fVxuXHRcdFx0XHRyZXR1cm4gbm9kZS5fX25ndF9yZW5kZXJlcl9fW05ndFJlbmRlcmVyQ2xhc3NJZC5kZWJ1Z05vZGVdO1xuXHRcdFx0fTtcblx0XHRcdHJldHVybiBub2RlO1xuXHRcdH1cblxuXHRcdGlmIChuYW1lID09PSBTUEVDSUFMX0RPTV9UQUcuTkdUX1BPUlRBTCkge1xuXHRcdFx0cmV0dXJuIGNyZWF0ZU5vZGUoJ3BvcnRhbCcsIGVsZW1lbnQsIHRoaXMuZG9jdW1lbnQpO1xuXHRcdH1cblxuXHRcdGlmIChuYW1lID09PSBTUEVDSUFMX0RPTV9UQUcuTkdUX1ZBTFVFKSB7XG5cdFx0XHRjb25zdCBpbnN0YW5jZVN0b3JlID0gc2lnbmFsU3RvcmUoeyBwYXJlbnQ6IG51bGwsIG9iamVjdHM6IFtdLCBub25PYmplY3RzOiBbXSB9KTtcblx0XHRcdHJldHVybiBjcmVhdGVOb2RlKFxuXHRcdFx0XHQndGhyZWUnLFxuXHRcdFx0XHRPYmplY3QuYXNzaWduKFxuXHRcdFx0XHRcdHsgX19uZ3RfcmVuZGVyZXJfXzogeyByYXdWYWx1ZTogdW5kZWZpbmVkIH0gfSxcblx0XHRcdFx0XHQvLyBOT1RFOiB3ZSBhc3NpZ24gdGhpcyBtYW51YWxseSB0byBhIHJhdyB2YWx1ZSBub2RlXG5cdFx0XHRcdFx0Ly8gYmVjYXVzZSB3ZSBzYXkgaXQgaXMgYSAndGhyZWUnIG5vZGUgYnV0IHdlJ3JlIG5vdCB1c2luZyBwcmVwYXJlKClcblx0XHRcdFx0XHR7XG5cdFx0XHRcdFx0XHRfX25ndF9fOiB7XG5cdFx0XHRcdFx0XHRcdGlzUmF3OiB0cnVlLFxuXHRcdFx0XHRcdFx0XHRpbnN0YW5jZVN0b3JlLFxuXHRcdFx0XHRcdFx0XHRzZXRQYXJlbnQocGFyZW50OiBOZ3RJbnN0YW5jZU5vZGUpIHtcblx0XHRcdFx0XHRcdFx0XHRpbnN0YW5jZVN0b3JlLnVwZGF0ZSh7IHBhcmVudCB9KTtcblx0XHRcdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0fSxcblx0XHRcdFx0KSxcblx0XHRcdFx0dGhpcy5kb2N1bWVudCxcblx0XHRcdCk7XG5cdFx0fVxuXG5cdFx0Y29uc3QgW2luamVjdGVkQXJnc10gPSBbdGhpcy5nZXROZ3RBcmdzKCk/LnZhbHVlIHx8IFtdXTtcblxuXHRcdGlmIChuYW1lID09PSBTUEVDSUFMX0RPTV9UQUcuTkdUX1BSSU1JVElWRSkge1xuXHRcdFx0aWYgKCFpbmplY3RlZEFyZ3NbMF0pIHRocm93IG5ldyBFcnJvcihgW05HVF0gbmd0LXByaW1pdGl2ZSB3aXRob3V0IGFyZ3MgaXMgaW52YWxpZGApO1xuXHRcdFx0Y29uc3Qgb2JqZWN0ID0gaW5qZWN0ZWRBcmdzWzBdO1xuXHRcdFx0Y29uc3QgbG9jYWxTdGF0ZSA9IGdldExvY2FsU3RhdGUob2JqZWN0KTtcblx0XHRcdGlmICghbG9jYWxTdGF0ZSkge1xuXHRcdFx0XHQvLyBOT1RFOiBpZiBhbiBvYmplY3QgaXNuJ3QgYWxyZWFkeSBcInByZXBhcmVkXCIsIHdlIHByZXBhcmUgaXRcblx0XHRcdFx0cHJlcGFyZShvYmplY3QsIHsgc3RvcmU6IHRoaXMucm9vdFN0b3JlLCBwcmltaXRpdmU6IHRydWUgfSk7XG5cdFx0XHR9XG5cdFx0XHRyZXR1cm4gY3JlYXRlTm9kZSgndGhyZWUnLCBvYmplY3QsIHRoaXMuZG9jdW1lbnQpO1xuXHRcdH1cblxuXHRcdGNvbnN0IHRocmVlTmFtZSA9IGtlYmFiVG9QYXNjYWwobmFtZS5zdGFydHNXaXRoKCduZ3QtJykgPyBuYW1lLnNsaWNlKDQpIDogbmFtZSk7XG5cdFx0Y29uc3QgdGhyZWVUYXJnZXQgPSB0aGlzLmNhdGFsb2d1ZVt0aHJlZU5hbWVdO1xuXG5cdFx0Ly8gd2UgaGF2ZSB0aGUgVEhSRUUgY29uc3RydWN0b3IgaGVyZSwgaGFuZGxlIGl0XG5cdFx0aWYgKHRocmVlVGFyZ2V0KSB7XG5cdFx0XHRjb25zdCBpbnN0YW5jZSA9IHByZXBhcmUobmV3IHRocmVlVGFyZ2V0KC4uLmluamVjdGVkQXJncyksIHsgc3RvcmU6IHRoaXMucm9vdFN0b3JlIH0pO1xuXHRcdFx0Y29uc3Qgbm9kZSA9IGNyZWF0ZU5vZGUoJ3RocmVlJywgaW5zdGFuY2UsIHRoaXMuZG9jdW1lbnQpO1xuXHRcdFx0Y29uc3QgbG9jYWxTdGF0ZSA9IGdldExvY2FsU3RhdGUoaW5zdGFuY2UpIGFzIE5ndExvY2FsU3RhdGU7XG5cblx0XHRcdC8vIGF1dG8tYXR0YWNoIGZvciBnZW9tZXRyeSBhbmQgbWF0ZXJpYWxcblx0XHRcdGlmIChpcy5nZW9tZXRyeShpbnN0YW5jZSkpIHtcblx0XHRcdFx0bG9jYWxTdGF0ZS5hdHRhY2ggPSBbJ2dlb21ldHJ5J107XG5cdFx0XHR9IGVsc2UgaWYgKGlzLm1hdGVyaWFsKGluc3RhbmNlKSkge1xuXHRcdFx0XHRsb2NhbFN0YXRlLmF0dGFjaCA9IFsnbWF0ZXJpYWwnXTtcblx0XHRcdH1cblxuXHRcdFx0cmV0dXJuIG5vZGU7XG5cdFx0fVxuXG5cdFx0cmV0dXJuIGNyZWF0ZU5vZGUoJ2RvbScsIGVsZW1lbnQsIHRoaXMuZG9jdW1lbnQpO1xuXHR9XG5cblx0Y3JlYXRlQ29tbWVudCh2YWx1ZTogc3RyaW5nKSB7XG5cdFx0Y29uc3QgY29tbWVudCA9IHRoaXMuZGVsZWdhdGUuY3JlYXRlQ29tbWVudCh2YWx1ZSk7XG5cblx0XHQvLyBOT1RFOiB3ZSBhdHRhY2ggYW4gYXJyb3cgZnVuY3Rpb24gdG8gdGhlIENvbW1lbnQgbm9kZVxuXHRcdC8vIEluIG91ciBkaXJlY3RpdmVzLCB3ZSBjYW4gY2FsbCB0aGlzIGZ1bmN0aW9uIHRvIHRoZW4gc3RhcnQgdHJhY2tpbmcgdGhlIFJlbmRlcmVyTm9kZVxuXHRcdC8vIHRoaXMgaXMgZG9uZSB0byBsaW1pdCB0aGUgYW1vdW50IG9mIE5vZGVzIHdlIG5lZWQgdG8gcHJvY2VzcyBmb3IgZ2V0Q3JlYXRpb25TdGF0ZVxuXHRcdGNvbW1lbnRbU1BFQ0lBTF9JTlRFUk5BTF9BRERfQ09NTUVOVF0gPSAobm9kZTogTmd0UmVuZGVyZXJOb2RlIHwgJ2FyZ3MnKSA9PiB7XG5cdFx0XHRpZiAobm9kZSA9PT0gJ2FyZ3MnKSB7XG5cdFx0XHRcdHRoaXMuYXJnc0NvbW1lbnROb2Rlcy5wdXNoKGNvbW1lbnQpO1xuXHRcdFx0fSBlbHNlIGlmICh0eXBlb2Ygbm9kZSA9PT0gJ29iamVjdCcpIHtcblx0XHRcdFx0dGhpcy5wb3J0YWxDb21tZW50c05vZGVzLnB1c2gobm9kZSk7XG5cdFx0XHR9XG5cdFx0fTtcblxuXHRcdHJldHVybiBjcmVhdGVOb2RlKCdjb21tZW50JywgY29tbWVudCwgdGhpcy5kb2N1bWVudCk7XG5cdH1cblxuXHRhcHBlbmRDaGlsZChwYXJlbnQ6IE5ndFJlbmRlcmVyTm9kZSwgbmV3Q2hpbGQ6IE5ndFJlbmRlcmVyTm9kZSk6IHZvaWQge1xuXHRcdGNvbnN0IHBSUyA9IHBhcmVudC5fX25ndF9yZW5kZXJlcl9fO1xuXHRcdGNvbnN0IGNSUyA9IG5ld0NoaWxkLl9fbmd0X3JlbmRlcmVyX187XG5cblx0XHRpZiAoXG5cdFx0XHRwUlNbTmd0UmVuZGVyZXJDbGFzc0lkLnR5cGVdID09PSAnZG9tJyAmJlxuXHRcdFx0KG5ld0NoaWxkIGluc3RhbmNlb2YgVGV4dCB8fCBjUlNbTmd0UmVuZGVyZXJDbGFzc0lkLnR5cGVdID09PSAnZG9tJylcblx0XHQpIHtcblx0XHRcdGFkZENoaWxkKHBhcmVudCwgbmV3Q2hpbGQpO1xuXG5cdFx0XHRpZiAobmV3Q2hpbGRbJ19fbmd0X2RvbV9wYXJlbnRfXyddICYmIG5ld0NoaWxkWydfX25ndF9kb21fcGFyZW50X18nXSBpbnN0YW5jZW9mIEhUTUxFbGVtZW50KSB7XG5cdFx0XHRcdHRoaXMuZGVsZWdhdGUuYXBwZW5kQ2hpbGQobmV3Q2hpbGRbJ19fbmd0X2RvbV9wYXJlbnRfXyddLCBuZXdDaGlsZCk7XG5cdFx0XHRcdHJldHVybjtcblx0XHRcdH1cblxuXHRcdFx0dGhpcy5kZWxlZ2F0ZS5hcHBlbmRDaGlsZChwYXJlbnQsIG5ld0NoaWxkKTtcblx0XHRcdGlmIChjUlMpIHtcblx0XHRcdFx0c2V0UGFyZW50KG5ld0NoaWxkLCBwYXJlbnQpO1xuXHRcdFx0XHRpZiAodGhpcy5zaG91bGRGaW5kR3JhbmRwYXJlbnRJbnN0YW5jZShwUlMsIGNSUywgbmV3Q2hpbGQpKSB7XG5cdFx0XHRcdFx0Ly8gd2UnbGwgdHJ5IHRvIGdldCB0aGUgZ3JhbmRwYXJlbnQgaW5zdGFuY2UgaGVyZSBzbyB0aGF0IHdlIGNhbiBydW4gYXBwZW5kQ2hpbGQgd2l0aCBib3RoIGluc3RhbmNlc1xuXHRcdFx0XHRcdGNvbnN0IGNsb3Nlc3RHcmFuZHBhcmVudEluc3RhbmNlID0gZ2V0Q2xvc2VzdFBhcmVudFdpdGhJbnN0YW5jZShwYXJlbnQpO1xuXHRcdFx0XHRcdGlmIChjbG9zZXN0R3JhbmRwYXJlbnRJbnN0YW5jZSkgdGhpcy5hcHBlbmRDaGlsZChjbG9zZXN0R3JhbmRwYXJlbnRJbnN0YW5jZSwgbmV3Q2hpbGQpO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cblx0XHRcdHJldHVybjtcblx0XHR9XG5cblx0XHRpZiAoY1JTPy5bTmd0UmVuZGVyZXJDbGFzc0lkLnR5cGVdID09PSAnY29tbWVudCcpIHtcblx0XHRcdHNldFBhcmVudChuZXdDaGlsZCwgcGFyZW50KTtcblx0XHRcdHJldHVybjtcblx0XHR9XG5cblx0XHRzZXRQYXJlbnQobmV3Q2hpbGQsIHBhcmVudCk7XG5cdFx0YWRkQ2hpbGQocGFyZW50LCBuZXdDaGlsZCk7XG5cblx0XHQvLyBpZiBuZXcgY2hpbGQgaXMgYSBwb3J0YWxcblx0XHRpZiAoY1JTPy5bTmd0UmVuZGVyZXJDbGFzc0lkLnR5cGVdID09PSAncG9ydGFsJykge1xuXHRcdFx0aWYgKCFjUlNbTmd0UmVuZGVyZXJDbGFzc0lkLnBvcnRhbENvbnRhaW5lcl0pIHRoaXMucHJvY2Vzc1BvcnRhbENvbnRhaW5lcihuZXdDaGlsZCk7XG5cdFx0XHRpZiAoY1JTW05ndFJlbmRlcmVyQ2xhc3NJZC5wb3J0YWxDb250YWluZXJdKSB7XG5cdFx0XHRcdHRoaXMuYXBwZW5kQ2hpbGQocGFyZW50LCBjUlNbTmd0UmVuZGVyZXJDbGFzc0lkLnBvcnRhbENvbnRhaW5lcl0pO1xuXHRcdFx0fVxuXHRcdFx0cmV0dXJuO1xuXHRcdH1cblxuXHRcdC8vIGlmIHBhcmVudCBpcyBhIHBvcnRhbFxuXHRcdGlmIChwUlNbTmd0UmVuZGVyZXJDbGFzc0lkLnR5cGVdID09PSAncG9ydGFsJykge1xuXHRcdFx0aWYgKCFwUlNbTmd0UmVuZGVyZXJDbGFzc0lkLnBvcnRhbENvbnRhaW5lcl0pIHRoaXMucHJvY2Vzc1BvcnRhbENvbnRhaW5lcihwYXJlbnQpO1xuXG5cdFx0XHRpZiAocFJTW05ndFJlbmRlcmVyQ2xhc3NJZC5wb3J0YWxDb250YWluZXJdKSB7XG5cdFx0XHRcdHRoaXMuYXBwZW5kQ2hpbGQocFJTW05ndFJlbmRlcmVyQ2xhc3NJZC5wb3J0YWxDb250YWluZXJdLCBuZXdDaGlsZCk7XG5cdFx0XHR9XG5cdFx0XHRyZXR1cm47XG5cdFx0fVxuXG5cdFx0Ly8gaWYgYm90aCBhcmUgdGhyZWUgaW5zdGFuY2VzLCBzdHJhaWdodGZvcndhcmQgY2FzZVxuXHRcdGlmIChwUlNbTmd0UmVuZGVyZXJDbGFzc0lkLnR5cGVdID09PSAndGhyZWUnICYmIGNSUz8uW05ndFJlbmRlcmVyQ2xhc3NJZC50eXBlXSA9PT0gJ3RocmVlJykge1xuXHRcdFx0Y29uc3QgY0xTID0gZ2V0TG9jYWxTdGF0ZShuZXdDaGlsZCk7XG5cblx0XHRcdC8vIGlmIGNoaWxkIGFscmVhZHkgYXR0YWNoZWQgdG8gYSBwYXJlbnQsIHNraXBcblx0XHRcdGlmIChjTFM/Lmluc3RhbmNlU3RvcmU/LmdldCgncGFyZW50JykpIHJldHVybjtcblx0XHRcdGlmIChwYXJlbnQgPT09IG5ld0NoaWxkKSByZXR1cm47XG5cblx0XHRcdC8vIGF0dGFjaCBUSFJFRSBjaGlsZFxuXHRcdFx0YXR0YWNoVGhyZWVDaGlsZChwYXJlbnQsIG5ld0NoaWxkKTtcblx0XHRcdHJldHVybjtcblx0XHR9XG5cblx0XHQvLyBpZiBvbmx5IHRoZSBwYXJlbnQgaXMgdGhlIFRIUkVFIGluc3RhbmNlXG5cdFx0aWYgKHBSU1tOZ3RSZW5kZXJlckNsYXNzSWQudHlwZV0gPT09ICd0aHJlZScpIHtcblx0XHRcdGZvciAoY29uc3QgcmVuZGVyQ2hpbGQgb2YgY1JTPy5bTmd0UmVuZGVyZXJDbGFzc0lkLmNoaWxkcmVuXSB8fCBbXSkge1xuXHRcdFx0XHR0aGlzLmFwcGVuZENoaWxkKHBhcmVudCwgcmVuZGVyQ2hpbGQpO1xuXHRcdFx0fVxuXHRcdH1cblxuXHRcdGlmICh0aGlzLnNob3VsZEZpbmRHcmFuZHBhcmVudEluc3RhbmNlKHBSUywgY1JTLCBuZXdDaGlsZCkpIHtcblx0XHRcdC8vIHdlJ2xsIHRyeSB0byBnZXQgdGhlIGdyYW5kcGFyZW50IGluc3RhbmNlIGhlcmUgc28gdGhhdCB3ZSBjYW4gcnVuIGFwcGVuZENoaWxkIHdpdGggYm90aCBpbnN0YW5jZXNcblx0XHRcdGNvbnN0IGNsb3Nlc3RHcmFuZHBhcmVudEluc3RhbmNlID0gZ2V0Q2xvc2VzdFBhcmVudFdpdGhJbnN0YW5jZShwYXJlbnQpO1xuXHRcdFx0aWYgKGNsb3Nlc3RHcmFuZHBhcmVudEluc3RhbmNlKSB0aGlzLmFwcGVuZENoaWxkKGNsb3Nlc3RHcmFuZHBhcmVudEluc3RhbmNlLCBuZXdDaGlsZCk7XG5cdFx0XHRyZXR1cm47XG5cdFx0fVxuXHR9XG5cblx0aW5zZXJ0QmVmb3JlKFxuXHRcdHBhcmVudDogTmd0UmVuZGVyZXJOb2RlLFxuXHRcdG5ld0NoaWxkOiBOZ3RSZW5kZXJlck5vZGUsXG5cdFx0Ly8gVE9ETzogd2UgbWlnaHQgbmVlZCB0aGVzZT9cblx0XHQvLyBfcmVmQ2hpbGQ6IE5ndFJlbmRlcmVyTm9kZSxcblx0XHQvLyBfaXNNb3ZlPzogYm9vbGVhbiB8IHVuZGVmaW5lZCxcblx0KTogdm9pZCB7XG5cdFx0Ly8gTk9URTogbm90IHN1cmUgd2h5IHRoaXMgaXMgaGVyZS4gaW52ZXN0aWdhdGUgd2hlbiB3ZSBoYXZlIHRpbWVcblx0XHQvLyBpZiAocGFyZW50IGluc3RhbmNlb2YgSFRNTEVsZW1lbnQgJiYgKG5ld0NoaWxkIGluc3RhbmNlb2YgSFRNTEVsZW1lbnQgfHwgbmV3Q2hpbGQgaW5zdGFuY2VvZiBUZXh0KSkge1xuXHRcdC8vIFx0cmV0dXJuIHRoaXMuZGVsZWdhdGUuYXBwZW5kQ2hpbGQocGFyZW50LCBuZXdDaGlsZCk7XG5cdFx0Ly8gfVxuXG5cdFx0aWYgKHBhcmVudCA9PSBudWxsIHx8ICFwYXJlbnQuX19uZ3RfcmVuZGVyZXJfXyB8fCBwYXJlbnQgPT09IG5ld0NoaWxkKSByZXR1cm47XG5cdFx0dGhpcy5hcHBlbmRDaGlsZChwYXJlbnQsIG5ld0NoaWxkKTtcblx0fVxuXG5cdHJlbW92ZUNoaWxkKHBhcmVudDogTmd0UmVuZGVyZXJOb2RlIHwgbnVsbCwgb2xkQ2hpbGQ6IE5ndFJlbmRlcmVyTm9kZSwgaXNIb3N0RWxlbWVudD86IGJvb2xlYW4gfCB1bmRlZmluZWQpOiB2b2lkIHtcblx0XHRpZiAocGFyZW50ID09IG51bGwpIHtcblx0XHRcdHBhcmVudCA9ICh1bnRyYWNrZWQoKCkgPT4gZ2V0TG9jYWxTdGF0ZShvbGRDaGlsZCk/LnBhcmVudD8uKCkpIHx8XG5cdFx0XHRcdG9sZENoaWxkLl9fbmd0X3JlbmRlcmVyX18/LltOZ3RSZW5kZXJlckNsYXNzSWQucGFyZW50XSkgYXMgTmd0UmVuZGVyZXJOb2RlO1xuXHRcdH1cblxuXHRcdGNvbnN0IGNSUyA9IG9sZENoaWxkLl9fbmd0X3JlbmRlcmVyX187XG5cblx0XHQvLyBpZiBwYXJlbnQgaXMgc3RpbGwgZmFsc3ksIHdlIGRvbid0IGtub3cgd2hhdCB0byBkbyB3aXRoIHRoZSBwYXJlbnQuXG5cdFx0Ly8gd2UnbGwganVzdCByZW1vdmUgdGhlIGNoaWxkIGFuZCBkZXN0cm95IGl0XG5cdFx0aWYgKHBhcmVudCA9PSBudWxsKSB7XG5cdFx0XHRpZiAoY1JTKSB7XG5cdFx0XHRcdGlmIChjUlNbTmd0UmVuZGVyZXJDbGFzc0lkLnR5cGVdID09PSAndGhyZWUnKSB7XG5cdFx0XHRcdFx0cmVtb3ZlVGhyZWVDaGlsZChvbGRDaGlsZCwgdW5kZWZpbmVkLCB0cnVlKTtcblx0XHRcdFx0fVxuXHRcdFx0XHR0aGlzLmRlc3Ryb3lJbnRlcm5hbChvbGRDaGlsZCwgdW5kZWZpbmVkKTtcblx0XHRcdH1cblxuXHRcdFx0cmV0dXJuO1xuXHRcdH1cblxuXHRcdGNvbnN0IHBSUyA9IHBhcmVudC5fX25ndF9yZW5kZXJlcl9fO1xuXG5cdFx0aWYgKFxuXHRcdFx0KCFjUlMgfHwgIXBSUykgJiZcblx0XHRcdHBhcmVudCBpbnN0YW5jZW9mIEVsZW1lbnQgJiZcblx0XHRcdChvbGRDaGlsZCBpbnN0YW5jZW9mIEVsZW1lbnQgfHwgb2xkQ2hpbGQgaW5zdGFuY2VvZiBUZXh0IHx8IG9sZENoaWxkIGluc3RhbmNlb2YgQ29tbWVudClcblx0XHQpIHtcblx0XHRcdHRoaXMuZGVsZWdhdGUucmVtb3ZlQ2hpbGQocGFyZW50LCBvbGRDaGlsZCk7XG5cdFx0XHR0aGlzLmRlc3Ryb3lJbnRlcm5hbChvbGRDaGlsZCwgcGFyZW50KTtcblx0XHRcdHJldHVybjtcblx0XHR9XG5cblx0XHRpZiAoY1JTW05ndFJlbmRlcmVyQ2xhc3NJZC50eXBlXSA9PT0gJ2RvbScgJiYgKCFwUlMgfHwgcFJTW05ndFJlbmRlcmVyQ2xhc3NJZC50eXBlXSA9PT0gJ2RvbScpKSB7XG5cdFx0XHR0aGlzLmRlbGVnYXRlLnJlbW92ZUNoaWxkKHBhcmVudCwgb2xkQ2hpbGQpO1xuXHRcdFx0dGhpcy5kZXN0cm95SW50ZXJuYWwob2xkQ2hpbGQsIHBhcmVudCk7XG5cdFx0XHRyZXR1cm47XG5cdFx0fVxuXG5cdFx0aWYgKHBSU1tOZ3RSZW5kZXJlckNsYXNzSWQudHlwZV0gPT09ICd0aHJlZScgJiYgY1JTW05ndFJlbmRlcmVyQ2xhc3NJZC50eXBlXSA9PT0gJ3RocmVlJykge1xuXHRcdFx0cmVtb3ZlVGhyZWVDaGlsZChvbGRDaGlsZCwgcGFyZW50LCB0cnVlKTtcblx0XHRcdHRoaXMuZGVzdHJveUludGVybmFsKG9sZENoaWxkLCBwYXJlbnQpO1xuXHRcdFx0cmV0dXJuO1xuXHRcdH1cblxuXHRcdGlmIChcblx0XHRcdHBSU1tOZ3RSZW5kZXJlckNsYXNzSWQudHlwZV0gPT09ICdwb3J0YWwnICYmXG5cdFx0XHRwUlNbTmd0UmVuZGVyZXJDbGFzc0lkLnBvcnRhbENvbnRhaW5lcl0/Ll9fbmd0X3JlbmRlcmVyX19bTmd0UmVuZGVyZXJDbGFzc0lkLnR5cGVdID09PSAndGhyZWUnXG5cdFx0KSB7XG5cdFx0XHR0aGlzLnJlbW92ZUNoaWxkKHBSU1tOZ3RSZW5kZXJlckNsYXNzSWQucG9ydGFsQ29udGFpbmVyXSwgb2xkQ2hpbGQsIGlzSG9zdEVsZW1lbnQpO1xuXHRcdFx0cmV0dXJuO1xuXHRcdH1cblxuXHRcdGlmIChwUlNbTmd0UmVuZGVyZXJDbGFzc0lkLnR5cGVdID09PSAndGhyZWUnKSB7XG5cdFx0XHR0aGlzLmRlc3Ryb3lJbnRlcm5hbChvbGRDaGlsZCwgcGFyZW50KTtcblx0XHRcdHJldHVybjtcblx0XHR9XG5cblx0XHRjb25zdCBjbG9zZXN0R3JhbmRwYXJlbnRJbnN0YW5jZSA9IGdldENsb3Nlc3RQYXJlbnRXaXRoSW5zdGFuY2UocGFyZW50KTtcblx0XHRpZiAoY2xvc2VzdEdyYW5kcGFyZW50SW5zdGFuY2UpIHRoaXMucmVtb3ZlQ2hpbGQoY2xvc2VzdEdyYW5kcGFyZW50SW5zdGFuY2UsIG9sZENoaWxkLCBpc0hvc3RFbGVtZW50KTtcblx0XHR0aGlzLmRlc3Ryb3lJbnRlcm5hbChvbGRDaGlsZCwgY2xvc2VzdEdyYW5kcGFyZW50SW5zdGFuY2UgYXMgTmd0UmVuZGVyZXJOb2RlKTtcblx0fVxuXG5cdHBhcmVudE5vZGUobm9kZTogTmd0UmVuZGVyZXJOb2RlKSB7XG5cdFx0Y29uc3QgclMgPSBub2RlLl9fbmd0X3JlbmRlcmVyX187XG5cdFx0aWYgKHJTPy5bTmd0UmVuZGVyZXJDbGFzc0lkLnBhcmVudF0pIHJldHVybiByU1tOZ3RSZW5kZXJlckNsYXNzSWQucGFyZW50XTtcblx0XHRyZXR1cm4gdGhpcy5kZWxlZ2F0ZS5wYXJlbnROb2RlKG5vZGUpO1xuXHR9XG5cblx0cHJpdmF0ZSBzZXRBdHRyaWJ1dGVJbnRlcm5hbChcblx0XHRlbDogTmd0UmVuZGVyZXJOb2RlLFxuXHRcdG5hbWU6IHN0cmluZyxcblx0XHR2YWx1ZTogc3RyaW5nLFxuXHRcdF9uYW1lc3BhY2U/OiBzdHJpbmcgfCBudWxsIHwgdW5kZWZpbmVkLFxuXHQpOiBib29sZWFuIHtcblx0XHRjb25zdCByUyA9IGVsLl9fbmd0X3JlbmRlcmVyX187XG5cdFx0aWYgKHJTW05ndFJlbmRlcmVyQ2xhc3NJZC5kZXN0cm95ZWRdKSByZXR1cm4gZmFsc2U7XG5cblx0XHRpZiAoclNbTmd0UmVuZGVyZXJDbGFzc0lkLnR5cGVdID09PSAndGhyZWUnKSB7XG5cdFx0XHRpZiAobmFtZSA9PT0gU1BFQ0lBTF9QUk9QRVJUSUVTLlJFTkRFUl9QUklPUklUWSkge1xuXHRcdFx0XHQvLyBOT1RFOiBwcmlvcml0eSBuZWVkcyB0byBiZSBzZXQgYXMgYW4gYXR0cmlidXRlIHN0cmluZyBzbyB0aGF0IHRoZXkgY2FuIGJlIHNldCBhcyBlYXJseSBhcyBwb3NzaWJsZVxuXHRcdFx0XHQvLyB3ZSBjb252ZXJ0IHRoYXQgc3RyaW5nIHRvIGEgbnVtYmVyLiBpZiBpdCdzIGludmFsaWQsIGRlZmF1bHQgMFxuXHRcdFx0XHRsZXQgcHJpb3JpdHkgPSBOdW1iZXIodmFsdWUpO1xuXHRcdFx0XHRpZiAoaXNOYU4ocHJpb3JpdHkpKSB7XG5cdFx0XHRcdFx0cHJpb3JpdHkgPSAwO1xuXHRcdFx0XHRcdGNvbnNvbGUud2FybihgW05HVF0gXCJwcmlvcml0eVwiIGlzIGFuIGludmFsaWQgbnVtYmVyLCBkZWZhdWx0IHRvIDBgKTtcblx0XHRcdFx0fVxuXHRcdFx0XHRjb25zdCBsb2NhbFN0YXRlID0gZ2V0TG9jYWxTdGF0ZShlbCk7XG5cdFx0XHRcdGlmIChsb2NhbFN0YXRlKSBsb2NhbFN0YXRlLnByaW9yaXR5ID0gcHJpb3JpdHk7XG5cdFx0XHR9IGVsc2UgaWYgKG5hbWUgPT09IFNQRUNJQUxfUFJPUEVSVElFUy5BVFRBQ0gpIHtcblx0XHRcdFx0Ly8gTk9URTogaGFuZGxlIGF0dGFjaCBhcyBzdHJpbmdcblx0XHRcdFx0Y29uc3QgcGF0aHMgPSB2YWx1ZS5zcGxpdCgnLicpO1xuXHRcdFx0XHRpZiAocGF0aHMubGVuZ3RoKSB7XG5cdFx0XHRcdFx0Y29uc3QgbG9jYWxTdGF0ZSA9IGdldExvY2FsU3RhdGUoZWwpO1xuXHRcdFx0XHRcdGlmIChsb2NhbFN0YXRlKSBsb2NhbFN0YXRlLmF0dGFjaCA9IHBhdGhzO1xuXHRcdFx0XHR9XG5cdFx0XHR9IGVsc2UgaWYgKG5hbWUgPT09IFNQRUNJQUxfUFJPUEVSVElFUy5SQVdfVkFMVUUpIHtcblx0XHRcdFx0Ly8gTk9URTogY29lcmNpb25cblx0XHRcdFx0bGV0IG1heWJlQ29lcmNlZDogc3RyaW5nIHwgbnVtYmVyIHwgYm9vbGVhbiA9IHZhbHVlO1xuXHRcdFx0XHRpZiAobWF5YmVDb2VyY2VkID09PSAnJyB8fCBtYXliZUNvZXJjZWQgPT09ICd0cnVlJyB8fCBtYXliZUNvZXJjZWQgPT09ICdmYWxzZScpIHtcblx0XHRcdFx0XHRtYXliZUNvZXJjZWQgPSBtYXliZUNvZXJjZWQgPT09ICd0cnVlJyB8fCBtYXliZUNvZXJjZWQgPT09ICcnO1xuXHRcdFx0XHR9IGVsc2UgaWYgKCFpc05hTihOdW1iZXIobWF5YmVDb2VyY2VkKSkpIHtcblx0XHRcdFx0XHRtYXliZUNvZXJjZWQgPSBOdW1iZXIobWF5YmVDb2VyY2VkKTtcblx0XHRcdFx0fVxuXHRcdFx0XHRyU1tOZ3RSZW5kZXJlckNsYXNzSWQucmF3VmFsdWVdID0gbWF5YmVDb2VyY2VkO1xuXHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0YXBwbHlQcm9wcyhlbCwgeyBbbmFtZV06IHZhbHVlIH0pO1xuXHRcdFx0fVxuXG5cdFx0XHRyZXR1cm4gZmFsc2U7XG5cdFx0fVxuXG5cdFx0cmV0dXJuIHRydWU7XG5cdH1cblxuXHRzZXRBdHRyaWJ1dGUoZWw6IE5ndFJlbmRlcmVyTm9kZSwgbmFtZTogc3RyaW5nLCB2YWx1ZTogc3RyaW5nLCBuYW1lc3BhY2U/OiBzdHJpbmcgfCBudWxsIHwgdW5kZWZpbmVkKTogdm9pZCB7XG5cdFx0Y29uc3QgdXNlRGVsZWdhdGUgPSB0aGlzLnNldEF0dHJpYnV0ZUludGVybmFsKGVsLCBuYW1lLCB2YWx1ZSwgbmFtZXNwYWNlKTtcblxuXHRcdGlmICh1c2VEZWxlZ2F0ZSkge1xuXHRcdFx0dGhpcy5kZWxlZ2F0ZS5zZXRBdHRyaWJ1dGUoZWwsIG5hbWUsIHZhbHVlKTtcblx0XHR9XG5cdH1cblxuXHRyZW1vdmVBdHRyaWJ1dGUoZWw6IE5ndFJlbmRlcmVyTm9kZSwgbmFtZTogc3RyaW5nLCBuYW1lc3BhY2U/OiBzdHJpbmcgfCBudWxsIHwgdW5kZWZpbmVkKTogdm9pZCB7XG5cdFx0Y29uc3QgdXNlRGVsZWdhdGUgPSB0aGlzLnNldEF0dHJpYnV0ZUludGVybmFsKGVsLCBuYW1lLCB1bmRlZmluZWQhLCBuYW1lc3BhY2UpO1xuXG5cdFx0aWYgKHVzZURlbGVnYXRlKSB7XG5cdFx0XHR0aGlzLmRlbGVnYXRlLnJlbW92ZUF0dHJpYnV0ZShlbCwgbmFtZSwgbmFtZXNwYWNlKTtcblx0XHR9XG5cdH1cblxuXHRzZXRQcm9wZXJ0eShlbDogTmd0UmVuZGVyZXJOb2RlLCBuYW1lOiBzdHJpbmcsIHZhbHVlOiBhbnkpOiB2b2lkIHtcblx0XHRjb25zdCByUyA9IGVsLl9fbmd0X3JlbmRlcmVyX187XG5cdFx0aWYgKCFyUyB8fCByU1tOZ3RSZW5kZXJlckNsYXNzSWQuZGVzdHJveWVkXSkgcmV0dXJuO1xuXG5cdFx0aWYgKHJTW05ndFJlbmRlcmVyQ2xhc3NJZC50eXBlXSA9PT0gJ3RocmVlJykge1xuXHRcdFx0aWYgKG5hbWUgPT09IFNQRUNJQUxfUFJPUEVSVElFUy5QQVJBTUVURVJTKSB7XG5cdFx0XHRcdC8vIE5PVEU6IHNob3J0LWN1dCBmb3IgbnVsbCByYXljYXN0IHRvIHByZXZlbnQgdXBzdHJlYW0gZnJvbSBjcmVhdGluZyBhIG51bGxSYXljYXN0IHByb3BlcnR5XG5cdFx0XHRcdGlmICgncmF5Y2FzdCcgaW4gdmFsdWUgJiYgdmFsdWVbJ3JheWNhc3QnXSA9PT0gbnVsbCkge1xuXHRcdFx0XHRcdHZhbHVlWydyYXljYXN0J10gPSAoKSA9PiBudWxsO1xuXHRcdFx0XHR9XG5cdFx0XHRcdGFwcGx5UHJvcHMoZWwsIHZhbHVlKTtcblx0XHRcdFx0cmV0dXJuO1xuXHRcdFx0fVxuXG5cdFx0XHRjb25zdCBsb2NhbFN0YXRlID0gZ2V0TG9jYWxTdGF0ZShlbCk7XG5cdFx0XHRjb25zdCBwYXJlbnQgPSBsb2NhbFN0YXRlPy5pbnN0YW5jZVN0b3JlLmdldCgncGFyZW50JykgfHwgclNbTmd0UmVuZGVyZXJDbGFzc0lkLnBhcmVudF07XG5cblx0XHRcdC8vIFtyYXdWYWx1ZV1cblx0XHRcdGlmIChsb2NhbFN0YXRlPy5pc1JhdyAmJiBuYW1lID09PSBTUEVDSUFMX1BST1BFUlRJRVMuUkFXX1ZBTFVFKSB7XG5cdFx0XHRcdHJTW05ndFJlbmRlcmVyQ2xhc3NJZC5yYXdWYWx1ZV0gPSB2YWx1ZTtcblx0XHRcdFx0aWYgKHBhcmVudCkgYXR0YWNoVGhyZWVDaGlsZChwYXJlbnQsIGVsKTtcblx0XHRcdFx0cmV0dXJuO1xuXHRcdFx0fVxuXG5cdFx0XHQvLyBbYXR0YWNoXVxuXHRcdFx0aWYgKG5hbWUgPT09IFNQRUNJQUxfUFJPUEVSVElFUy5BVFRBQ0gpIHtcblx0XHRcdFx0aWYgKGxvY2FsU3RhdGUpXG5cdFx0XHRcdFx0bG9jYWxTdGF0ZS5hdHRhY2ggPSBBcnJheS5pc0FycmF5KHZhbHVlKVxuXHRcdFx0XHRcdFx0PyB2YWx1ZS5tYXAoKHYpID0+IHYudG9TdHJpbmcoKSlcblx0XHRcdFx0XHRcdDogdHlwZW9mIHZhbHVlID09PSAnZnVuY3Rpb24nXG5cdFx0XHRcdFx0XHRcdD8gdmFsdWVcblx0XHRcdFx0XHRcdFx0OiB0eXBlb2YgdmFsdWUgPT09ICdzdHJpbmcnXG5cdFx0XHRcdFx0XHRcdFx0PyB2YWx1ZS5zcGxpdCgnLicpXG5cdFx0XHRcdFx0XHRcdFx0OiBbdmFsdWVdO1xuXHRcdFx0XHRpZiAocGFyZW50KSBhdHRhY2hUaHJlZUNoaWxkKHBhcmVudCwgZWwpO1xuXHRcdFx0XHRyZXR1cm47XG5cdFx0XHR9XG5cblx0XHRcdC8vIE5PVEU6IHNob3J0LWN1dCBmb3IgbnVsbCByYXljYXN0IHRvIHByZXZlbnQgdXBzdHJlYW0gZnJvbSBjcmVhdGluZyBhIG51bGxSYXljYXN0IHByb3BlcnR5XG5cdFx0XHRpZiAobmFtZSA9PT0gJ3JheWNhc3QnICYmIHZhbHVlID09PSBudWxsKSB7XG5cdFx0XHRcdHZhbHVlID0gKCkgPT4gbnVsbDtcblx0XHRcdH1cblxuXHRcdFx0YXBwbHlQcm9wcyhlbCwgeyBbbmFtZV06IHZhbHVlIH0pO1xuXHRcdFx0cmV0dXJuO1xuXHRcdH1cblxuXHRcdHJldHVybiB0aGlzLmRlbGVnYXRlLnNldFByb3BlcnR5KGVsLCBuYW1lLCB2YWx1ZSk7XG5cdH1cblxuXHRsaXN0ZW4odGFyZ2V0OiBOZ3RSZW5kZXJlck5vZGUsIGV2ZW50TmFtZTogc3RyaW5nLCBjYWxsYmFjazogKGV2ZW50OiBhbnkpID0+IGJvb2xlYW4gfCB2b2lkKTogKCkgPT4gdm9pZCB7XG5cdFx0Y29uc3QgclMgPSB0YXJnZXQuX19uZ3RfcmVuZGVyZXJfXztcblxuXHRcdC8vIGlmIHRoZSB0YXJnZXQgZG9lc24ndCBoYXZlIF9fbmd0X3JlbmRlcmVyX18sIHdlIGRlbGVnYXRlXG5cdFx0Ly8gaWYgdGFyZ2V0IGlzIERPTSBub2RlLCB3ZSBkZWxlZ2F0ZVxuXHRcdGlmICghclMgfHwgaXNET00odGFyZ2V0KSkge1xuXHRcdFx0cmV0dXJuIHRoaXMuZGVsZWdhdGUubGlzdGVuKHRhcmdldCwgZXZlbnROYW1lLCBjYWxsYmFjayk7XG5cdFx0fVxuXG5cdFx0aWYgKHJTW05ndFJlbmRlcmVyQ2xhc3NJZC50eXBlXSA9PT0gJ3RocmVlJykge1xuXHRcdFx0Y29uc3QgaW5zdGFuY2UgPSB0YXJnZXQ7XG5cdFx0XHRjb25zdCBsb2NhbFN0YXRlID0gZ2V0TG9jYWxTdGF0ZShpbnN0YW5jZSk7XG5cdFx0XHRjb25zdCBwcmlvcml0eSA9IGxvY2FsU3RhdGU/LnByaW9yaXR5ID8/IDA7XG5cdFx0XHRyZXR1cm4gcHJvY2Vzc1RocmVlRXZlbnQoaW5zdGFuY2UsIHByaW9yaXR5LCBldmVudE5hbWUsIGNhbGxiYWNrKTtcblx0XHR9XG5cblx0XHQvLyBAdHMtZXhwZWN0LWVycm9yIC0gd2Uga25vdyB0aGF0IHRhcmdldCBpcyBub3QgRE9NIG5vZGVcblx0XHRpZiAodGFyZ2V0ID09PSB0aGlzLnJvb3RTdG9yZS5zbmFwc2hvdC5zY2VuZSkge1xuXHRcdFx0bGV0IFtkb21UYXJnZXQsIGV2ZW50XSA9IGV2ZW50TmFtZS5zcGxpdCgnOicpO1xuXHRcdFx0aWYgKGV2ZW50ID09IG51bGwpIHtcblx0XHRcdFx0ZXZlbnQgPSBkb21UYXJnZXQ7XG5cdFx0XHRcdGRvbVRhcmdldCA9ICcnO1xuXHRcdFx0fVxuXHRcdFx0Y29uc3QgZXZlbnRUYXJnZXQgPVxuXHRcdFx0XHRkb21UYXJnZXQgPT09ICd3aW5kb3cnXG5cdFx0XHRcdFx0PyAodGFyZ2V0IGFzIE5ndEFueVJlY29yZClbJ293bmVyRG9jdW1lbnQnXVsnZGVmYXVsdFZpZXcnXVxuXHRcdFx0XHRcdDogKHRhcmdldCBhcyBOZ3RBbnlSZWNvcmQpWydvd25lckRvY3VtZW50J107XG5cdFx0XHRyZXR1cm4gdGhpcy5kZWxlZ2F0ZS5saXN0ZW4oZXZlbnRUYXJnZXQsIGV2ZW50LCBjYWxsYmFjayk7XG5cdFx0fVxuXG5cdFx0cmV0dXJuICgpID0+IHt9O1xuXHR9XG5cblx0cHJpdmF0ZSBkZXN0cm95SW50ZXJuYWwobm9kZTogTmd0UmVuZGVyZXJOb2RlLCBwYXJlbnQ/OiBOZ3RSZW5kZXJlck5vZGUpIHtcblx0XHRjb25zdCByUyA9IG5vZGUuX19uZ3RfcmVuZGVyZXJfXztcblx0XHRpZiAoIXJTIHx8IHJTW05ndFJlbmRlcmVyQ2xhc3NJZC5kZXN0cm95ZWRdKSByZXR1cm47XG5cdFx0aWYgKHJTW05ndFJlbmRlcmVyQ2xhc3NJZC50eXBlXSA9PT0gJ3RocmVlJykge1xuXHRcdFx0Y29uc3QgbG9jYWxTdGF0ZSA9IGdldExvY2FsU3RhdGUobm9kZSk7XG5cdFx0XHRpZiAobG9jYWxTdGF0ZT8uaW5zdGFuY2VTdG9yZSkge1xuXHRcdFx0XHRsb2NhbFN0YXRlLmluc3RhbmNlU3RvcmUuZ2V0KCdvYmplY3RzJykuZm9yRWFjaCgob2JqKSA9PiB0aGlzLmRlc3Ryb3lJbnRlcm5hbChvYmosIHBhcmVudCkpO1xuXHRcdFx0XHRsb2NhbFN0YXRlLmluc3RhbmNlU3RvcmUuZ2V0KCdub25PYmplY3RzJykuZm9yRWFjaCgob2JqKSA9PiB0aGlzLmRlc3Ryb3lJbnRlcm5hbChvYmosIHBhcmVudCkpO1xuXHRcdFx0fVxuXG5cdFx0XHRpZiAobG9jYWxTdGF0ZT8ub25VcGRhdGUpIGRlbGV0ZSBsb2NhbFN0YXRlLm9uVXBkYXRlO1xuXHRcdFx0aWYgKGxvY2FsU3RhdGU/Lm9uQXR0YWNoKSBkZWxldGUgbG9jYWxTdGF0ZS5vbkF0dGFjaDtcblxuXHRcdFx0ZGVsZXRlIChsb2NhbFN0YXRlIGFzIE5ndEFueVJlY29yZClbJ29iamVjdHMnXTtcblx0XHRcdGRlbGV0ZSAobG9jYWxTdGF0ZSBhcyBOZ3RBbnlSZWNvcmQpWydub25PYmplY3RzJ107XG5cdFx0XHRkZWxldGUgKGxvY2FsU3RhdGUgYXMgTmd0QW55UmVjb3JkKVsncGFyZW50J107XG5cdFx0XHRkZWxldGUgKGxvY2FsU3RhdGUgYXMgTmd0QW55UmVjb3JkKVsnYWRkJ107XG5cdFx0XHRkZWxldGUgKGxvY2FsU3RhdGUgYXMgTmd0QW55UmVjb3JkKVsncmVtb3ZlJ107XG5cdFx0XHRkZWxldGUgKGxvY2FsU3RhdGUgYXMgTmd0QW55UmVjb3JkKVsnc3RvcmUnXTtcblx0XHRcdGRlbGV0ZSAobG9jYWxTdGF0ZSBhcyBOZ3RBbnlSZWNvcmQpWydoYW5kbGVycyddO1xuXG5cdFx0XHRpZiAoIWxvY2FsU3RhdGU/LnByaW1pdGl2ZSkge1xuXHRcdFx0XHRkZWxldGUgKG5vZGUgYXMgTmd0QW55UmVjb3JkKVsnX19uZ3RfXyddO1xuXHRcdFx0fVxuXHRcdH1cblxuXHRcdGlmIChyU1tOZ3RSZW5kZXJlckNsYXNzSWQudHlwZV0gPT09ICdjb21tZW50Jykge1xuXHRcdFx0clNbTmd0UmVuZGVyZXJDbGFzc0lkLmRlYnVnTm9kZV0gPSBudWxsITtcblx0XHRcdHJTW05ndFJlbmRlcmVyQ2xhc3NJZC5kZWJ1Z05vZGVGYWN0b3J5XSA9IG51bGwhO1xuXHRcdFx0ZGVsZXRlIChub2RlIGFzIE5ndEFueVJlY29yZClbU1BFQ0lBTF9JTlRFUk5BTF9BRERfQ09NTUVOVF07XG5cdFx0XHR0aGlzLnJlbW92ZUNvbW1lbnROb2RlKG5vZGUsIHRoaXMuYXJnc0NvbW1lbnROb2Rlcyk7XG5cdFx0fVxuXG5cdFx0aWYgKHJTW05ndFJlbmRlcmVyQ2xhc3NJZC50eXBlXSA9PT0gJ3BvcnRhbCcpIHtcblx0XHRcdHJTW05ndFJlbmRlcmVyQ2xhc3NJZC5kZWJ1Z05vZGVdID0gbnVsbCE7XG5cdFx0XHRyU1tOZ3RSZW5kZXJlckNsYXNzSWQuZGVidWdOb2RlRmFjdG9yeV0gPSBudWxsITtcblx0XHRcdHRoaXMucmVtb3ZlQ29tbWVudE5vZGUobm9kZSwgdGhpcy5wb3J0YWxDb21tZW50c05vZGVzKTtcblx0XHR9XG5cblx0XHQvLyBudWxsaWZ5IHBhcmVudFxuXHRcdHJTW05ndFJlbmRlcmVyQ2xhc3NJZC5wYXJlbnRdID0gbnVsbDtcblx0XHRmb3IgKGNvbnN0IHJlbmRlckNoaWxkIG9mIHJTW05ndFJlbmRlcmVyQ2xhc3NJZC5jaGlsZHJlbl0gfHwgW10pIHtcblx0XHRcdGlmIChyZW5kZXJDaGlsZC5fX25ndF9yZW5kZXJlcl9fPy5bTmd0UmVuZGVyZXJDbGFzc0lkLnR5cGVdID09PSAndGhyZWUnICYmIHBhcmVudCkge1xuXHRcdFx0XHRpZiAocGFyZW50Ll9fbmd0X3JlbmRlcmVyX18/LltOZ3RSZW5kZXJlckNsYXNzSWQudHlwZV0gPT09ICd0aHJlZScpIHtcblx0XHRcdFx0XHRyZW1vdmVUaHJlZUNoaWxkKHJlbmRlckNoaWxkLCBwYXJlbnQsIHRydWUpO1xuXHRcdFx0XHRcdGNvbnRpbnVlO1xuXHRcdFx0XHR9XG5cblx0XHRcdFx0Y29uc3QgY2xvc2VzdEluc3RhbmNlID0gZ2V0Q2xvc2VzdFBhcmVudFdpdGhJbnN0YW5jZShwYXJlbnQpO1xuXHRcdFx0XHRpZiAoY2xvc2VzdEluc3RhbmNlKSB7XG5cdFx0XHRcdFx0cmVtb3ZlVGhyZWVDaGlsZChyZW5kZXJDaGlsZCwgY2xvc2VzdEluc3RhbmNlLCB0cnVlKTtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdFx0dGhpcy5kZXN0cm95SW50ZXJuYWwocmVuZGVyQ2hpbGQsIHBhcmVudCk7XG5cdFx0fVxuXG5cdFx0clNbTmd0UmVuZGVyZXJDbGFzc0lkLmNoaWxkcmVuXSA9IFtdO1xuXHRcdHJTW05ndFJlbmRlcmVyQ2xhc3NJZC5kZXN0cm95ZWRdID0gdHJ1ZTtcblx0XHRpZiAocGFyZW50KSB7XG5cdFx0XHRyZW1vdmVDaGlsZChwYXJlbnQsIG5vZGUpO1xuXHRcdH1cblx0fVxuXG5cdHByaXZhdGUgcmVtb3ZlQ29tbWVudE5vZGUobm9kZTogTmd0UmVuZGVyZXJOb2RlLCBub2RlczogTmd0UmVuZGVyZXJOb2RlW10pIHtcblx0XHRjb25zdCBpbmRleCA9IG5vZGVzLmZpbmRJbmRleCgoY29tbWVudCkgPT4gY29tbWVudCA9PT0gbm9kZSk7XG5cdFx0aWYgKGluZGV4ID4gLTEpIHtcblx0XHRcdG5vZGVzLnNwbGljZShpbmRleCwgMSk7XG5cdFx0fVxuXHR9XG5cblx0cHJpdmF0ZSBwcm9jZXNzUG9ydGFsQ29udGFpbmVyKHBvcnRhbDogTmd0UmVuZGVyZXJOb2RlKSB7XG5cdFx0Y29uc3QgaW5qZWN0b3IgPSBwb3J0YWwuX19uZ3RfcmVuZGVyZXJfX1tOZ3RSZW5kZXJlckNsYXNzSWQuZGVidWdOb2RlRmFjdG9yeV0/LigpPy5pbmplY3Rvcjtcblx0XHRpZiAoIWluamVjdG9yKSByZXR1cm47XG5cblx0XHRjb25zdCBwb3J0YWxTdG9yZSA9IGluamVjdG9yLmdldChOR1RfU1RPUkUsIG51bGwpO1xuXHRcdGlmICghcG9ydGFsU3RvcmUpIHJldHVybjtcblxuXHRcdGNvbnN0IHBvcnRhbENvbnRhaW5lciA9IHBvcnRhbFN0b3JlLmdldCgnc2NlbmUnKTtcblx0XHRpZiAoIXBvcnRhbENvbnRhaW5lcikgcmV0dXJuO1xuXG5cdFx0Y29uc3QgbG9jYWxTdGF0ZSA9IGdldExvY2FsU3RhdGUocG9ydGFsQ29udGFpbmVyKTtcblx0XHRpZiAobG9jYWxTdGF0ZSkge1xuXHRcdFx0bG9jYWxTdGF0ZS5zdG9yZSA9IHBvcnRhbFN0b3JlO1xuXHRcdH1cblxuXHRcdHBvcnRhbC5fX25ndF9yZW5kZXJlcl9fW05ndFJlbmRlcmVyQ2xhc3NJZC5wb3J0YWxDb250YWluZXJdID0gY3JlYXRlTm9kZSgndGhyZWUnLCBwb3J0YWxDb250YWluZXIsIHRoaXMuZG9jdW1lbnQpO1xuXHR9XG5cblx0cHJpdmF0ZSBzaG91bGRGaW5kR3JhbmRwYXJlbnRJbnN0YW5jZShwUlM6IE5ndFJlbmRlcmVyU3RhdGUsIGNSUzogTmd0UmVuZGVyZXJTdGF0ZSwgY2hpbGQ6IE5ndFJlbmRlcmVyTm9kZSkge1xuXHRcdGNvbnN0IHBUeXBlID0gcFJTW05ndFJlbmRlcmVyQ2xhc3NJZC50eXBlXTtcblx0XHRjb25zdCBjVHlwZSA9IGNSU1tOZ3RSZW5kZXJlckNsYXNzSWQudHlwZV07XG5cblx0XHRjb25zdCBjTFMgPSBnZXRMb2NhbFN0YXRlKGNoaWxkKTtcblx0XHQvLyBpZiBjaGlsZCBpcyB0aHJlZSBidXQgaGF2ZW4ndCBiZWVuIGF0dGFjaGVkIHRvIGEgcGFyZW50IHlldFxuXHRcdGNvbnN0IGlzRGFuZ2xpbmdUaHJlZUNoaWxkID0gY1R5cGUgPT09ICd0aHJlZScgJiYgIWNMUz8uaW5zdGFuY2VTdG9yZT8uZ2V0KCdwYXJlbnQnKTtcblx0XHQvLyBvciBib3RoIHBhcmVudCBhbmQgY2hpbGQgYXJlIERPTSBlbGVtZW50c1xuXHRcdC8vIG9yIHRoZXkgYXJlIGNvbXBvdW5kIEFORCBoYXZlbid0IGhhZCBhIFRIUkVFIGluc3RhbmNlIHlldFxuXHRcdGNvbnN0IGlzUGFyZW50U3RpbGxET00gPSBwVHlwZSA9PT0gJ2RvbSc7XG5cdFx0Y29uc3QgaXNDaGlsZFN0aWxsRE9NID0gY1R5cGUgPT09ICdkb20nO1xuXG5cdFx0cmV0dXJuIGlzRGFuZ2xpbmdUaHJlZUNoaWxkIHx8IChpc1BhcmVudFN0aWxsRE9NICYmIGlzQ2hpbGRTdGlsbERPTSkgfHwgaXNQYXJlbnRTdGlsbERPTTtcblx0fVxuXG5cdHByaXZhdGUgZ2V0Tmd0QXJncygpIHtcblx0XHRsZXQgZGlyZWN0aXZlOiBOZ3RBcmdzIHwgdW5kZWZpbmVkO1xuXG5cdFx0Y29uc3QgZGVzdHJveWVkID0gW107XG5cblx0XHRsZXQgaSA9IHRoaXMuYXJnc0NvbW1lbnROb2Rlcy5sZW5ndGggLSAxO1xuXHRcdHdoaWxlIChpID49IDApIHtcblx0XHRcdGNvbnN0IGNvbW1lbnQgPSB0aGlzLmFyZ3NDb21tZW50Tm9kZXNbaV07XG5cdFx0XHRpZiAoY29tbWVudC5fX25ndF9yZW5kZXJlcl9fW05ndFJlbmRlcmVyQ2xhc3NJZC5kZXN0cm95ZWRdKSB7XG5cdFx0XHRcdGRlc3Ryb3llZC5wdXNoKGkpO1xuXHRcdFx0XHRpLS07XG5cdFx0XHRcdGNvbnRpbnVlO1xuXHRcdFx0fVxuXHRcdFx0Y29uc3QgaW5qZWN0b3IgPSBjb21tZW50Ll9fbmd0X3JlbmRlcmVyX19bTmd0UmVuZGVyZXJDbGFzc0lkLmRlYnVnTm9kZUZhY3RvcnldPy4oKT8uaW5qZWN0b3I7XG5cdFx0XHRpZiAoIWluamVjdG9yKSB7XG5cdFx0XHRcdGktLTtcblx0XHRcdFx0Y29udGludWU7XG5cdFx0XHR9XG5cdFx0XHRjb25zdCBpbnN0YW5jZSA9IGluamVjdG9yLmdldChOZ3RBcmdzLCBudWxsKTtcblx0XHRcdGlmIChpbnN0YW5jZSAmJiBpbnN0YW5jZS52YWxpZGF0ZSgpKSB7XG5cdFx0XHRcdGRpcmVjdGl2ZSA9IGluc3RhbmNlO1xuXHRcdFx0XHRicmVhaztcblx0XHRcdH1cblxuXHRcdFx0aS0tO1xuXHRcdH1cblxuXHRcdGRlc3Ryb3llZC5mb3JFYWNoKChpbmRleCkgPT4ge1xuXHRcdFx0dGhpcy5hcmdzQ29tbWVudE5vZGVzLnNwbGljZShpbmRleCwgMSk7XG5cdFx0fSk7XG5cblx0XHRyZXR1cm4gZGlyZWN0aXZlO1xuXHR9XG5cblx0Y3JlYXRlVGV4dCA9IHRoaXMuZGVsZWdhdGUuY3JlYXRlVGV4dC5iaW5kKHRoaXMuZGVsZWdhdGUpO1xuXHRkZXN0cm95ID0gdGhpcy5kZWxlZ2F0ZS5kZXN0cm95LmJpbmQodGhpcy5kZWxlZ2F0ZSk7XG5cdGRlc3Ryb3lOb2RlOiAoKG5vZGU6IGFueSkgPT4gdm9pZCkgfCBudWxsID0gbnVsbDtcblx0c2VsZWN0Um9vdEVsZW1lbnQgPSB0aGlzLmRlbGVnYXRlLnNlbGVjdFJvb3RFbGVtZW50LmJpbmQodGhpcy5kZWxlZ2F0ZSk7XG5cdG5leHRTaWJsaW5nID0gdGhpcy5kZWxlZ2F0ZS5uZXh0U2libGluZy5iaW5kKHRoaXMuZGVsZWdhdGUpO1xuXHRhZGRDbGFzcyA9IHRoaXMuZGVsZWdhdGUuYWRkQ2xhc3MuYmluZCh0aGlzLmRlbGVnYXRlKTtcblx0cmVtb3ZlQ2xhc3MgPSB0aGlzLmRlbGVnYXRlLnJlbW92ZUNsYXNzLmJpbmQodGhpcy5kZWxlZ2F0ZSk7XG5cdHNldFN0eWxlID0gdGhpcy5kZWxlZ2F0ZS5zZXRTdHlsZS5iaW5kKHRoaXMuZGVsZWdhdGUpO1xuXHRyZW1vdmVTdHlsZSA9IHRoaXMuZGVsZWdhdGUucmVtb3ZlU3R5bGUuYmluZCh0aGlzLmRlbGVnYXRlKTtcblx0c2V0VmFsdWUgPSB0aGlzLmRlbGVnYXRlLnNldFZhbHVlLmJpbmQodGhpcy5kZWxlZ2F0ZSk7XG5cdGdldCBkYXRhKCk6IHsgW2tleTogc3RyaW5nXTogYW55IH0ge1xuXHRcdHJldHVybiB0aGlzLmRlbGVnYXRlLmRhdGE7XG5cdH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHByb3ZpZGVOZ3RSZW5kZXJlcihzdG9yZTogTmd0U2lnbmFsU3RvcmU8Tmd0U3RhdGU+KSB7XG5cdGNvbnN0IHByb3ZpZGVycyA9IFtcblx0XHROZ3RSZW5kZXJlckZhY3RvcnksXG5cdFx0eyBwcm92aWRlOiBSZW5kZXJlckZhY3RvcnkyLCB1c2VFeGlzdGluZzogTmd0UmVuZGVyZXJGYWN0b3J5IH0sXG5cdFx0cHJvdmlkZVN0b3JlKCgpID0+IHN0b3JlKSxcblx0XTtcblxuXHRyZXR1cm4gbWFrZUVudmlyb25tZW50UHJvdmlkZXJzKHByb3ZpZGVycyk7XG59XG5cbmV4cG9ydCB7IGV4dGVuZCB9IGZyb20gJy4vY2F0YWxvZ3VlJztcbmV4cG9ydCB7IEhUTUwsIFJPVVRFRF9TQ0VORSB9IGZyb20gJy4vY29uc3RhbnRzJztcbiJdfQ==
548
+ export { HTML, NON_ROOT, ROUTED_SCENE } from './constants';
549
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvcmUvc3JjL2xpYi9yZW5kZXJlci9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDM0MsT0FBTyxFQUNOLFNBQVMsRUFDVCxVQUFVLEVBRVYsZ0JBQWdCLEVBRWhCLE1BQU0sRUFDTix3QkFBd0IsRUFDeEIsU0FBUyxHQUNULE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUM3QyxPQUFPLEVBQUUsYUFBYSxFQUFFLE9BQU8sRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUNyRCxPQUFPLEVBQUUsU0FBUyxFQUFFLFdBQVcsRUFBRSxZQUFZLEVBQUUsTUFBTSxVQUFVLENBQUM7QUFFaEUsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ2xELE9BQU8sRUFBRSxFQUFFLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDakMsT0FBTyxFQUFrQixXQUFXLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUNwRSxPQUFPLEVBQXFCLGVBQWUsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUNqRSxPQUFPLEVBQ04sSUFBSSxFQUNKLFFBQVEsRUFDUixZQUFZLEVBQ1osZUFBZSxFQUNmLDRCQUE0QixFQUM1QixrQkFBa0IsR0FDbEIsTUFBTSxhQUFhLENBQUM7QUFDckIsT0FBTyxFQUdOLFFBQVEsRUFDUixVQUFVLEVBQ1YsNEJBQTRCLEVBQzVCLEtBQUssRUFDTCxXQUFXLEVBQ1gsU0FBUyxHQUNULE1BQU0sU0FBUyxDQUFDO0FBQ2pCLE9BQU8sRUFBc0IsZ0JBQWdCLEVBQUUsYUFBYSxFQUFFLGlCQUFpQixFQUFFLGdCQUFnQixFQUFFLE1BQU0sU0FBUyxDQUFDOztBQUduSCxNQUFNLE9BQU8sa0JBQWtCO0lBRC9C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QU8sRUFBRSxJQUFJLEVBQUUsUUFBUSxFQUFFLFlBQVksRUFBRSxNQUFNLGFBQWEsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERPQ1VNRU5UIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7XG5cdERlYnVnTm9kZSxcblx0SW5qZWN0YWJsZSxcblx0UmVuZGVyZXIyLFxuXHRSZW5kZXJlckZhY3RvcnkyLFxuXHRSZW5kZXJlclR5cGUyLFxuXHRpbmplY3QsXG5cdG1ha2VFbnZpcm9ubWVudFByb3ZpZGVycyxcblx0dW50cmFja2VkLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE5ndEFyZ3MgfSBmcm9tICcuLi9kaXJlY3RpdmVzL2FyZ3MnO1xuaW1wb3J0IHsgZ2V0TG9jYWxTdGF0ZSwgcHJlcGFyZSB9IGZyb20gJy4uL2luc3RhbmNlJztcbmltcG9ydCB7IE5HVF9TVE9SRSwgaW5qZWN0U3RvcmUsIHByb3ZpZGVTdG9yZSB9IGZyb20gJy4uL3N0b3JlJztcbmltcG9ydCB7IE5ndEFueVJlY29yZCwgTmd0SW5zdGFuY2VOb2RlLCBOZ3RMb2NhbFN0YXRlLCBOZ3RTdGF0ZSB9IGZyb20gJy4uL3R5cGVzJztcbmltcG9ydCB7IGFwcGx5UHJvcHMgfSBmcm9tICcuLi91dGlscy9hcHBseS1wcm9wcyc7XG5pbXBvcnQgeyBpcyB9IGZyb20gJy4uL3V0aWxzL2lzJztcbmltcG9ydCB7IE5ndFNpZ25hbFN0b3JlLCBzaWduYWxTdG9yZSB9IGZyb20gJy4uL3V0aWxzL3NpZ25hbC1zdG9yZSc7XG5pbXBvcnQgeyBOZ3RBbnlDb25zdHJ1Y3RvciwgaW5qZWN0Q2F0YWxvZ3VlIH0gZnJvbSAnLi9jYXRhbG9ndWUnO1xuaW1wb3J0IHtcblx0SFRNTCxcblx0Tk9OX1JPT1QsXG5cdFJPVVRFRF9TQ0VORSxcblx0U1BFQ0lBTF9ET01fVEFHLFxuXHRTUEVDSUFMX0lOVEVSTkFMX0FERF9DT01NRU5ULFxuXHRTUEVDSUFMX1BST1BFUlRJRVMsXG59IGZyb20gJy4vY29uc3RhbnRzJztcbmltcG9ydCB7XG5cdE5ndFJlbmRlcmVyTm9kZSxcblx0Tmd0UmVuZGVyZXJTdGF0ZSxcblx0YWRkQ2hpbGQsXG5cdGNyZWF0ZU5vZGUsXG5cdGdldENsb3Nlc3RQYXJlbnRXaXRoSW5zdGFuY2UsXG5cdGlzRE9NLFxuXHRyZW1vdmVDaGlsZCxcblx0c2V0UGFyZW50LFxufSBmcm9tICcuL3N0YXRlJztcbmltcG9ydCB7IE5ndFJlbmRlcmVyQ2xhc3NJZCwgYXR0YWNoVGhyZWVDaGlsZCwga2ViYWJUb1Bhc2NhbCwgcHJvY2Vzc1RocmVlRXZlbnQsIHJlbW92ZVRocmVlQ2hpbGQgfSBmcm9tICcuL3V0aWxzJztcblxuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIE5ndFJlbmRlcmVyRmFjdG9yeSBpbXBsZW1lbnRzIFJlbmRlcmVyRmFjdG9yeTIge1xuXHRwcml2YXRlIGRlbGVnYXRlUmVuZGVyZXJGYWN0b3J5ID0gaW5qZWN0KFJlbmRlcmVyRmFjdG9yeTIsIHsgc2tpcFNlbGY6IHRydWUgfSk7XG5cdHByaXZhdGUgZG9jdW1lbnQgPSBpbmplY3QoRE9DVU1FTlQpO1xuXHRwcml2YXRlIGNhdGFsb2d1ZSA9IGluamVjdENhdGFsb2d1ZSgpO1xuXHRwcml2YXRlIHJvb3RTdG9yZSA9IGluamVjdFN0b3JlKCk7XG5cblx0cHJpdmF0ZSBwb3J0YWxDb21tZW50c05vZGVzOiBBcnJheTxOZ3RSZW5kZXJlck5vZGU+ID0gW107XG5cdHByaXZhdGUgcmVuZGVyZXJNYXAgPSBuZXcgTWFwPHN0cmluZywgUmVuZGVyZXIyPigpO1xuXHRwcml2YXRlIHJvdXRlZFNldCA9IG5ldyBTZXQ8c3RyaW5nPigpO1xuXG5cdGNyZWF0ZVJlbmRlcmVyKGhvc3RFbGVtZW50OiBhbnksIHR5cGU6IFJlbmRlcmVyVHlwZTIgfCBudWxsKTogUmVuZGVyZXIyIHtcblx0XHRjb25zdCBkZWxlZ2F0ZVJlbmRlcmVyID0gdGhpcy5kZWxlZ2F0ZVJlbmRlcmVyRmFjdG9yeS5jcmVhdGVSZW5kZXJlcihob3N0RWxlbWVudCwgdHlwZSk7XG5cblx0XHRpZiAoIXR5cGUpIHJldHVybiBkZWxlZ2F0ZVJlbmRlcmVyO1xuXG5cdFx0Ly8gTk9URTogbWlnaHQgbmVlZCB0byByZXZpc2l0IHRoaXNcblx0XHRpZiAoKHR5cGUgYXMgTmd0QW55UmVjb3JkKVsndHlwZSddW0hUTUxdKSB7XG5cdFx0XHR0aGlzLnJlbmRlcmVyTWFwLnNldCh0eXBlLmlkLCBkZWxlZ2F0ZVJlbmRlcmVyKTtcblx0XHRcdHJldHVybiBkZWxlZ2F0ZVJlbmRlcmVyO1xuXHRcdH1cblxuXHRcdGlmICgodHlwZSBhcyBOZ3RBbnlSZWNvcmQpWyd0eXBlJ11bUk9VVEVEX1NDRU5FXSkge1xuXHRcdFx0dGhpcy5yb3V0ZWRTZXQuYWRkKHR5cGUuaWQpO1xuXHRcdH1cblxuXHRcdGNvbnN0IGlzTm9uUm9vdCA9ICh0eXBlIGFzIE5ndEFueVJlY29yZClbJ3R5cGUnXVtOT05fUk9PVF07XG5cblx0XHRsZXQgcmVuZGVyZXIgPSB0aGlzLnJlbmRlcmVyTWFwLmdldCh0eXBlLmlkKTtcblx0XHRpZiAoIXJlbmRlcmVyKSB7XG5cdFx0XHR0aGlzLnJlbmRlcmVyTWFwLnNldChcblx0XHRcdFx0dHlwZS5pZCxcblx0XHRcdFx0KHJlbmRlcmVyID0gbmV3IE5ndFJlbmRlcmVyKFxuXHRcdFx0XHRcdGRlbGVnYXRlUmVuZGVyZXIsXG5cdFx0XHRcdFx0dGhpcy5yb290U3RvcmUsXG5cdFx0XHRcdFx0dGhpcy5kb2N1bWVudCxcblx0XHRcdFx0XHR0aGlzLnBvcnRhbENvbW1lbnRzTm9kZXMsXG5cdFx0XHRcdFx0dGhpcy5jYXRhbG9ndWUsXG5cdFx0XHRcdFx0Ly8gc2V0dGluZyByb290IHNjZW5lIGlmIHRoZXJlJ3Mgbm8gcm91dGVkIHNjZW5lIE9SIHRoaXMgY29tcG9uZW50IGlzIHRoZSByb3V0ZWQgU2NlbmVcblx0XHRcdFx0XHQhaG9zdEVsZW1lbnQgJiYgIWlzTm9uUm9vdCAmJiAodGhpcy5yb3V0ZWRTZXQuc2l6ZSA9PT0gMCB8fCB0aGlzLnJvdXRlZFNldC5oYXModHlwZS5pZCkpLFxuXHRcdFx0XHQpKSxcblx0XHRcdCk7XG5cdFx0fVxuXHRcdHJldHVybiByZW5kZXJlcjtcblx0fVxufVxuXG5leHBvcnQgY2xhc3MgTmd0UmVuZGVyZXIgaW1wbGVtZW50cyBSZW5kZXJlcjIge1xuXHRwcml2YXRlIGFyZ3NDb21tZW50Tm9kZXM6IEFycmF5PE5ndFJlbmRlcmVyTm9kZT4gPSBbXTtcblxuXHRjb25zdHJ1Y3Rvcihcblx0XHRwcml2YXRlIGRlbGVnYXRlOiBSZW5kZXJlcjIsXG5cdFx0cHJpdmF0ZSByb290U3RvcmU6IE5ndFNpZ25hbFN0b3JlPE5ndFN0YXRlPixcblx0XHRwcml2YXRlIGRvY3VtZW50OiBEb2N1bWVudCxcblx0XHRwcml2YXRlIHBvcnRhbENvbW1lbnRzTm9kZXM6IEFycmF5PE5ndFJlbmRlcmVyTm9kZT4sXG5cdFx0cHJpdmF0ZSBjYXRhbG9ndWU6IFJlY29yZDxzdHJpbmcsIE5ndEFueUNvbnN0cnVjdG9yPixcblx0XHRwcml2YXRlIGlzUm9vdCA9IHRydWUsXG5cdCkge31cblxuXHRjcmVhdGVFbGVtZW50KG5hbWU6IHN0cmluZywgbmFtZXNwYWNlPzogc3RyaW5nIHwgbnVsbCB8IHVuZGVmaW5lZCkge1xuXHRcdGNvbnN0IGVsZW1lbnQgPSB0aGlzLmRlbGVnYXRlLmNyZWF0ZUVsZW1lbnQobmFtZSwgbmFtZXNwYWNlKTtcblxuXHRcdC8vIGlmIHRoZXJlJ3MgbmFtZXNwYWNlLCB3ZSBkb24ndCBkbyBhbnl0aGluZ1xuXHRcdGlmIChuYW1lc3BhY2UpIHtcblx0XHRcdHJldHVybiBjcmVhdGVOb2RlKCdkb20nLCBlbGVtZW50LCB0aGlzLmRvY3VtZW50KTtcblx0XHR9XG5cblx0XHQvLyBvbiBmaXJzdCBwYXNzLCB3ZSByZXR1cm4gdGhlIFJvb3QgU2NlbmUgYXMgdGhlIHJvb3Qgbm9kZVxuXHRcdGlmICh0aGlzLmlzUm9vdCkge1xuXHRcdFx0dGhpcy5pc1Jvb3QgPSBmYWxzZTtcblx0XHRcdGNvbnN0IG5vZGUgPSBjcmVhdGVOb2RlKCd0aHJlZScsIHRoaXMucm9vdFN0b3JlLnNuYXBzaG90LnNjZW5lLCB0aGlzLmRvY3VtZW50KTtcblx0XHRcdG5vZGUuX19uZ3RfcmVuZGVyZXJfX1tOZ3RSZW5kZXJlckNsYXNzSWQuZGVidWdOb2RlRmFjdG9yeV0gPSAoKSA9PiB7XG5cdFx0XHRcdGlmICghbm9kZS5fX25ndF9yZW5kZXJlcl9fW05ndFJlbmRlcmVyQ2xhc3NJZC5kZWJ1Z05vZGVdKSB7XG5cdFx0XHRcdFx0bm9kZS5fX25ndF9yZW5kZXJlcl9fW05ndFJlbmRlcmVyQ2xhc3NJZC5kZWJ1Z05vZGVdID0gbmV3IERlYnVnTm9kZShlbGVtZW50KTtcblx0XHRcdFx0fVxuXHRcdFx0XHRyZXR1cm4gbm9kZS5fX25ndF9yZW5kZXJlcl9fW05ndFJlbmRlcmVyQ2xhc3NJZC5kZWJ1Z05vZGVdO1xuXHRcdFx0fTtcblx0XHRcdHJldHVybiBub2RlO1xuXHRcdH1cblxuXHRcdGlmIChuYW1lID09PSBTUEVDSUFMX0RPTV9UQUcuTkdUX1BPUlRBTCkge1xuXHRcdFx0cmV0dXJuIGNyZWF0ZU5vZGUoJ3BvcnRhbCcsIGVsZW1lbnQsIHRoaXMuZG9jdW1lbnQpO1xuXHRcdH1cblxuXHRcdGlmIChuYW1lID09PSBTUEVDSUFMX0RPTV9UQUcuTkdUX1ZBTFVFKSB7XG5cdFx0XHRjb25zdCBpbnN0YW5jZVN0b3JlID0gc2lnbmFsU3RvcmUoeyBwYXJlbnQ6IG51bGwsIG9iamVjdHM6IFtdLCBub25PYmplY3RzOiBbXSB9KTtcblx0XHRcdHJldHVybiBjcmVhdGVOb2RlKFxuXHRcdFx0XHQndGhyZWUnLFxuXHRcdFx0XHRPYmplY3QuYXNzaWduKFxuXHRcdFx0XHRcdHsgX19uZ3RfcmVuZGVyZXJfXzogeyByYXdWYWx1ZTogdW5kZWZpbmVkIH0gfSxcblx0XHRcdFx0XHQvLyBOT1RFOiB3ZSBhc3NpZ24gdGhpcyBtYW51YWxseSB0byBhIHJhdyB2YWx1ZSBub2RlXG5cdFx0XHRcdFx0Ly8gYmVjYXVzZSB3ZSBzYXkgaXQgaXMgYSAndGhyZWUnIG5vZGUgYnV0IHdlJ3JlIG5vdCB1c2luZyBwcmVwYXJlKClcblx0XHRcdFx0XHR7XG5cdFx0XHRcdFx0XHRfX25ndF9fOiB7XG5cdFx0XHRcdFx0XHRcdGlzUmF3OiB0cnVlLFxuXHRcdFx0XHRcdFx0XHRpbnN0YW5jZVN0b3JlLFxuXHRcdFx0XHRcdFx0XHRzZXRQYXJlbnQocGFyZW50OiBOZ3RJbnN0YW5jZU5vZGUpIHtcblx0XHRcdFx0XHRcdFx0XHRpbnN0YW5jZVN0b3JlLnVwZGF0ZSh7IHBhcmVudCB9KTtcblx0XHRcdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0fSxcblx0XHRcdFx0KSxcblx0XHRcdFx0dGhpcy5kb2N1bWVudCxcblx0XHRcdCk7XG5cdFx0fVxuXG5cdFx0Y29uc3QgW2luamVjdGVkQXJnc10gPSBbdGhpcy5nZXROZ3RBcmdzKCk/LnZhbHVlIHx8IFtdXTtcblxuXHRcdGlmIChuYW1lID09PSBTUEVDSUFMX0RPTV9UQUcuTkdUX1BSSU1JVElWRSkge1xuXHRcdFx0aWYgKCFpbmplY3RlZEFyZ3NbMF0pIHRocm93IG5ldyBFcnJvcihgW05HVF0gbmd0LXByaW1pdGl2ZSB3aXRob3V0IGFyZ3MgaXMgaW52YWxpZGApO1xuXHRcdFx0Y29uc3Qgb2JqZWN0ID0gaW5qZWN0ZWRBcmdzWzBdO1xuXHRcdFx0Y29uc3QgbG9jYWxTdGF0ZSA9IGdldExvY2FsU3RhdGUob2JqZWN0KTtcblx0XHRcdGlmICghbG9jYWxTdGF0ZSkge1xuXHRcdFx0XHQvLyBOT1RFOiBpZiBhbiBvYmplY3QgaXNuJ3QgYWxyZWFkeSBcInByZXBhcmVkXCIsIHdlIHByZXBhcmUgaXRcblx0XHRcdFx0cHJlcGFyZShvYmplY3QsIHsgc3RvcmU6IHRoaXMucm9vdFN0b3JlLCBwcmltaXRpdmU6IHRydWUgfSk7XG5cdFx0XHR9XG5cdFx0XHRyZXR1cm4gY3JlYXRlTm9kZSgndGhyZWUnLCBvYmplY3QsIHRoaXMuZG9jdW1lbnQpO1xuXHRcdH1cblxuXHRcdGNvbnN0IHRocmVlTmFtZSA9IGtlYmFiVG9QYXNjYWwobmFtZS5zdGFydHNXaXRoKCduZ3QtJykgPyBuYW1lLnNsaWNlKDQpIDogbmFtZSk7XG5cdFx0Y29uc3QgdGhyZWVUYXJnZXQgPSB0aGlzLmNhdGFsb2d1ZVt0aHJlZU5hbWVdO1xuXG5cdFx0Ly8gd2UgaGF2ZSB0aGUgVEhSRUUgY29uc3RydWN0b3IgaGVyZSwgaGFuZGxlIGl0XG5cdFx0aWYgKHRocmVlVGFyZ2V0KSB7XG5cdFx0XHRjb25zdCBpbnN0YW5jZSA9IHByZXBhcmUobmV3IHRocmVlVGFyZ2V0KC4uLmluamVjdGVkQXJncyksIHsgc3RvcmU6IHRoaXMucm9vdFN0b3JlIH0pO1xuXHRcdFx0Y29uc3Qgbm9kZSA9IGNyZWF0ZU5vZGUoJ3RocmVlJywgaW5zdGFuY2UsIHRoaXMuZG9jdW1lbnQpO1xuXHRcdFx0Y29uc3QgbG9jYWxTdGF0ZSA9IGdldExvY2FsU3RhdGUoaW5zdGFuY2UpIGFzIE5ndExvY2FsU3RhdGU7XG5cblx0XHRcdC8vIGF1dG8tYXR0YWNoIGZvciBnZW9tZXRyeSBhbmQgbWF0ZXJpYWxcblx0XHRcdGlmIChpcy5nZW9tZXRyeShpbnN0YW5jZSkpIHtcblx0XHRcdFx0bG9jYWxTdGF0ZS5hdHRhY2ggPSBbJ2dlb21ldHJ5J107XG5cdFx0XHR9IGVsc2UgaWYgKGlzLm1hdGVyaWFsKGluc3RhbmNlKSkge1xuXHRcdFx0XHRsb2NhbFN0YXRlLmF0dGFjaCA9IFsnbWF0ZXJpYWwnXTtcblx0XHRcdH1cblxuXHRcdFx0cmV0dXJuIG5vZGU7XG5cdFx0fVxuXG5cdFx0cmV0dXJuIGNyZWF0ZU5vZGUoJ2RvbScsIGVsZW1lbnQsIHRoaXMuZG9jdW1lbnQpO1xuXHR9XG5cblx0Y3JlYXRlQ29tbWVudCh2YWx1ZTogc3RyaW5nKSB7XG5cdFx0Y29uc3QgY29tbWVudCA9IHRoaXMuZGVsZWdhdGUuY3JlYXRlQ29tbWVudCh2YWx1ZSk7XG5cblx0XHQvLyBOT1RFOiB3ZSBhdHRhY2ggYW4gYXJyb3cgZnVuY3Rpb24gdG8gdGhlIENvbW1lbnQgbm9kZVxuXHRcdC8vIEluIG91ciBkaXJlY3RpdmVzLCB3ZSBjYW4gY2FsbCB0aGlzIGZ1bmN0aW9uIHRvIHRoZW4gc3RhcnQgdHJhY2tpbmcgdGhlIFJlbmRlcmVyTm9kZVxuXHRcdC8vIHRoaXMgaXMgZG9uZSB0byBsaW1pdCB0aGUgYW1vdW50IG9mIE5vZGVzIHdlIG5lZWQgdG8gcHJvY2VzcyBmb3IgZ2V0Q3JlYXRpb25TdGF0ZVxuXHRcdGNvbW1lbnRbU1BFQ0lBTF9JTlRFUk5BTF9BRERfQ09NTUVOVF0gPSAobm9kZTogTmd0UmVuZGVyZXJOb2RlIHwgJ2FyZ3MnKSA9PiB7XG5cdFx0XHRpZiAobm9kZSA9PT0gJ2FyZ3MnKSB7XG5cdFx0XHRcdHRoaXMuYXJnc0NvbW1lbnROb2Rlcy5wdXNoKGNvbW1lbnQpO1xuXHRcdFx0fSBlbHNlIGlmICh0eXBlb2Ygbm9kZSA9PT0gJ29iamVjdCcpIHtcblx0XHRcdFx0dGhpcy5wb3J0YWxDb21tZW50c05vZGVzLnB1c2gobm9kZSk7XG5cdFx0XHR9XG5cdFx0fTtcblxuXHRcdHJldHVybiBjcmVhdGVOb2RlKCdjb21tZW50JywgY29tbWVudCwgdGhpcy5kb2N1bWVudCk7XG5cdH1cblxuXHRhcHBlbmRDaGlsZChwYXJlbnQ6IE5ndFJlbmRlcmVyTm9kZSwgbmV3Q2hpbGQ6IE5ndFJlbmRlcmVyTm9kZSk6IHZvaWQge1xuXHRcdGNvbnN0IHBSUyA9IHBhcmVudC5fX25ndF9yZW5kZXJlcl9fO1xuXHRcdGNvbnN0IGNSUyA9IG5ld0NoaWxkLl9fbmd0X3JlbmRlcmVyX187XG5cblx0XHRpZiAoXG5cdFx0XHRwUlNbTmd0UmVuZGVyZXJDbGFzc0lkLnR5cGVdID09PSAnZG9tJyAmJlxuXHRcdFx0KG5ld0NoaWxkIGluc3RhbmNlb2YgVGV4dCB8fCBjUlNbTmd0UmVuZGVyZXJDbGFzc0lkLnR5cGVdID09PSAnZG9tJylcblx0XHQpIHtcblx0XHRcdGFkZENoaWxkKHBhcmVudCwgbmV3Q2hpbGQpO1xuXG5cdFx0XHRpZiAobmV3Q2hpbGRbJ19fbmd0X2RvbV9wYXJlbnRfXyddICYmIG5ld0NoaWxkWydfX25ndF9kb21fcGFyZW50X18nXSBpbnN0YW5jZW9mIEhUTUxFbGVtZW50KSB7XG5cdFx0XHRcdHRoaXMuZGVsZWdhdGUuYXBwZW5kQ2hpbGQobmV3Q2hpbGRbJ19fbmd0X2RvbV9wYXJlbnRfXyddLCBuZXdDaGlsZCk7XG5cdFx0XHRcdHJldHVybjtcblx0XHRcdH1cblxuXHRcdFx0dGhpcy5kZWxlZ2F0ZS5hcHBlbmRDaGlsZChwYXJlbnQsIG5ld0NoaWxkKTtcblx0XHRcdGlmIChjUlMpIHtcblx0XHRcdFx0c2V0UGFyZW50KG5ld0NoaWxkLCBwYXJlbnQpO1xuXHRcdFx0XHRpZiAodGhpcy5zaG91bGRGaW5kR3JhbmRwYXJlbnRJbnN0YW5jZShwUlMsIGNSUywgbmV3Q2hpbGQpKSB7XG5cdFx0XHRcdFx0Ly8gd2UnbGwgdHJ5IHRvIGdldCB0aGUgZ3JhbmRwYXJlbnQgaW5zdGFuY2UgaGVyZSBzbyB0aGF0IHdlIGNhbiBydW4gYXBwZW5kQ2hpbGQgd2l0aCBib3RoIGluc3RhbmNlc1xuXHRcdFx0XHRcdGNvbnN0IGNsb3Nlc3RHcmFuZHBhcmVudEluc3RhbmNlID0gZ2V0Q2xvc2VzdFBhcmVudFdpdGhJbnN0YW5jZShwYXJlbnQpO1xuXHRcdFx0XHRcdGlmIChjbG9zZXN0R3JhbmRwYXJlbnRJbnN0YW5jZSkgdGhpcy5hcHBlbmRDaGlsZChjbG9zZXN0R3JhbmRwYXJlbnRJbnN0YW5jZSwgbmV3Q2hpbGQpO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cblx0XHRcdHJldHVybjtcblx0XHR9XG5cblx0XHRpZiAoY1JTPy5bTmd0UmVuZGVyZXJDbGFzc0lkLnR5cGVdID09PSAnY29tbWVudCcpIHtcblx0XHRcdHNldFBhcmVudChuZXdDaGlsZCwgcGFyZW50KTtcblx0XHRcdHJldHVybjtcblx0XHR9XG5cblx0XHRzZXRQYXJlbnQobmV3Q2hpbGQsIHBhcmVudCk7XG5cdFx0YWRkQ2hpbGQocGFyZW50LCBuZXdDaGlsZCk7XG5cblx0XHQvLyBpZiBuZXcgY2hpbGQgaXMgYSBwb3J0YWxcblx0XHRpZiAoY1JTPy5bTmd0UmVuZGVyZXJDbGFzc0lkLnR5cGVdID09PSAncG9ydGFsJykge1xuXHRcdFx0aWYgKCFjUlNbTmd0UmVuZGVyZXJDbGFzc0lkLnBvcnRhbENvbnRhaW5lcl0pIHRoaXMucHJvY2Vzc1BvcnRhbENvbnRhaW5lcihuZXdDaGlsZCk7XG5cdFx0XHRpZiAoY1JTW05ndFJlbmRlcmVyQ2xhc3NJZC5wb3J0YWxDb250YWluZXJdKSB7XG5cdFx0XHRcdHRoaXMuYXBwZW5kQ2hpbGQocGFyZW50LCBjUlNbTmd0UmVuZGVyZXJDbGFzc0lkLnBvcnRhbENvbnRhaW5lcl0pO1xuXHRcdFx0fVxuXHRcdFx0cmV0dXJuO1xuXHRcdH1cblxuXHRcdC8vIGlmIHBhcmVudCBpcyBhIHBvcnRhbFxuXHRcdGlmIChwUlNbTmd0UmVuZGVyZXJDbGFzc0lkLnR5cGVdID09PSAncG9ydGFsJykge1xuXHRcdFx0aWYgKCFwUlNbTmd0UmVuZGVyZXJDbGFzc0lkLnBvcnRhbENvbnRhaW5lcl0pIHRoaXMucHJvY2Vzc1BvcnRhbENvbnRhaW5lcihwYXJlbnQpO1xuXG5cdFx0XHRpZiAocFJTW05ndFJlbmRlcmVyQ2xhc3NJZC5wb3J0YWxDb250YWluZXJdKSB7XG5cdFx0XHRcdHRoaXMuYXBwZW5kQ2hpbGQocFJTW05ndFJlbmRlcmVyQ2xhc3NJZC5wb3J0YWxDb250YWluZXJdLCBuZXdDaGlsZCk7XG5cdFx0XHR9XG5cdFx0XHRyZXR1cm47XG5cdFx0fVxuXG5cdFx0Ly8gaWYgYm90aCBhcmUgdGhyZWUgaW5zdGFuY2VzLCBzdHJhaWdodGZvcndhcmQgY2FzZVxuXHRcdGlmIChwUlNbTmd0UmVuZGVyZXJDbGFzc0lkLnR5cGVdID09PSAndGhyZWUnICYmIGNSUz8uW05ndFJlbmRlcmVyQ2xhc3NJZC50eXBlXSA9PT0gJ3RocmVlJykge1xuXHRcdFx0Y29uc3QgY0xTID0gZ2V0TG9jYWxTdGF0ZShuZXdDaGlsZCk7XG5cblx0XHRcdC8vIGlmIGNoaWxkIGFscmVhZHkgYXR0YWNoZWQgdG8gYSBwYXJlbnQsIHNraXBcblx0XHRcdGlmIChjTFM/Lmluc3RhbmNlU3RvcmU/LmdldCgncGFyZW50JykpIHJldHVybjtcblx0XHRcdGlmIChwYXJlbnQgPT09IG5ld0NoaWxkKSByZXR1cm47XG5cblx0XHRcdC8vIGF0dGFjaCBUSFJFRSBjaGlsZFxuXHRcdFx0YXR0YWNoVGhyZWVDaGlsZChwYXJlbnQsIG5ld0NoaWxkKTtcblx0XHRcdHJldHVybjtcblx0XHR9XG5cblx0XHQvLyBpZiBvbmx5IHRoZSBwYXJlbnQgaXMgdGhlIFRIUkVFIGluc3RhbmNlXG5cdFx0aWYgKHBSU1tOZ3RSZW5kZXJlckNsYXNzSWQudHlwZV0gPT09ICd0aHJlZScpIHtcblx0XHRcdGZvciAoY29uc3QgcmVuZGVyQ2hpbGQgb2YgY1JTPy5bTmd0UmVuZGVyZXJDbGFzc0lkLmNoaWxkcmVuXSB8fCBbXSkge1xuXHRcdFx0XHR0aGlzLmFwcGVuZENoaWxkKHBhcmVudCwgcmVuZGVyQ2hpbGQpO1xuXHRcdFx0fVxuXHRcdH1cblxuXHRcdGlmICh0aGlzLnNob3VsZEZpbmRHcmFuZHBhcmVudEluc3RhbmNlKHBSUywgY1JTLCBuZXdDaGlsZCkpIHtcblx0XHRcdC8vIHdlJ2xsIHRyeSB0byBnZXQgdGhlIGdyYW5kcGFyZW50IGluc3RhbmNlIGhlcmUgc28gdGhhdCB3ZSBjYW4gcnVuIGFwcGVuZENoaWxkIHdpdGggYm90aCBpbnN0YW5jZXNcblx0XHRcdGNvbnN0IGNsb3Nlc3RHcmFuZHBhcmVudEluc3RhbmNlID0gZ2V0Q2xvc2VzdFBhcmVudFdpdGhJbnN0YW5jZShwYXJlbnQpO1xuXHRcdFx0aWYgKGNsb3Nlc3RHcmFuZHBhcmVudEluc3RhbmNlKSB0aGlzLmFwcGVuZENoaWxkKGNsb3Nlc3RHcmFuZHBhcmVudEluc3RhbmNlLCBuZXdDaGlsZCk7XG5cdFx0XHRyZXR1cm47XG5cdFx0fVxuXHR9XG5cblx0aW5zZXJ0QmVmb3JlKFxuXHRcdHBhcmVudDogTmd0UmVuZGVyZXJOb2RlLFxuXHRcdG5ld0NoaWxkOiBOZ3RSZW5kZXJlck5vZGUsXG5cdFx0Ly8gVE9ETzogd2UgbWlnaHQgbmVlZCB0aGVzZT9cblx0XHQvLyBfcmVmQ2hpbGQ6IE5ndFJlbmRlcmVyTm9kZSxcblx0XHQvLyBfaXNNb3ZlPzogYm9vbGVhbiB8IHVuZGVmaW5lZCxcblx0KTogdm9pZCB7XG5cdFx0Ly8gTk9URTogbm90IHN1cmUgd2h5IHRoaXMgaXMgaGVyZS4gaW52ZXN0aWdhdGUgd2hlbiB3ZSBoYXZlIHRpbWVcblx0XHQvLyBpZiAocGFyZW50IGluc3RhbmNlb2YgSFRNTEVsZW1lbnQgJiYgKG5ld0NoaWxkIGluc3RhbmNlb2YgSFRNTEVsZW1lbnQgfHwgbmV3Q2hpbGQgaW5zdGFuY2VvZiBUZXh0KSkge1xuXHRcdC8vIFx0cmV0dXJuIHRoaXMuZGVsZWdhdGUuYXBwZW5kQ2hpbGQocGFyZW50LCBuZXdDaGlsZCk7XG5cdFx0Ly8gfVxuXG5cdFx0aWYgKHBhcmVudCA9PSBudWxsIHx8ICFwYXJlbnQuX19uZ3RfcmVuZGVyZXJfXyB8fCBwYXJlbnQgPT09IG5ld0NoaWxkKSByZXR1cm47XG5cdFx0dGhpcy5hcHBlbmRDaGlsZChwYXJlbnQsIG5ld0NoaWxkKTtcblx0fVxuXG5cdHJlbW92ZUNoaWxkKHBhcmVudDogTmd0UmVuZGVyZXJOb2RlIHwgbnVsbCwgb2xkQ2hpbGQ6IE5ndFJlbmRlcmVyTm9kZSwgaXNIb3N0RWxlbWVudD86IGJvb2xlYW4gfCB1bmRlZmluZWQpOiB2b2lkIHtcblx0XHRpZiAocGFyZW50ID09IG51bGwpIHtcblx0XHRcdHBhcmVudCA9ICh1bnRyYWNrZWQoKCkgPT4gZ2V0TG9jYWxTdGF0ZShvbGRDaGlsZCk/LnBhcmVudD8uKCkpIHx8XG5cdFx0XHRcdG9sZENoaWxkLl9fbmd0X3JlbmRlcmVyX18/LltOZ3RSZW5kZXJlckNsYXNzSWQucGFyZW50XSkgYXMgTmd0UmVuZGVyZXJOb2RlO1xuXHRcdH1cblxuXHRcdGNvbnN0IGNSUyA9IG9sZENoaWxkLl9fbmd0X3JlbmRlcmVyX187XG5cblx0XHQvLyBpZiBwYXJlbnQgaXMgc3RpbGwgZmFsc3ksIHdlIGRvbid0IGtub3cgd2hhdCB0byBkbyB3aXRoIHRoZSBwYXJlbnQuXG5cdFx0Ly8gd2UnbGwganVzdCByZW1vdmUgdGhlIGNoaWxkIGFuZCBkZXN0cm95IGl0XG5cdFx0aWYgKHBhcmVudCA9PSBudWxsKSB7XG5cdFx0XHRpZiAoY1JTKSB7XG5cdFx0XHRcdGlmIChjUlNbTmd0UmVuZGVyZXJDbGFzc0lkLnR5cGVdID09PSAndGhyZWUnKSB7XG5cdFx0XHRcdFx0cmVtb3ZlVGhyZWVDaGlsZChvbGRDaGlsZCwgdW5kZWZpbmVkLCB0cnVlKTtcblx0XHRcdFx0fVxuXHRcdFx0XHR0aGlzLmRlc3Ryb3lJbnRlcm5hbChvbGRDaGlsZCwgdW5kZWZpbmVkKTtcblx0XHRcdH1cblxuXHRcdFx0cmV0dXJuO1xuXHRcdH1cblxuXHRcdGNvbnN0IHBSUyA9IHBhcmVudC5fX25ndF9yZW5kZXJlcl9fO1xuXG5cdFx0aWYgKFxuXHRcdFx0KCFjUlMgfHwgIXBSUykgJiZcblx0XHRcdHBhcmVudCBpbnN0YW5jZW9mIEVsZW1lbnQgJiZcblx0XHRcdChvbGRDaGlsZCBpbnN0YW5jZW9mIEVsZW1lbnQgfHwgb2xkQ2hpbGQgaW5zdGFuY2VvZiBUZXh0IHx8IG9sZENoaWxkIGluc3RhbmNlb2YgQ29tbWVudClcblx0XHQpIHtcblx0XHRcdHRoaXMuZGVsZWdhdGUucmVtb3ZlQ2hpbGQocGFyZW50LCBvbGRDaGlsZCk7XG5cdFx0XHR0aGlzLmRlc3Ryb3lJbnRlcm5hbChvbGRDaGlsZCwgcGFyZW50KTtcblx0XHRcdHJldHVybjtcblx0XHR9XG5cblx0XHRpZiAoY1JTW05ndFJlbmRlcmVyQ2xhc3NJZC50eXBlXSA9PT0gJ2RvbScgJiYgKCFwUlMgfHwgcFJTW05ndFJlbmRlcmVyQ2xhc3NJZC50eXBlXSA9PT0gJ2RvbScpKSB7XG5cdFx0XHR0aGlzLmRlbGVnYXRlLnJlbW92ZUNoaWxkKHBhcmVudCwgb2xkQ2hpbGQpO1xuXHRcdFx0dGhpcy5kZXN0cm95SW50ZXJuYWwob2xkQ2hpbGQsIHBhcmVudCk7XG5cdFx0XHRyZXR1cm47XG5cdFx0fVxuXG5cdFx0aWYgKHBSU1tOZ3RSZW5kZXJlckNsYXNzSWQudHlwZV0gPT09ICd0aHJlZScgJiYgY1JTW05ndFJlbmRlcmVyQ2xhc3NJZC50eXBlXSA9PT0gJ3RocmVlJykge1xuXHRcdFx0cmVtb3ZlVGhyZWVDaGlsZChvbGRDaGlsZCwgcGFyZW50LCB0cnVlKTtcblx0XHRcdHRoaXMuZGVzdHJveUludGVybmFsKG9sZENoaWxkLCBwYXJlbnQpO1xuXHRcdFx0cmV0dXJuO1xuXHRcdH1cblxuXHRcdGlmIChcblx0XHRcdHBSU1tOZ3RSZW5kZXJlckNsYXNzSWQudHlwZV0gPT09ICdwb3J0YWwnICYmXG5cdFx0XHRwUlNbTmd0UmVuZGVyZXJDbGFzc0lkLnBvcnRhbENvbnRhaW5lcl0/Ll9fbmd0X3JlbmRlcmVyX19bTmd0UmVuZGVyZXJDbGFzc0lkLnR5cGVdID09PSAndGhyZWUnXG5cdFx0KSB7XG5cdFx0XHR0aGlzLnJlbW92ZUNoaWxkKHBSU1tOZ3RSZW5kZXJlckNsYXNzSWQucG9ydGFsQ29udGFpbmVyXSwgb2xkQ2hpbGQsIGlzSG9zdEVsZW1lbnQpO1xuXHRcdFx0cmV0dXJuO1xuXHRcdH1cblxuXHRcdGlmIChwUlNbTmd0UmVuZGVyZXJDbGFzc0lkLnR5cGVdID09PSAndGhyZWUnKSB7XG5cdFx0XHR0aGlzLmRlc3Ryb3lJbnRlcm5hbChvbGRDaGlsZCwgcGFyZW50KTtcblx0XHRcdHJldHVybjtcblx0XHR9XG5cblx0XHRjb25zdCBjbG9zZXN0R3JhbmRwYXJlbnRJbnN0YW5jZSA9IGdldENsb3Nlc3RQYXJlbnRXaXRoSW5zdGFuY2UocGFyZW50KTtcblx0XHRpZiAoY2xvc2VzdEdyYW5kcGFyZW50SW5zdGFuY2UpIHRoaXMucmVtb3ZlQ2hpbGQoY2xvc2VzdEdyYW5kcGFyZW50SW5zdGFuY2UsIG9sZENoaWxkLCBpc0hvc3RFbGVtZW50KTtcblx0XHR0aGlzLmRlc3Ryb3lJbnRlcm5hbChvbGRDaGlsZCwgY2xvc2VzdEdyYW5kcGFyZW50SW5zdGFuY2UgYXMgTmd0UmVuZGVyZXJOb2RlKTtcblx0fVxuXG5cdHBhcmVudE5vZGUobm9kZTogTmd0UmVuZGVyZXJOb2RlKSB7XG5cdFx0Y29uc3QgclMgPSBub2RlLl9fbmd0X3JlbmRlcmVyX187XG5cdFx0aWYgKHJTPy5bTmd0UmVuZGVyZXJDbGFzc0lkLnBhcmVudF0pIHJldHVybiByU1tOZ3RSZW5kZXJlckNsYXNzSWQucGFyZW50XTtcblx0XHRyZXR1cm4gdGhpcy5kZWxlZ2F0ZS5wYXJlbnROb2RlKG5vZGUpO1xuXHR9XG5cblx0cHJpdmF0ZSBzZXRBdHRyaWJ1dGVJbnRlcm5hbChcblx0XHRlbDogTmd0UmVuZGVyZXJOb2RlLFxuXHRcdG5hbWU6IHN0cmluZyxcblx0XHR2YWx1ZTogc3RyaW5nLFxuXHRcdF9uYW1lc3BhY2U/OiBzdHJpbmcgfCBudWxsIHwgdW5kZWZpbmVkLFxuXHQpOiBib29sZWFuIHtcblx0XHRjb25zdCByUyA9IGVsLl9fbmd0X3JlbmRlcmVyX187XG5cdFx0aWYgKHJTW05ndFJlbmRlcmVyQ2xhc3NJZC5kZXN0cm95ZWRdKSByZXR1cm4gZmFsc2U7XG5cblx0XHRpZiAoclNbTmd0UmVuZGVyZXJDbGFzc0lkLnR5cGVdID09PSAndGhyZWUnKSB7XG5cdFx0XHRpZiAobmFtZSA9PT0gU1BFQ0lBTF9QUk9QRVJUSUVTLlJFTkRFUl9QUklPUklUWSkge1xuXHRcdFx0XHQvLyBOT1RFOiBwcmlvcml0eSBuZWVkcyB0byBiZSBzZXQgYXMgYW4gYXR0cmlidXRlIHN0cmluZyBzbyB0aGF0IHRoZXkgY2FuIGJlIHNldCBhcyBlYXJseSBhcyBwb3NzaWJsZVxuXHRcdFx0XHQvLyB3ZSBjb252ZXJ0IHRoYXQgc3RyaW5nIHRvIGEgbnVtYmVyLiBpZiBpdCdzIGludmFsaWQsIGRlZmF1bHQgMFxuXHRcdFx0XHRsZXQgcHJpb3JpdHkgPSBOdW1iZXIodmFsdWUpO1xuXHRcdFx0XHRpZiAoaXNOYU4ocHJpb3JpdHkpKSB7XG5cdFx0XHRcdFx0cHJpb3JpdHkgPSAwO1xuXHRcdFx0XHRcdGNvbnNvbGUud2FybihgW05HVF0gXCJwcmlvcml0eVwiIGlzIGFuIGludmFsaWQgbnVtYmVyLCBkZWZhdWx0IHRvIDBgKTtcblx0XHRcdFx0fVxuXHRcdFx0XHRjb25zdCBsb2NhbFN0YXRlID0gZ2V0TG9jYWxTdGF0ZShlbCk7XG5cdFx0XHRcdGlmIChsb2NhbFN0YXRlKSBsb2NhbFN0YXRlLnByaW9yaXR5ID0gcHJpb3JpdHk7XG5cdFx0XHR9IGVsc2UgaWYgKG5hbWUgPT09IFNQRUNJQUxfUFJPUEVSVElFUy5BVFRBQ0gpIHtcblx0XHRcdFx0Ly8gTk9URTogaGFuZGxlIGF0dGFjaCBhcyBzdHJpbmdcblx0XHRcdFx0Y29uc3QgcGF0aHMgPSB2YWx1ZS5zcGxpdCgnLicpO1xuXHRcdFx0XHRpZiAocGF0aHMubGVuZ3RoKSB7XG5cdFx0XHRcdFx0Y29uc3QgbG9jYWxTdGF0ZSA9IGdldExvY2FsU3RhdGUoZWwpO1xuXHRcdFx0XHRcdGlmIChsb2NhbFN0YXRlKSBsb2NhbFN0YXRlLmF0dGFjaCA9IHBhdGhzO1xuXHRcdFx0XHR9XG5cdFx0XHR9IGVsc2UgaWYgKG5hbWUgPT09IFNQRUNJQUxfUFJPUEVSVElFUy5SQVdfVkFMVUUpIHtcblx0XHRcdFx0Ly8gTk9URTogY29lcmNpb25cblx0XHRcdFx0bGV0IG1heWJlQ29lcmNlZDogc3RyaW5nIHwgbnVtYmVyIHwgYm9vbGVhbiA9IHZhbHVlO1xuXHRcdFx0XHRpZiAobWF5YmVDb2VyY2VkID09PSAnJyB8fCBtYXliZUNvZXJjZWQgPT09ICd0cnVlJyB8fCBtYXliZUNvZXJjZWQgPT09ICdmYWxzZScpIHtcblx0XHRcdFx0XHRtYXliZUNvZXJjZWQgPSBtYXliZUNvZXJjZWQgPT09ICd0cnVlJyB8fCBtYXliZUNvZXJjZWQgPT09ICcnO1xuXHRcdFx0XHR9IGVsc2UgaWYgKCFpc05hTihOdW1iZXIobWF5YmVDb2VyY2VkKSkpIHtcblx0XHRcdFx0XHRtYXliZUNvZXJjZWQgPSBOdW1iZXIobWF5YmVDb2VyY2VkKTtcblx0XHRcdFx0fVxuXHRcdFx0XHRyU1tOZ3RSZW5kZXJlckNsYXNzSWQucmF3VmFsdWVdID0gbWF5YmVDb2VyY2VkO1xuXHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0YXBwbHlQcm9wcyhlbCwgeyBbbmFtZV06IHZhbHVlIH0pO1xuXHRcdFx0fVxuXG5cdFx0XHRyZXR1cm4gZmFsc2U7XG5cdFx0fVxuXG5cdFx0cmV0dXJuIHRydWU7XG5cdH1cblxuXHRzZXRBdHRyaWJ1dGUoZWw6IE5ndFJlbmRlcmVyTm9kZSwgbmFtZTogc3RyaW5nLCB2YWx1ZTogc3RyaW5nLCBuYW1lc3BhY2U/OiBzdHJpbmcgfCBudWxsIHwgdW5kZWZpbmVkKTogdm9pZCB7XG5cdFx0Y29uc3QgdXNlRGVsZWdhdGUgPSB0aGlzLnNldEF0dHJpYnV0ZUludGVybmFsKGVsLCBuYW1lLCB2YWx1ZSwgbmFtZXNwYWNlKTtcblxuXHRcdGlmICh1c2VEZWxlZ2F0ZSkge1xuXHRcdFx0dGhpcy5kZWxlZ2F0ZS5zZXRBdHRyaWJ1dGUoZWwsIG5hbWUsIHZhbHVlKTtcblx0XHR9XG5cdH1cblxuXHRyZW1vdmVBdHRyaWJ1dGUoZWw6IE5ndFJlbmRlcmVyTm9kZSwgbmFtZTogc3RyaW5nLCBuYW1lc3BhY2U/OiBzdHJpbmcgfCBudWxsIHwgdW5kZWZpbmVkKTogdm9pZCB7XG5cdFx0Y29uc3QgdXNlRGVsZWdhdGUgPSB0aGlzLnNldEF0dHJpYnV0ZUludGVybmFsKGVsLCBuYW1lLCB1bmRlZmluZWQhLCBuYW1lc3BhY2UpO1xuXG5cdFx0aWYgKHVzZURlbGVnYXRlKSB7XG5cdFx0XHR0aGlzLmRlbGVnYXRlLnJlbW92ZUF0dHJpYnV0ZShlbCwgbmFtZSwgbmFtZXNwYWNlKTtcblx0XHR9XG5cdH1cblxuXHRzZXRQcm9wZXJ0eShlbDogTmd0UmVuZGVyZXJOb2RlLCBuYW1lOiBzdHJpbmcsIHZhbHVlOiBhbnkpOiB2b2lkIHtcblx0XHRjb25zdCByUyA9IGVsLl9fbmd0X3JlbmRlcmVyX187XG5cdFx0aWYgKCFyUyB8fCByU1tOZ3RSZW5kZXJlckNsYXNzSWQuZGVzdHJveWVkXSkgcmV0dXJuO1xuXG5cdFx0aWYgKHJTW05ndFJlbmRlcmVyQ2xhc3NJZC50eXBlXSA9PT0gJ3RocmVlJykge1xuXHRcdFx0aWYgKG5hbWUgPT09IFNQRUNJQUxfUFJPUEVSVElFUy5QQVJBTUVURVJTKSB7XG5cdFx0XHRcdC8vIE5PVEU6IHNob3J0LWN1dCBmb3IgbnVsbCByYXljYXN0IHRvIHByZXZlbnQgdXBzdHJlYW0gZnJvbSBjcmVhdGluZyBhIG51bGxSYXljYXN0IHByb3BlcnR5XG5cdFx0XHRcdGlmICgncmF5Y2FzdCcgaW4gdmFsdWUgJiYgdmFsdWVbJ3JheWNhc3QnXSA9PT0gbnVsbCkge1xuXHRcdFx0XHRcdHZhbHVlWydyYXljYXN0J10gPSAoKSA9PiBudWxsO1xuXHRcdFx0XHR9XG5cdFx0XHRcdGFwcGx5UHJvcHMoZWwsIHZhbHVlKTtcblx0XHRcdFx0cmV0dXJuO1xuXHRcdFx0fVxuXG5cdFx0XHRjb25zdCBsb2NhbFN0YXRlID0gZ2V0TG9jYWxTdGF0ZShlbCk7XG5cdFx0XHRjb25zdCBwYXJlbnQgPSBsb2NhbFN0YXRlPy5pbnN0YW5jZVN0b3JlLmdldCgncGFyZW50JykgfHwgclNbTmd0UmVuZGVyZXJDbGFzc0lkLnBhcmVudF07XG5cblx0XHRcdC8vIFtyYXdWYWx1ZV1cblx0XHRcdGlmIChsb2NhbFN0YXRlPy5pc1JhdyAmJiBuYW1lID09PSBTUEVDSUFMX1BST1BFUlRJRVMuUkFXX1ZBTFVFKSB7XG5cdFx0XHRcdHJTW05ndFJlbmRlcmVyQ2xhc3NJZC5yYXdWYWx1ZV0gPSB2YWx1ZTtcblx0XHRcdFx0aWYgKHBhcmVudCkgYXR0YWNoVGhyZWVDaGlsZChwYXJlbnQsIGVsKTtcblx0XHRcdFx0cmV0dXJuO1xuXHRcdFx0fVxuXG5cdFx0XHQvLyBbYXR0YWNoXVxuXHRcdFx0aWYgKG5hbWUgPT09IFNQRUNJQUxfUFJPUEVSVElFUy5BVFRBQ0gpIHtcblx0XHRcdFx0aWYgKGxvY2FsU3RhdGUpXG5cdFx0XHRcdFx0bG9jYWxTdGF0ZS5hdHRhY2ggPSBBcnJheS5pc0FycmF5KHZhbHVlKVxuXHRcdFx0XHRcdFx0PyB2YWx1ZS5tYXAoKHYpID0+IHYudG9TdHJpbmcoKSlcblx0XHRcdFx0XHRcdDogdHlwZW9mIHZhbHVlID09PSAnZnVuY3Rpb24nXG5cdFx0XHRcdFx0XHRcdD8gdmFsdWVcblx0XHRcdFx0XHRcdFx0OiB0eXBlb2YgdmFsdWUgPT09ICdzdHJpbmcnXG5cdFx0XHRcdFx0XHRcdFx0PyB2YWx1ZS5zcGxpdCgnLicpXG5cdFx0XHRcdFx0XHRcdFx0OiBbdmFsdWVdO1xuXHRcdFx0XHRpZiAocGFyZW50KSBhdHRhY2hUaHJlZUNoaWxkKHBhcmVudCwgZWwpO1xuXHRcdFx0XHRyZXR1cm47XG5cdFx0XHR9XG5cblx0XHRcdC8vIE5PVEU6IHNob3J0LWN1dCBmb3IgbnVsbCByYXljYXN0IHRvIHByZXZlbnQgdXBzdHJlYW0gZnJvbSBjcmVhdGluZyBhIG51bGxSYXljYXN0IHByb3BlcnR5XG5cdFx0XHRpZiAobmFtZSA9PT0gJ3JheWNhc3QnICYmIHZhbHVlID09PSBudWxsKSB7XG5cdFx0XHRcdHZhbHVlID0gKCkgPT4gbnVsbDtcblx0XHRcdH1cblxuXHRcdFx0YXBwbHlQcm9wcyhlbCwgeyBbbmFtZV06IHZhbHVlIH0pO1xuXHRcdFx0cmV0dXJuO1xuXHRcdH1cblxuXHRcdHJldHVybiB0aGlzLmRlbGVnYXRlLnNldFByb3BlcnR5KGVsLCBuYW1lLCB2YWx1ZSk7XG5cdH1cblxuXHRsaXN0ZW4odGFyZ2V0OiBOZ3RSZW5kZXJlck5vZGUsIGV2ZW50TmFtZTogc3RyaW5nLCBjYWxsYmFjazogKGV2ZW50OiBhbnkpID0+IGJvb2xlYW4gfCB2b2lkKTogKCkgPT4gdm9pZCB7XG5cdFx0Y29uc3QgclMgPSB0YXJnZXQuX19uZ3RfcmVuZGVyZXJfXztcblxuXHRcdC8vIGlmIHRoZSB0YXJnZXQgZG9lc24ndCBoYXZlIF9fbmd0X3JlbmRlcmVyX18sIHdlIGRlbGVnYXRlXG5cdFx0Ly8gaWYgdGFyZ2V0IGlzIERPTSBub2RlLCB3ZSBkZWxlZ2F0ZVxuXHRcdGlmICghclMgfHwgaXNET00odGFyZ2V0KSkge1xuXHRcdFx0cmV0dXJuIHRoaXMuZGVsZWdhdGUubGlzdGVuKHRhcmdldCwgZXZlbnROYW1lLCBjYWxsYmFjayk7XG5cdFx0fVxuXG5cdFx0aWYgKHJTW05ndFJlbmRlcmVyQ2xhc3NJZC50eXBlXSA9PT0gJ3RocmVlJykge1xuXHRcdFx0Y29uc3QgaW5zdGFuY2UgPSB0YXJnZXQ7XG5cdFx0XHRjb25zdCBsb2NhbFN0YXRlID0gZ2V0TG9jYWxTdGF0ZShpbnN0YW5jZSk7XG5cdFx0XHRjb25zdCBwcmlvcml0eSA9IGxvY2FsU3RhdGU/LnByaW9yaXR5ID8/IDA7XG5cdFx0XHRyZXR1cm4gcHJvY2Vzc1RocmVlRXZlbnQoaW5zdGFuY2UsIHByaW9yaXR5LCBldmVudE5hbWUsIGNhbGxiYWNrKTtcblx0XHR9XG5cblx0XHQvLyBAdHMtZXhwZWN0LWVycm9yIC0gd2Uga25vdyB0aGF0IHRhcmdldCBpcyBub3QgRE9NIG5vZGVcblx0XHRpZiAodGFyZ2V0ID09PSB0aGlzLnJvb3RTdG9yZS5zbmFwc2hvdC5zY2VuZSkge1xuXHRcdFx0bGV0IFtkb21UYXJnZXQsIGV2ZW50XSA9IGV2ZW50TmFtZS5zcGxpdCgnOicpO1xuXHRcdFx0aWYgKGV2ZW50ID09IG51bGwpIHtcblx0XHRcdFx0ZXZlbnQgPSBkb21UYXJnZXQ7XG5cdFx0XHRcdGRvbVRhcmdldCA9ICcnO1xuXHRcdFx0fVxuXHRcdFx0Y29uc3QgZXZlbnRUYXJnZXQgPVxuXHRcdFx0XHRkb21UYXJnZXQgPT09ICd3aW5kb3cnXG5cdFx0XHRcdFx0PyAodGFyZ2V0IGFzIE5ndEFueVJlY29yZClbJ293bmVyRG9jdW1lbnQnXVsnZGVmYXVsdFZpZXcnXVxuXHRcdFx0XHRcdDogKHRhcmdldCBhcyBOZ3RBbnlSZWNvcmQpWydvd25lckRvY3VtZW50J107XG5cdFx0XHRyZXR1cm4gdGhpcy5kZWxlZ2F0ZS5saXN0ZW4oZXZlbnRUYXJnZXQsIGV2ZW50LCBjYWxsYmFjayk7XG5cdFx0fVxuXG5cdFx0cmV0dXJuICgpID0+IHt9O1xuXHR9XG5cblx0cHJpdmF0ZSBkZXN0cm95SW50ZXJuYWwobm9kZTogTmd0UmVuZGVyZXJOb2RlLCBwYXJlbnQ/OiBOZ3RSZW5kZXJlck5vZGUpIHtcblx0XHRjb25zdCByUyA9IG5vZGUuX19uZ3RfcmVuZGVyZXJfXztcblx0XHRpZiAoIXJTIHx8IHJTW05ndFJlbmRlcmVyQ2xhc3NJZC5kZXN0cm95ZWRdKSByZXR1cm47XG5cdFx0aWYgKHJTW05ndFJlbmRlcmVyQ2xhc3NJZC50eXBlXSA9PT0gJ3RocmVlJykge1xuXHRcdFx0Y29uc3QgbG9jYWxTdGF0ZSA9IGdldExvY2FsU3RhdGUobm9kZSk7XG5cdFx0XHRpZiAobG9jYWxTdGF0ZT8uaW5zdGFuY2VTdG9yZSkge1xuXHRcdFx0XHRsb2NhbFN0YXRlLmluc3RhbmNlU3RvcmUuZ2V0KCdvYmplY3RzJykuZm9yRWFjaCgob2JqKSA9PiB0aGlzLmRlc3Ryb3lJbnRlcm5hbChvYmosIHBhcmVudCkpO1xuXHRcdFx0XHRsb2NhbFN0YXRlLmluc3RhbmNlU3RvcmUuZ2V0KCdub25PYmplY3RzJykuZm9yRWFjaCgob2JqKSA9PiB0aGlzLmRlc3Ryb3lJbnRlcm5hbChvYmosIHBhcmVudCkpO1xuXHRcdFx0fVxuXG5cdFx0XHRpZiAobG9jYWxTdGF0ZT8ub25VcGRhdGUpIGRlbGV0ZSBsb2NhbFN0YXRlLm9uVXBkYXRlO1xuXHRcdFx0aWYgKGxvY2FsU3RhdGU/Lm9uQXR0YWNoKSBkZWxldGUgbG9jYWxTdGF0ZS5vbkF0dGFjaDtcblxuXHRcdFx0ZGVsZXRlIChsb2NhbFN0YXRlIGFzIE5ndEFueVJlY29yZClbJ29iamVjdHMnXTtcblx0XHRcdGRlbGV0ZSAobG9jYWxTdGF0ZSBhcyBOZ3RBbnlSZWNvcmQpWydub25PYmplY3RzJ107XG5cdFx0XHRkZWxldGUgKGxvY2FsU3RhdGUgYXMgTmd0QW55UmVjb3JkKVsncGFyZW50J107XG5cdFx0XHRkZWxldGUgKGxvY2FsU3RhdGUgYXMgTmd0QW55UmVjb3JkKVsnYWRkJ107XG5cdFx0XHRkZWxldGUgKGxvY2FsU3RhdGUgYXMgTmd0QW55UmVjb3JkKVsncmVtb3ZlJ107XG5cdFx0XHRkZWxldGUgKGxvY2FsU3RhdGUgYXMgTmd0QW55UmVjb3JkKVsnc3RvcmUnXTtcblx0XHRcdGRlbGV0ZSAobG9jYWxTdGF0ZSBhcyBOZ3RBbnlSZWNvcmQpWydoYW5kbGVycyddO1xuXG5cdFx0XHRpZiAoIWxvY2FsU3RhdGU/LnByaW1pdGl2ZSkge1xuXHRcdFx0XHRkZWxldGUgKG5vZGUgYXMgTmd0QW55UmVjb3JkKVsnX19uZ3RfXyddO1xuXHRcdFx0fVxuXHRcdH1cblxuXHRcdGlmIChyU1tOZ3RSZW5kZXJlckNsYXNzSWQudHlwZV0gPT09ICdjb21tZW50Jykge1xuXHRcdFx0clNbTmd0UmVuZGVyZXJDbGFzc0lkLmRlYnVnTm9kZV0gPSBudWxsITtcblx0XHRcdHJTW05ndFJlbmRlcmVyQ2xhc3NJZC5kZWJ1Z05vZGVGYWN0b3J5XSA9IG51bGwhO1xuXHRcdFx0ZGVsZXRlIChub2RlIGFzIE5ndEFueVJlY29yZClbU1BFQ0lBTF9JTlRFUk5BTF9BRERfQ09NTUVOVF07XG5cdFx0XHR0aGlzLnJlbW92ZUNvbW1lbnROb2RlKG5vZGUsIHRoaXMuYXJnc0NvbW1lbnROb2Rlcyk7XG5cdFx0fVxuXG5cdFx0aWYgKHJTW05ndFJlbmRlcmVyQ2xhc3NJZC50eXBlXSA9PT0gJ3BvcnRhbCcpIHtcblx0XHRcdHJTW05ndFJlbmRlcmVyQ2xhc3NJZC5kZWJ1Z05vZGVdID0gbnVsbCE7XG5cdFx0XHRyU1tOZ3RSZW5kZXJlckNsYXNzSWQuZGVidWdOb2RlRmFjdG9yeV0gPSBudWxsITtcblx0XHRcdHRoaXMucmVtb3ZlQ29tbWVudE5vZGUobm9kZSwgdGhpcy5wb3J0YWxDb21tZW50c05vZGVzKTtcblx0XHR9XG5cblx0XHQvLyBudWxsaWZ5IHBhcmVudFxuXHRcdHJTW05ndFJlbmRlcmVyQ2xhc3NJZC5wYXJlbnRdID0gbnVsbDtcblx0XHRmb3IgKGNvbnN0IHJlbmRlckNoaWxkIG9mIHJTW05ndFJlbmRlcmVyQ2xhc3NJZC5jaGlsZHJlbl0gfHwgW10pIHtcblx0XHRcdGlmIChyZW5kZXJDaGlsZC5fX25ndF9yZW5kZXJlcl9fPy5bTmd0UmVuZGVyZXJDbGFzc0lkLnR5cGVdID09PSAndGhyZWUnICYmIHBhcmVudCkge1xuXHRcdFx0XHRpZiAocGFyZW50Ll9fbmd0X3JlbmRlcmVyX18/LltOZ3RSZW5kZXJlckNsYXNzSWQudHlwZV0gPT09ICd0aHJlZScpIHtcblx0XHRcdFx0XHRyZW1vdmVUaHJlZUNoaWxkKHJlbmRlckNoaWxkLCBwYXJlbnQsIHRydWUpO1xuXHRcdFx0XHRcdGNvbnRpbnVlO1xuXHRcdFx0XHR9XG5cblx0XHRcdFx0Y29uc3QgY2xvc2VzdEluc3RhbmNlID0gZ2V0Q2xvc2VzdFBhcmVudFdpdGhJbnN0YW5jZShwYXJlbnQpO1xuXHRcdFx0XHRpZiAoY2xvc2VzdEluc3RhbmNlKSB7XG5cdFx0XHRcdFx0cmVtb3ZlVGhyZWVDaGlsZChyZW5kZXJDaGlsZCwgY2xvc2VzdEluc3RhbmNlLCB0cnVlKTtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdFx0dGhpcy5kZXN0cm95SW50ZXJuYWwocmVuZGVyQ2hpbGQsIHBhcmVudCk7XG5cdFx0fVxuXG5cdFx0clNbTmd0UmVuZGVyZXJDbGFzc0lkLmNoaWxkcmVuXSA9IFtdO1xuXHRcdHJTW05ndFJlbmRlcmVyQ2xhc3NJZC5kZXN0cm95ZWRdID0gdHJ1ZTtcblx0XHRpZiAocGFyZW50KSB7XG5cdFx0XHRyZW1vdmVDaGlsZChwYXJlbnQsIG5vZGUpO1xuXHRcdH1cblx0fVxuXG5cdHByaXZhdGUgcmVtb3ZlQ29tbWVudE5vZGUobm9kZTogTmd0UmVuZGVyZXJOb2RlLCBub2RlczogTmd0UmVuZGVyZXJOb2RlW10pIHtcblx0XHRjb25zdCBpbmRleCA9IG5vZGVzLmZpbmRJbmRleCgoY29tbWVudCkgPT4gY29tbWVudCA9PT0gbm9kZSk7XG5cdFx0aWYgKGluZGV4ID4gLTEpIHtcblx0XHRcdG5vZGVzLnNwbGljZShpbmRleCwgMSk7XG5cdFx0fVxuXHR9XG5cblx0cHJpdmF0ZSBwcm9jZXNzUG9ydGFsQ29udGFpbmVyKHBvcnRhbDogTmd0UmVuZGVyZXJOb2RlKSB7XG5cdFx0Y29uc3QgaW5qZWN0b3IgPSBwb3J0YWwuX19uZ3RfcmVuZGVyZXJfX1tOZ3RSZW5kZXJlckNsYXNzSWQuZGVidWdOb2RlRmFjdG9yeV0/LigpPy5pbmplY3Rvcjtcblx0XHRpZiAoIWluamVjdG9yKSByZXR1cm47XG5cblx0XHRjb25zdCBwb3J0YWxTdG9yZSA9IGluamVjdG9yLmdldChOR1RfU1RPUkUsIG51bGwpO1xuXHRcdGlmICghcG9ydGFsU3RvcmUpIHJldHVybjtcblxuXHRcdGNvbnN0IHBvcnRhbENvbnRhaW5lciA9IHBvcnRhbFN0b3JlLmdldCgnc2NlbmUnKTtcblx0XHRpZiAoIXBvcnRhbENvbnRhaW5lcikgcmV0dXJuO1xuXG5cdFx0Y29uc3QgbG9jYWxTdGF0ZSA9IGdldExvY2FsU3RhdGUocG9ydGFsQ29udGFpbmVyKTtcblx0XHRpZiAobG9jYWxTdGF0ZSkge1xuXHRcdFx0bG9jYWxTdGF0ZS5zdG9yZSA9IHBvcnRhbFN0b3JlO1xuXHRcdH1cblxuXHRcdHBvcnRhbC5fX25ndF9yZW5kZXJlcl9fW05ndFJlbmRlcmVyQ2xhc3NJZC5wb3J0YWxDb250YWluZXJdID0gY3JlYXRlTm9kZSgndGhyZWUnLCBwb3J0YWxDb250YWluZXIsIHRoaXMuZG9jdW1lbnQpO1xuXHR9XG5cblx0cHJpdmF0ZSBzaG91bGRGaW5kR3JhbmRwYXJlbnRJbnN0YW5jZShwUlM6IE5ndFJlbmRlcmVyU3RhdGUsIGNSUzogTmd0UmVuZGVyZXJTdGF0ZSwgY2hpbGQ6IE5ndFJlbmRlcmVyTm9kZSkge1xuXHRcdGNvbnN0IHBUeXBlID0gcFJTW05ndFJlbmRlcmVyQ2xhc3NJZC50eXBlXTtcblx0XHRjb25zdCBjVHlwZSA9IGNSU1tOZ3RSZW5kZXJlckNsYXNzSWQudHlwZV07XG5cblx0XHRjb25zdCBjTFMgPSBnZXRMb2NhbFN0YXRlKGNoaWxkKTtcblx0XHQvLyBpZiBjaGlsZCBpcyB0aHJlZSBidXQgaGF2ZW4ndCBiZWVuIGF0dGFjaGVkIHRvIGEgcGFyZW50IHlldFxuXHRcdGNvbnN0IGlzRGFuZ2xpbmdUaHJlZUNoaWxkID0gY1R5cGUgPT09ICd0aHJlZScgJiYgIWNMUz8uaW5zdGFuY2VTdG9yZT8uZ2V0KCdwYXJlbnQnKTtcblx0XHQvLyBvciBib3RoIHBhcmVudCBhbmQgY2hpbGQgYXJlIERPTSBlbGVtZW50c1xuXHRcdC8vIG9yIHRoZXkgYXJlIGNvbXBvdW5kIEFORCBoYXZlbid0IGhhZCBhIFRIUkVFIGluc3RhbmNlIHlldFxuXHRcdGNvbnN0IGlzUGFyZW50U3RpbGxET00gPSBwVHlwZSA9PT0gJ2RvbSc7XG5cdFx0Y29uc3QgaXNDaGlsZFN0aWxsRE9NID0gY1R5cGUgPT09ICdkb20nO1xuXG5cdFx0cmV0dXJuIGlzRGFuZ2xpbmdUaHJlZUNoaWxkIHx8IChpc1BhcmVudFN0aWxsRE9NICYmIGlzQ2hpbGRTdGlsbERPTSkgfHwgaXNQYXJlbnRTdGlsbERPTTtcblx0fVxuXG5cdHByaXZhdGUgZ2V0Tmd0QXJncygpIHtcblx0XHRsZXQgZGlyZWN0aXZlOiBOZ3RBcmdzIHwgdW5kZWZpbmVkO1xuXG5cdFx0Y29uc3QgZGVzdHJveWVkID0gW107XG5cblx0XHRsZXQgaSA9IHRoaXMuYXJnc0NvbW1lbnROb2Rlcy5sZW5ndGggLSAxO1xuXHRcdHdoaWxlIChpID49IDApIHtcblx0XHRcdGNvbnN0IGNvbW1lbnQgPSB0aGlzLmFyZ3NDb21tZW50Tm9kZXNbaV07XG5cdFx0XHRpZiAoY29tbWVudC5fX25ndF9yZW5kZXJlcl9fW05ndFJlbmRlcmVyQ2xhc3NJZC5kZXN0cm95ZWRdKSB7XG5cdFx0XHRcdGRlc3Ryb3llZC5wdXNoKGkpO1xuXHRcdFx0XHRpLS07XG5cdFx0XHRcdGNvbnRpbnVlO1xuXHRcdFx0fVxuXHRcdFx0Y29uc3QgaW5qZWN0b3IgPSBjb21tZW50Ll9fbmd0X3JlbmRlcmVyX19bTmd0UmVuZGVyZXJDbGFzc0lkLmRlYnVnTm9kZUZhY3RvcnldPy4oKT8uaW5qZWN0b3I7XG5cdFx0XHRpZiAoIWluamVjdG9yKSB7XG5cdFx0XHRcdGktLTtcblx0XHRcdFx0Y29udGludWU7XG5cdFx0XHR9XG5cdFx0XHRjb25zdCBpbnN0YW5jZSA9IGluamVjdG9yLmdldChOZ3RBcmdzLCBudWxsKTtcblx0XHRcdGlmIChpbnN0YW5jZSAmJiBpbnN0YW5jZS52YWxpZGF0ZSgpKSB7XG5cdFx0XHRcdGRpcmVjdGl2ZSA9IGluc3RhbmNlO1xuXHRcdFx0XHRicmVhaztcblx0XHRcdH1cblxuXHRcdFx0aS0tO1xuXHRcdH1cblxuXHRcdGRlc3Ryb3llZC5mb3JFYWNoKChpbmRleCkgPT4ge1xuXHRcdFx0dGhpcy5hcmdzQ29tbWVudE5vZGVzLnNwbGljZShpbmRleCwgMSk7XG5cdFx0fSk7XG5cblx0XHRyZXR1cm4gZGlyZWN0aXZlO1xuXHR9XG5cblx0Y3JlYXRlVGV4dCA9IHRoaXMuZGVsZWdhdGUuY3JlYXRlVGV4dC5iaW5kKHRoaXMuZGVsZWdhdGUpO1xuXHRkZXN0cm95ID0gdGhpcy5kZWxlZ2F0ZS5kZXN0cm95LmJpbmQodGhpcy5kZWxlZ2F0ZSk7XG5cdGRlc3Ryb3lOb2RlOiAoKG5vZGU6IGFueSkgPT4gdm9pZCkgfCBudWxsID0gbnVsbDtcblx0c2VsZWN0Um9vdEVsZW1lbnQgPSB0aGlzLmRlbGVnYXRlLnNlbGVjdFJvb3RFbGVtZW50LmJpbmQodGhpcy5kZWxlZ2F0ZSk7XG5cdG5leHRTaWJsaW5nID0gdGhpcy5kZWxlZ2F0ZS5uZXh0U2libGluZy5iaW5kKHRoaXMuZGVsZWdhdGUpO1xuXHRhZGRDbGFzcyA9IHRoaXMuZGVsZWdhdGUuYWRkQ2xhc3MuYmluZCh0aGlzLmRlbGVnYXRlKTtcblx0cmVtb3ZlQ2xhc3MgPSB0aGlzLmRlbGVnYXRlLnJlbW92ZUNsYXNzLmJpbmQodGhpcy5kZWxlZ2F0ZSk7XG5cdHNldFN0eWxlID0gdGhpcy5kZWxlZ2F0ZS5zZXRTdHlsZS5iaW5kKHRoaXMuZGVsZWdhdGUpO1xuXHRyZW1vdmVTdHlsZSA9IHRoaXMuZGVsZWdhdGUucmVtb3ZlU3R5bGUuYmluZCh0aGlzLmRlbGVnYXRlKTtcblx0c2V0VmFsdWUgPSB0aGlzLmRlbGVnYXRlLnNldFZhbHVlLmJpbmQodGhpcy5kZWxlZ2F0ZSk7XG5cdGdldCBkYXRhKCk6IHsgW2tleTogc3RyaW5nXTogYW55IH0ge1xuXHRcdHJldHVybiB0aGlzLmRlbGVnYXRlLmRhdGE7XG5cdH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHByb3ZpZGVOZ3RSZW5kZXJlcihzdG9yZTogTmd0U2lnbmFsU3RvcmU8Tmd0U3RhdGU+KSB7XG5cdGNvbnN0IHByb3ZpZGVycyA9IFtcblx0XHROZ3RSZW5kZXJlckZhY3RvcnksXG5cdFx0eyBwcm92aWRlOiBSZW5kZXJlckZhY3RvcnkyLCB1c2VFeGlzdGluZzogTmd0UmVuZGVyZXJGYWN0b3J5IH0sXG5cdFx0cHJvdmlkZVN0b3JlKCgpID0+IHN0b3JlKSxcblx0XTtcblxuXHRyZXR1cm4gbWFrZUVudmlyb25tZW50UHJvdmlkZXJzKHByb3ZpZGVycyk7XG59XG5cbmV4cG9ydCB7IGV4dGVuZCB9IGZyb20gJy4vY2F0YWxvZ3VlJztcbmV4cG9ydCB7IEhUTUwsIE5PTl9ST09ULCBST1VURURfU0NFTkUgfSBmcm9tICcuL2NvbnN0YW50cyc7XG4iXX0=
@@ -0,0 +1,9 @@
1
+ export function getEmitter(emitterRef) {
2
+ if (!emitterRef || !emitterRef['listeners'] || emitterRef['destroyed'])
3
+ return undefined;
4
+ return emitterRef.emit.bind(emitterRef);
5
+ }
6
+ export function hasListener(...emitterRefs) {
7
+ return emitterRefs.some((emitterRef) => emitterRef && !emitterRef['destroyed'] && emitterRef['listeners'] && emitterRef['listeners'].length > 0);
8
+ }
9
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3V0cHV0LXJlZi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29yZS9zcmMvbGliL3V0aWxzL291dHB1dC1yZWYudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUEsTUFBTSxVQUFVLFVBQVUsQ0FBSSxVQUEyQztJQUN4RSxJQUFJLENBQUMsVUFBVSxJQUFJLENBQUMsVUFBVSxDQUFDLFdBQVcsQ0FBQyxJQUFJLFVBQVUsQ0FBQyxXQUFXLENBQUM7UUFBRSxPQUFPLFNBQVMsQ0FBQztJQUN6RixPQUFPLFVBQVUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDO0FBQ3pDLENBQUM7QUFFRCxNQUFNLFVBQVUsV0FBVyxDQUFDLEdBQUcsV0FBc0Q7SUFDcEYsT0FBTyxXQUFXLENBQUMsSUFBSSxDQUN0QixDQUFDLFVBQVUsRUFBRSxFQUFFLENBQ2QsVUFBVSxJQUFJLENBQUMsVUFBVSxDQUFDLFdBQVcsQ0FBQyxJQUFJLFVBQVUsQ0FBQyxXQUFXLENBQUMsSUFBSSxVQUFVLENBQUMsV0FBVyxDQUFDLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FDeEcsQ0FBQztBQUNILENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBPdXRwdXRFbWl0dGVyUmVmIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRFbWl0dGVyPFQ+KGVtaXR0ZXJSZWY6IE91dHB1dEVtaXR0ZXJSZWY8VD4gfCB1bmRlZmluZWQpIHtcblx0aWYgKCFlbWl0dGVyUmVmIHx8ICFlbWl0dGVyUmVmWydsaXN0ZW5lcnMnXSB8fCBlbWl0dGVyUmVmWydkZXN0cm95ZWQnXSkgcmV0dXJuIHVuZGVmaW5lZDtcblx0cmV0dXJuIGVtaXR0ZXJSZWYuZW1pdC5iaW5kKGVtaXR0ZXJSZWYpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaGFzTGlzdGVuZXIoLi4uZW1pdHRlclJlZnM6IChPdXRwdXRFbWl0dGVyUmVmPHVua25vd24+IHwgdW5kZWZpbmVkKVtdKSB7XG5cdHJldHVybiBlbWl0dGVyUmVmcy5zb21lKFxuXHRcdChlbWl0dGVyUmVmKSA9PlxuXHRcdFx0ZW1pdHRlclJlZiAmJiAhZW1pdHRlclJlZlsnZGVzdHJveWVkJ10gJiYgZW1pdHRlclJlZlsnbGlzdGVuZXJzJ10gJiYgZW1pdHRlclJlZlsnbGlzdGVuZXJzJ10ubGVuZ3RoID4gMCxcblx0KTtcbn1cbiJdfQ==
@@ -1,11 +1,11 @@
1
1
  import * as i0 from '@angular/core';
2
2
  import { untracked, computed, signal, ElementRef, input, inject, ViewContainerRef, NgZone, TemplateRef, afterNextRender, DestroyRef, Directive, effect, InjectionToken, DebugNode, RendererFactory2, Injectable, makeEnvironmentProviders, Component, EnvironmentInjector, Injector, booleanAttribute, output, viewChild, createEnvironmentInjector, ChangeDetectionStrategy, Pipe, CUSTOM_ELEMENTS_SCHEMA, contentChild, model, Renderer2 } from '@angular/core';
3
- import { takeUntilDestroyed, outputFromObservable, toObservable } from '@angular/core/rxjs-interop';
3
+ import { takeUntilDestroyed, outputFromObservable } from '@angular/core/rxjs-interop';
4
4
  import { injectAutoEffect } from 'ngxtension/auto-effect';
5
5
  import { provideResizeOptions, NgxResize } from 'ngxtension/resize';
6
6
  import { MathUtils, WebGLRenderer, OrthographicCamera, PerspectiveCamera, Vector3, Vector2, Clock, Layers, Color, ColorManagement, Texture, RGBAFormat, UnsignedByteType, EventDispatcher, Raycaster, Scene, PCFSoftShadowMap, BasicShadowMap, PCFShadowMap, VSMShadowMap, NoToneMapping, ACESFilmicToneMapping, Vector4 } from 'three';
7
7
  import { DOCUMENT } from '@angular/common';
8
- import { Subject, filter, map } from 'rxjs';
8
+ import { Subject, filter } from 'rxjs';
9
9
  import { createInjectionToken } from 'ngxtension/create-injection-token';
10
10
  import { assertInjector } from 'ngxtension/assert-injector';
11
11
  import * as i1 from '@angular/router';
@@ -232,11 +232,11 @@ function prepare(object, localState) {
232
232
  else {
233
233
  instance.__ngt__.instanceStore.update((prev) => ({ [type]: [...prev[type], object] }));
234
234
  }
235
- notifyAncestors(instance.__ngt__.instanceStore.snapshot.parent);
235
+ notifyAncestors(instance.__ngt__.instanceStore.snapshot.parent, type);
236
236
  },
237
237
  remove(object, type) {
238
238
  instance.__ngt__.instanceStore.update((prev) => ({ [type]: prev[type].filter((node) => node !== object) }));
239
- notifyAncestors(instance.__ngt__.instanceStore.snapshot.parent);
239
+ notifyAncestors(instance.__ngt__.instanceStore.snapshot.parent, type);
240
240
  },
241
241
  setParent(parent) {
242
242
  instance.__ngt__.instanceStore.update({ parent });
@@ -246,15 +246,15 @@ function prepare(object, localState) {
246
246
  }
247
247
  return instance;
248
248
  }
249
- function notifyAncestors(instance) {
249
+ function notifyAncestors(instance, type) {
250
250
  if (!instance)
251
251
  return;
252
252
  const localState = getLocalState(instance);
253
253
  if (!localState)
254
254
  return;
255
- const { parent, objects, nonObjects } = localState.instanceStore.snapshot;
256
- localState.instanceStore.update({ objects: (objects || []).slice(), nonObjects: (nonObjects || []).slice() });
257
- notifyAncestors(parent);
255
+ const { parent } = localState.instanceStore.snapshot;
256
+ localState.instanceStore.update({ [type]: (localState.instanceStore.snapshot[type] || []).slice() });
257
+ notifyAncestors(parent, type);
258
258
  }
259
259
 
260
260
  const idCache = {};
@@ -739,6 +739,7 @@ function createPointerEvents(store) {
739
739
 
740
740
  const ROUTED_SCENE = '__ngt_renderer_is_routed_scene__';
741
741
  const HTML = '__ngt_renderer_is_html';
742
+ const NON_ROOT = '__ngt_renderer_is_non_root__';
742
743
  const SPECIAL_INTERNAL_ADD_COMMENT = '__ngt_renderer_add_comment__';
743
744
  const SPECIAL_DOM_TAG = {
744
745
  NGT_PORTAL: 'ngt-portal',
@@ -1588,11 +1589,12 @@ class NgtRendererFactory {
1588
1589
  if (type['type'][ROUTED_SCENE]) {
1589
1590
  this.routedSet.add(type.id);
1590
1591
  }
1592
+ const isNonRoot = type['type'][NON_ROOT];
1591
1593
  let renderer = this.rendererMap.get(type.id);
1592
1594
  if (!renderer) {
1593
1595
  this.rendererMap.set(type.id, (renderer = new NgtRenderer(delegateRenderer, this.rootStore, this.document, this.portalCommentsNodes, this.catalogue,
1594
1596
  // setting root scene if there's no routed scene OR this component is the routed Scene
1595
- !hostElement && (this.routedSet.size === 0 || this.routedSet.has(type.id)))));
1597
+ !hostElement && !isNonRoot && (this.routedSet.size === 0 || this.routedSet.has(type.id)))));
1596
1598
  }
1597
1599
  return renderer;
1598
1600
  }
@@ -3041,10 +3043,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.0", ngImpor
3041
3043
  }]
3042
3044
  }], ctorParameters: () => [] });
3043
3045
 
3044
- function injectNonNullish$(sig, { injector } = {}) {
3045
- return assertInjector(injectNonNullish$, injector, () => toObservable(sig).pipe(map((val) => val != null)));
3046
- }
3047
-
3048
3046
  function resolveRef(ref) {
3049
3047
  if (is.ref(ref)) {
3050
3048
  return ref.nativeElement;
@@ -3139,6 +3137,15 @@ function injectObjectEvents(target, events, { injector } = {}) {
3139
3137
  });
3140
3138
  }
3141
3139
 
3140
+ function getEmitter(emitterRef) {
3141
+ if (!emitterRef || !emitterRef['listeners'] || emitterRef['destroyed'])
3142
+ return undefined;
3143
+ return emitterRef.emit.bind(emitterRef);
3144
+ }
3145
+ function hasListener(...emitterRefs) {
3146
+ return emitterRefs.some((emitterRef) => emitterRef && !emitterRef['destroyed'] && emitterRef['listeners'] && emitterRef['listeners'].length > 0);
3147
+ }
3148
+
3142
3149
  function omit(objFn, keysToOmit) {
3143
3150
  return computed(() => {
3144
3151
  const obj = objFn();
@@ -3211,5 +3218,5 @@ const vector4 = createVectorComputed(Vector4);
3211
3218
  * Generated bundle index. Do not edit.
3212
3219
  */
3213
3220
 
3214
- export { HTML, NGT_APPLY_PROPS, NGT_STORE, NgtArgs, NgtCanvas, NgtHTML, NgtHexify, NgtObjectEvents, NgtObjectEventsHostDirective, NgtPortal, NgtPortalBeforeRender, NgtPortalContent, NgtRenderer, NgtRendererFactory, NgtRoutedScene, NgtSelect, NgtSelection, ROUTED_SCENE, addAfterEffect, addEffect, addTail, applyProps, attach, checkNeedsUpdate, checkUpdate, createAttachFunction, detach, dispose, extend, flushGlobalEffects, getLocalState, injectBeforeRender, injectCanvasRootInitializer, injectLoader, injectLoop, injectNonNullish$, injectObjectEvents, injectStore, invalidateInstance, is, makeCameraInstance, makeDpr, makeId, makeObjectGraph, makeRendererInstance, merge, omit, pick, prepare, privateKeys, provideHTMLDomElement, provideNgtRenderer, provideStore, resolveRef, roots, signalStore, updateCamera, vector2, vector3, vector4 };
3221
+ export { HTML, NGT_APPLY_PROPS, NGT_STORE, NON_ROOT, NgtArgs, NgtCanvas, NgtHTML, NgtHexify, NgtObjectEvents, NgtObjectEventsHostDirective, NgtPortal, NgtPortalBeforeRender, NgtPortalContent, NgtRenderer, NgtRendererFactory, NgtRoutedScene, NgtSelect, NgtSelection, ROUTED_SCENE, addAfterEffect, addEffect, addTail, applyProps, attach, checkNeedsUpdate, checkUpdate, createAttachFunction, detach, dispose, extend, flushGlobalEffects, getEmitter, getLocalState, hasListener, injectBeforeRender, injectCanvasRootInitializer, injectLoader, injectLoop, injectObjectEvents, injectStore, invalidateInstance, is, makeCameraInstance, makeDpr, makeId, makeObjectGraph, makeRendererInstance, merge, omit, pick, prepare, privateKeys, provideHTMLDomElement, provideNgtRenderer, provideStore, resolveRef, roots, signalStore, updateCamera, vector2, vector3, vector4 };
3215
3222
  //# sourceMappingURL=angular-three.mjs.map