angular-three-postprocessing 2.0.0-beta.284 → 2.0.0-beta.286

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.
@@ -22,7 +22,7 @@ export class NgtpDepthOfField {
22
22
  effect.setDepthTexture(options.depthTexture.texture, options.depthTexture.packing);
23
23
  }
24
24
  // Temporary fix that restores DOF 6.21.3 behavior, everything since then lets shapes leak through the blur
25
- const maskPass = effect.maskPass;
25
+ const maskPass = effect['maskPass'];
26
26
  maskPass.maskFunction = MaskFunction.MULTIPLY_RGB_SET_ALPHA;
27
27
  return effect;
28
28
  });
@@ -53,4 +53,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.3", ngImpor
53
53
  changeDetection: ChangeDetectionStrategy.OnPush,
54
54
  }]
55
55
  }], ctorParameters: () => [] });
56
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVwdGgtb2YtZmllbGQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL3Bvc3Rwcm9jZXNzaW5nL3NyYy9saWIvZWZmZWN0cy9kZXB0aC1vZi1maWVsZC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ04sc0JBQXNCLEVBQ3RCLHVCQUF1QixFQUN2QixTQUFTLEVBQ1QsZUFBZSxFQUNmLFFBQVEsRUFDUixNQUFNLEVBQ04sS0FBSyxHQUNMLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxPQUFPLEVBQWMsTUFBTSxlQUFlLENBQUM7QUFDcEQsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDMUQsT0FBTyxFQUFFLGtCQUFrQixFQUFFLFlBQVksRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ2xFLE9BQU8sRUFBbUMsT0FBTyxFQUFFLE1BQU0sT0FBTyxDQUFDO0FBQ2pFLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLG9CQUFvQixDQUFDOztBQXNCeEQsTUFBTSxPQUFPLGdCQUFnQjtJQTBCNUI7UUF6QlEsZUFBVSxHQUFHLGdCQUFnQixFQUFFLENBQUM7UUFDaEMsbUJBQWMsR0FBRyxNQUFNLENBQUMsa0JBQWtCLENBQUMsQ0FBQztRQUVwRCxZQUFPLEdBQUcsS0FBSyxDQUFDLEVBQWdCLENBQUMsQ0FBQztRQUUxQixjQUFTLEdBQUcsUUFBUSxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQyxNQUFNLElBQUksSUFBSSxDQUFDLENBQUM7UUFFbEUsV0FBTSxHQUFHLFFBQVEsQ0FBQyxHQUFHLEVBQUU7WUFDdEIsTUFBTSxDQUFDLE1BQU0sRUFBRSxPQUFPLEVBQUUsU0FBUyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLE1BQU0sRUFBRSxFQUFFLElBQUksQ0FBQyxPQUFPLEVBQUUsRUFBRSxJQUFJLENBQUMsU0FBUyxFQUFFLENBQUMsQ0FBQztZQUV0RyxNQUFNLE1BQU0sR0FBRyxJQUFJLGtCQUFrQixDQUFDLE1BQU0sRUFBRSxPQUFPLENBQUMsQ0FBQztZQUV2RCw4REFBOEQ7WUFDOUQsSUFBSSxTQUFTO2dCQUFFLE1BQU0sQ0FBQyxNQUFNLEdBQUcsSUFBSSxPQUFPLEVBQUUsQ0FBQztZQUM3QyxpRUFBaUU7WUFDakUsSUFBSSxPQUFPLENBQUMsWUFBWSxFQUFFLENBQUM7Z0JBQzFCLE1BQU0sQ0FBQyxlQUFlLENBQUMsT0FBTyxDQUFDLFlBQVksQ0FBQyxPQUFPLEVBQUUsT0FBTyxDQUFDLFlBQVksQ0FBQyxPQUFpQyxDQUFDLENBQUM7WUFDOUcsQ0FBQztZQUNELDJHQUEyRztZQUMzRyxNQUFNLFFBQVEsR0FBSSxNQUFjLENBQUMsUUFBUSxDQUFDO1lBQzFDLFFBQVEsQ0FBQyxZQUFZLEdBQUcsWUFBWSxDQUFDLHNCQUFzQixDQUFDO1lBRTVELE9BQU8sTUFBTSxDQUFDO1FBQ2YsQ0FBQyxDQUFDLENBQUM7UUFHRixlQUFlLENBQUMsR0FBRyxFQUFFO1lBQ3BCLElBQUksQ0FBQyxVQUFVLENBQUMsR0FBRyxFQUFFO2dCQUNwQixNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUM7Z0JBQzdCLE9BQU8sR0FBRyxFQUFFO29CQUNYLE1BQU0sQ0FBQyxPQUFPLEVBQUUsQ0FBQztnQkFDbEIsQ0FBQyxDQUFDO1lBQ0gsQ0FBQyxDQUFDLENBQUM7UUFDSixDQUFDLENBQUMsQ0FBQztJQUNKLENBQUM7OEdBbkNXLGdCQUFnQjtrR0FBaEIsZ0JBQWdCLHlOQVBsQjs7RUFFVCw0REFDUyxPQUFPOzsyRkFJTCxnQkFBZ0I7a0JBVjVCLFNBQVM7bUJBQUM7b0JBQ1YsUUFBUSxFQUFFLHFCQUFxQjtvQkFDL0IsVUFBVSxFQUFFLElBQUk7b0JBQ2hCLFFBQVEsRUFBRTs7RUFFVDtvQkFDRCxPQUFPLEVBQUUsQ0FBQyxPQUFPLENBQUM7b0JBQ2xCLE9BQU8sRUFBRSxDQUFDLHNCQUFzQixDQUFDO29CQUNqQyxlQUFlLEVBQUUsdUJBQXVCLENBQUMsTUFBTTtpQkFDL0MiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuXHRDVVNUT01fRUxFTUVOVFNfU0NIRU1BLFxuXHRDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcblx0Q29tcG9uZW50LFxuXHRhZnRlck5leHRSZW5kZXIsXG5cdGNvbXB1dGVkLFxuXHRpbmplY3QsXG5cdGlucHV0LFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE5ndEFyZ3MsIE5ndFZlY3RvcjMgfSBmcm9tICdhbmd1bGFyLXRocmVlJztcbmltcG9ydCB7IGluamVjdEF1dG9FZmZlY3QgfSBmcm9tICduZ3h0ZW5zaW9uL2F1dG8tZWZmZWN0JztcbmltcG9ydCB7IERlcHRoT2ZGaWVsZEVmZmVjdCwgTWFza0Z1bmN0aW9uIH0gZnJvbSAncG9zdHByb2Nlc3NpbmcnO1xuaW1wb3J0IHsgRGVwdGhQYWNraW5nU3RyYXRlZ2llcywgVGV4dHVyZSwgVmVjdG9yMyB9IGZyb20gJ3RocmVlJztcbmltcG9ydCB7IE5ndHBFZmZlY3RDb21wb3NlciB9IGZyb20gJy4uL2VmZmVjdC1jb21wb3Nlcic7XG5cbnR5cGUgRE9GT3B0aW9ucyA9IE5vbk51bGxhYmxlPENvbnN0cnVjdG9yUGFyYW1ldGVyczx0eXBlb2YgRGVwdGhPZkZpZWxkRWZmZWN0PlsxXT4gJlxuXHRQYXJ0aWFsPHtcblx0XHR0YXJnZXQ6IE5ndFZlY3RvcjM7XG5cdFx0ZGVwdGhUZXh0dXJlOiB7XG5cdFx0XHR0ZXh0dXJlOiBUZXh0dXJlO1xuXHRcdFx0Ly8gVE9ETzogbmFycm93IHRvIERlcHRoUGFja2luZ1N0cmF0ZWdpZXNcblx0XHRcdHBhY2tpbmc6IG51bWJlcjtcblx0XHR9O1xuXHR9PjtcblxuQENvbXBvbmVudCh7XG5cdHNlbGVjdG9yOiAnbmd0cC1kZXB0aC1vZi1maWVsZCcsXG5cdHN0YW5kYWxvbmU6IHRydWUsXG5cdHRlbXBsYXRlOiBgXG5cdFx0PG5ndC1wcmltaXRpdmUgKmFyZ3M9XCJbZWZmZWN0KCldXCIgLz5cblx0YCxcblx0aW1wb3J0czogW05ndEFyZ3NdLFxuXHRzY2hlbWFzOiBbQ1VTVE9NX0VMRU1FTlRTX1NDSEVNQV0sXG5cdGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxufSlcbmV4cG9ydCBjbGFzcyBOZ3RwRGVwdGhPZkZpZWxkIHtcblx0cHJpdmF0ZSBhdXRvRWZmZWN0ID0gaW5qZWN0QXV0b0VmZmVjdCgpO1xuXHRwcml2YXRlIGVmZmVjdENvbXBvc2VyID0gaW5qZWN0KE5ndHBFZmZlY3RDb21wb3Nlcik7XG5cblx0b3B0aW9ucyA9IGlucHV0KHt9IGFzIERPRk9wdGlvbnMpO1xuXG5cdHByaXZhdGUgYXV0b0ZvY3VzID0gY29tcHV0ZWQoKCkgPT4gdGhpcy5vcHRpb25zKCkudGFyZ2V0ICE9IG51bGwpO1xuXG5cdGVmZmVjdCA9IGNvbXB1dGVkKCgpID0+IHtcblx0XHRjb25zdCBbY2FtZXJhLCBvcHRpb25zLCBhdXRvRm9jdXNdID0gW3RoaXMuZWZmZWN0Q29tcG9zZXIuY2FtZXJhKCksIHRoaXMub3B0aW9ucygpLCB0aGlzLmF1dG9Gb2N1cygpXTtcblxuXHRcdGNvbnN0IGVmZmVjdCA9IG5ldyBEZXB0aE9mRmllbGRFZmZlY3QoY2FtZXJhLCBvcHRpb25zKTtcblxuXHRcdC8vIENyZWF0aW5nIGEgdGFyZ2V0IGVuYWJsZXMgYXV0b2ZvY3VzLCBSM0Ygd2lsbCBzZXQgdmlhIHByb3BzXG5cdFx0aWYgKGF1dG9Gb2N1cykgZWZmZWN0LnRhcmdldCA9IG5ldyBWZWN0b3IzKCk7XG5cdFx0Ly8gRGVwdGggdGV4dHVyZSBmb3IgZGVwdGggcGlja2luZyB3aXRoIG9wdGlvbmFsIHBhY2tpbmcgc3RyYXRlZ3lcblx0XHRpZiAob3B0aW9ucy5kZXB0aFRleHR1cmUpIHtcblx0XHRcdGVmZmVjdC5zZXREZXB0aFRleHR1cmUob3B0aW9ucy5kZXB0aFRleHR1cmUudGV4dHVyZSwgb3B0aW9ucy5kZXB0aFRleHR1cmUucGFja2luZyBhcyBEZXB0aFBhY2tpbmdTdHJhdGVnaWVzKTtcblx0XHR9XG5cdFx0Ly8gVGVtcG9yYXJ5IGZpeCB0aGF0IHJlc3RvcmVzIERPRiA2LjIxLjMgYmVoYXZpb3IsIGV2ZXJ5dGhpbmcgc2luY2UgdGhlbiBsZXRzIHNoYXBlcyBsZWFrIHRocm91Z2ggdGhlIGJsdXJcblx0XHRjb25zdCBtYXNrUGFzcyA9IChlZmZlY3QgYXMgYW55KS5tYXNrUGFzcztcblx0XHRtYXNrUGFzcy5tYXNrRnVuY3Rpb24gPSBNYXNrRnVuY3Rpb24uTVVMVElQTFlfUkdCX1NFVF9BTFBIQTtcblxuXHRcdHJldHVybiBlZmZlY3Q7XG5cdH0pO1xuXG5cdGNvbnN0cnVjdG9yKCkge1xuXHRcdGFmdGVyTmV4dFJlbmRlcigoKSA9PiB7XG5cdFx0XHR0aGlzLmF1dG9FZmZlY3QoKCkgPT4ge1xuXHRcdFx0XHRjb25zdCBlZmZlY3QgPSB0aGlzLmVmZmVjdCgpO1xuXHRcdFx0XHRyZXR1cm4gKCkgPT4ge1xuXHRcdFx0XHRcdGVmZmVjdC5kaXNwb3NlKCk7XG5cdFx0XHRcdH07XG5cdFx0XHR9KTtcblx0XHR9KTtcblx0fVxufVxuIl19
56
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVwdGgtb2YtZmllbGQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL3Bvc3Rwcm9jZXNzaW5nL3NyYy9saWIvZWZmZWN0cy9kZXB0aC1vZi1maWVsZC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ04sc0JBQXNCLEVBQ3RCLHVCQUF1QixFQUN2QixTQUFTLEVBQ1QsZUFBZSxFQUNmLFFBQVEsRUFDUixNQUFNLEVBQ04sS0FBSyxHQUNMLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBZ0IsT0FBTyxFQUFjLE1BQU0sZUFBZSxDQUFDO0FBQ2xFLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQzFELE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxZQUFZLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNsRSxPQUFPLEVBQW1DLE9BQU8sRUFBRSxNQUFNLE9BQU8sQ0FBQztBQUNqRSxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQzs7QUFleEQsTUFBTSxPQUFPLGdCQUFnQjtJQTBCNUI7UUF6QlEsZUFBVSxHQUFHLGdCQUFnQixFQUFFLENBQUM7UUFDaEMsbUJBQWMsR0FBRyxNQUFNLENBQUMsa0JBQWtCLENBQUMsQ0FBQztRQUVwRCxZQUFPLEdBQUcsS0FBSyxDQUFDLEVBQWdCLENBQUMsQ0FBQztRQUUxQixjQUFTLEdBQUcsUUFBUSxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQyxNQUFNLElBQUksSUFBSSxDQUFDLENBQUM7UUFFbEUsV0FBTSxHQUFHLFFBQVEsQ0FBQyxHQUFHLEVBQUU7WUFDdEIsTUFBTSxDQUFDLE1BQU0sRUFBRSxPQUFPLEVBQUUsU0FBUyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLE1BQU0sRUFBRSxFQUFFLElBQUksQ0FBQyxPQUFPLEVBQUUsRUFBRSxJQUFJLENBQUMsU0FBUyxFQUFFLENBQUMsQ0FBQztZQUV0RyxNQUFNLE1BQU0sR0FBRyxJQUFJLGtCQUFrQixDQUFDLE1BQU0sRUFBRSxPQUFPLENBQUMsQ0FBQztZQUV2RCw4REFBOEQ7WUFDOUQsSUFBSSxTQUFTO2dCQUFFLE1BQU0sQ0FBQyxNQUFNLEdBQUcsSUFBSSxPQUFPLEVBQUUsQ0FBQztZQUM3QyxpRUFBaUU7WUFDakUsSUFBSSxPQUFPLENBQUMsWUFBWSxFQUFFLENBQUM7Z0JBQzFCLE1BQU0sQ0FBQyxlQUFlLENBQUMsT0FBTyxDQUFDLFlBQVksQ0FBQyxPQUFPLEVBQUUsT0FBTyxDQUFDLFlBQVksQ0FBQyxPQUFpQyxDQUFDLENBQUM7WUFDOUcsQ0FBQztZQUNELDJHQUEyRztZQUMzRyxNQUFNLFFBQVEsR0FBSSxNQUF1QixDQUFDLFVBQVUsQ0FBQyxDQUFDO1lBQ3RELFFBQVEsQ0FBQyxZQUFZLEdBQUcsWUFBWSxDQUFDLHNCQUFzQixDQUFDO1lBRTVELE9BQU8sTUFBTSxDQUFDO1FBQ2YsQ0FBQyxDQUFDLENBQUM7UUFHRixlQUFlLENBQUMsR0FBRyxFQUFFO1lBQ3BCLElBQUksQ0FBQyxVQUFVLENBQUMsR0FBRyxFQUFFO2dCQUNwQixNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUM7Z0JBQzdCLE9BQU8sR0FBRyxFQUFFO29CQUNYLE1BQU0sQ0FBQyxPQUFPLEVBQUUsQ0FBQztnQkFDbEIsQ0FBQyxDQUFDO1lBQ0gsQ0FBQyxDQUFDLENBQUM7UUFDSixDQUFDLENBQUMsQ0FBQztJQUNKLENBQUM7OEdBbkNXLGdCQUFnQjtrR0FBaEIsZ0JBQWdCLHlOQVBsQjs7RUFFVCw0REFDUyxPQUFPOzsyRkFJTCxnQkFBZ0I7a0JBVjVCLFNBQVM7bUJBQUM7b0JBQ1YsUUFBUSxFQUFFLHFCQUFxQjtvQkFDL0IsVUFBVSxFQUFFLElBQUk7b0JBQ2hCLFFBQVEsRUFBRTs7RUFFVDtvQkFDRCxPQUFPLEVBQUUsQ0FBQyxPQUFPLENBQUM7b0JBQ2xCLE9BQU8sRUFBRSxDQUFDLHNCQUFzQixDQUFDO29CQUNqQyxlQUFlLEVBQUUsdUJBQXVCLENBQUMsTUFBTTtpQkFDL0MiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuXHRDVVNUT01fRUxFTUVOVFNfU0NIRU1BLFxuXHRDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcblx0Q29tcG9uZW50LFxuXHRhZnRlck5leHRSZW5kZXIsXG5cdGNvbXB1dGVkLFxuXHRpbmplY3QsXG5cdGlucHV0LFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE5ndEFueVJlY29yZCwgTmd0QXJncywgTmd0VmVjdG9yMyB9IGZyb20gJ2FuZ3VsYXItdGhyZWUnO1xuaW1wb3J0IHsgaW5qZWN0QXV0b0VmZmVjdCB9IGZyb20gJ25neHRlbnNpb24vYXV0by1lZmZlY3QnO1xuaW1wb3J0IHsgRGVwdGhPZkZpZWxkRWZmZWN0LCBNYXNrRnVuY3Rpb24gfSBmcm9tICdwb3N0cHJvY2Vzc2luZyc7XG5pbXBvcnQgeyBEZXB0aFBhY2tpbmdTdHJhdGVnaWVzLCBUZXh0dXJlLCBWZWN0b3IzIH0gZnJvbSAndGhyZWUnO1xuaW1wb3J0IHsgTmd0cEVmZmVjdENvbXBvc2VyIH0gZnJvbSAnLi4vZWZmZWN0LWNvbXBvc2VyJztcblxudHlwZSBET0ZPcHRpb25zID0gTm9uTnVsbGFibGU8Q29uc3RydWN0b3JQYXJhbWV0ZXJzPHR5cGVvZiBEZXB0aE9mRmllbGRFZmZlY3Q+WzFdPiAmXG5cdFBhcnRpYWw8eyB0YXJnZXQ6IE5ndFZlY3RvcjM7IGRlcHRoVGV4dHVyZTogeyB0ZXh0dXJlOiBUZXh0dXJlOyBwYWNraW5nOiBEZXB0aFBhY2tpbmdTdHJhdGVnaWVzIH0gfT47XG5cbkBDb21wb25lbnQoe1xuXHRzZWxlY3RvcjogJ25ndHAtZGVwdGgtb2YtZmllbGQnLFxuXHRzdGFuZGFsb25lOiB0cnVlLFxuXHR0ZW1wbGF0ZTogYFxuXHRcdDxuZ3QtcHJpbWl0aXZlICphcmdzPVwiW2VmZmVjdCgpXVwiIC8+XG5cdGAsXG5cdGltcG9ydHM6IFtOZ3RBcmdzXSxcblx0c2NoZW1hczogW0NVU1RPTV9FTEVNRU5UU19TQ0hFTUFdLFxuXHRjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbn0pXG5leHBvcnQgY2xhc3MgTmd0cERlcHRoT2ZGaWVsZCB7XG5cdHByaXZhdGUgYXV0b0VmZmVjdCA9IGluamVjdEF1dG9FZmZlY3QoKTtcblx0cHJpdmF0ZSBlZmZlY3RDb21wb3NlciA9IGluamVjdChOZ3RwRWZmZWN0Q29tcG9zZXIpO1xuXG5cdG9wdGlvbnMgPSBpbnB1dCh7fSBhcyBET0ZPcHRpb25zKTtcblxuXHRwcml2YXRlIGF1dG9Gb2N1cyA9IGNvbXB1dGVkKCgpID0+IHRoaXMub3B0aW9ucygpLnRhcmdldCAhPSBudWxsKTtcblxuXHRlZmZlY3QgPSBjb21wdXRlZCgoKSA9PiB7XG5cdFx0Y29uc3QgW2NhbWVyYSwgb3B0aW9ucywgYXV0b0ZvY3VzXSA9IFt0aGlzLmVmZmVjdENvbXBvc2VyLmNhbWVyYSgpLCB0aGlzLm9wdGlvbnMoKSwgdGhpcy5hdXRvRm9jdXMoKV07XG5cblx0XHRjb25zdCBlZmZlY3QgPSBuZXcgRGVwdGhPZkZpZWxkRWZmZWN0KGNhbWVyYSwgb3B0aW9ucyk7XG5cblx0XHQvLyBDcmVhdGluZyBhIHRhcmdldCBlbmFibGVzIGF1dG9mb2N1cywgUjNGIHdpbGwgc2V0IHZpYSBwcm9wc1xuXHRcdGlmIChhdXRvRm9jdXMpIGVmZmVjdC50YXJnZXQgPSBuZXcgVmVjdG9yMygpO1xuXHRcdC8vIERlcHRoIHRleHR1cmUgZm9yIGRlcHRoIHBpY2tpbmcgd2l0aCBvcHRpb25hbCBwYWNraW5nIHN0cmF0ZWd5XG5cdFx0aWYgKG9wdGlvbnMuZGVwdGhUZXh0dXJlKSB7XG5cdFx0XHRlZmZlY3Quc2V0RGVwdGhUZXh0dXJlKG9wdGlvbnMuZGVwdGhUZXh0dXJlLnRleHR1cmUsIG9wdGlvbnMuZGVwdGhUZXh0dXJlLnBhY2tpbmcgYXMgRGVwdGhQYWNraW5nU3RyYXRlZ2llcyk7XG5cdFx0fVxuXHRcdC8vIFRlbXBvcmFyeSBmaXggdGhhdCByZXN0b3JlcyBET0YgNi4yMS4zIGJlaGF2aW9yLCBldmVyeXRoaW5nIHNpbmNlIHRoZW4gbGV0cyBzaGFwZXMgbGVhayB0aHJvdWdoIHRoZSBibHVyXG5cdFx0Y29uc3QgbWFza1Bhc3MgPSAoZWZmZWN0IGFzIE5ndEFueVJlY29yZClbJ21hc2tQYXNzJ107XG5cdFx0bWFza1Bhc3MubWFza0Z1bmN0aW9uID0gTWFza0Z1bmN0aW9uLk1VTFRJUExZX1JHQl9TRVRfQUxQSEE7XG5cblx0XHRyZXR1cm4gZWZmZWN0O1xuXHR9KTtcblxuXHRjb25zdHJ1Y3RvcigpIHtcblx0XHRhZnRlck5leHRSZW5kZXIoKCkgPT4ge1xuXHRcdFx0dGhpcy5hdXRvRWZmZWN0KCgpID0+IHtcblx0XHRcdFx0Y29uc3QgZWZmZWN0ID0gdGhpcy5lZmZlY3QoKTtcblx0XHRcdFx0cmV0dXJuICgpID0+IHtcblx0XHRcdFx0XHRlZmZlY3QuZGlzcG9zZSgpO1xuXHRcdFx0XHR9O1xuXHRcdFx0fSk7XG5cdFx0fSk7XG5cdH1cbn1cbiJdfQ==
@@ -1,13 +1,11 @@
1
1
  import { CUSTOM_ELEMENTS_SCHEMA, ChangeDetectionStrategy, Component, afterNextRender, computed, input, } from '@angular/core';
2
- import { NgtArgs, injectStore, pick } from 'angular-three';
2
+ import { NgtArgs, pick } from 'angular-three';
3
3
  import { injectAutoEffect } from 'ngxtension/auto-effect';
4
4
  import { GridEffect } from 'postprocessing';
5
5
  import * as i0 from "@angular/core";
6
6
  export class NgtpGrid {
7
7
  constructor() {
8
8
  this.autoEffect = injectAutoEffect();
9
- this.store = injectStore();
10
- this.invalidate = this.store.select('invalidate');
11
9
  this.options = input({});
12
10
  this.size = pick(this.options, 'size');
13
11
  this.effect = computed(() => {
@@ -41,4 +39,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.3", ngImpor
41
39
  schemas: [CUSTOM_ELEMENTS_SCHEMA],
42
40
  }]
43
41
  }], ctorParameters: () => [] });
44
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ3JpZC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvcG9zdHByb2Nlc3Npbmcvc3JjL2xpYi9lZmZlY3RzL2dyaWQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNOLHNCQUFzQixFQUN0Qix1QkFBdUIsRUFDdkIsU0FBUyxFQUNULGVBQWUsRUFDZixRQUFRLEVBQ1IsS0FBSyxHQUNMLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxPQUFPLEVBQUUsV0FBVyxFQUFFLElBQUksRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzRCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUMxRCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7O0FBZTVDLE1BQU0sT0FBTyxRQUFRO0lBYXBCO1FBWlEsZUFBVSxHQUFHLGdCQUFnQixFQUFFLENBQUM7UUFDaEMsVUFBSyxHQUFHLFdBQVcsRUFBRSxDQUFDO1FBQ3RCLGVBQVUsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxZQUFZLENBQUMsQ0FBQztRQUVyRCxZQUFPLEdBQUcsS0FBSyxDQUFDLEVBQWlCLENBQUMsQ0FBQztRQUMzQixTQUFJLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsTUFBTSxDQUFDLENBQUM7UUFFMUMsV0FBTSxHQUFHLFFBQVEsQ0FBQyxHQUFHLEVBQUU7WUFDdEIsTUFBTSxFQUFFLElBQUksRUFBRSxDQUFDLEVBQUUsR0FBRyxPQUFPLEVBQUUsR0FBRyxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7WUFDL0MsT0FBTyxJQUFJLFVBQVUsQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUNoQyxDQUFDLENBQUMsQ0FBQztRQUdGLGVBQWUsQ0FBQyxHQUFHLEVBQUU7WUFDcEIsSUFBSSxDQUFDLFVBQVUsQ0FBQyxHQUFHLEVBQUU7Z0JBQ3BCLE1BQU0sQ0FBQyxJQUFJLEVBQUUsTUFBTSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLEVBQUUsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUM7Z0JBQ3BELElBQUksSUFBSSxFQUFFLENBQUM7b0JBQ1YsTUFBTSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztnQkFDekMsQ0FBQztZQUNGLENBQUMsQ0FBQyxDQUFDO1FBQ0osQ0FBQyxDQUFDLENBQUM7SUFDSixDQUFDOzhHQXRCVyxRQUFRO2tHQUFSLFFBQVEsK01BUFY7O0VBRVQsNERBQ1MsT0FBTzs7MkZBSUwsUUFBUTtrQkFWcEIsU0FBUzttQkFBQztvQkFDVixRQUFRLEVBQUUsV0FBVztvQkFDckIsVUFBVSxFQUFFLElBQUk7b0JBQ2hCLFFBQVEsRUFBRTs7RUFFVDtvQkFDRCxPQUFPLEVBQUUsQ0FBQyxPQUFPLENBQUM7b0JBQ2xCLGVBQWUsRUFBRSx1QkFBdUIsQ0FBQyxNQUFNO29CQUMvQyxPQUFPLEVBQUUsQ0FBQyxzQkFBc0IsQ0FBQztpQkFDakMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuXHRDVVNUT01fRUxFTUVOVFNfU0NIRU1BLFxuXHRDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcblx0Q29tcG9uZW50LFxuXHRhZnRlck5leHRSZW5kZXIsXG5cdGNvbXB1dGVkLFxuXHRpbnB1dCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBOZ3RBcmdzLCBpbmplY3RTdG9yZSwgcGljayB9IGZyb20gJ2FuZ3VsYXItdGhyZWUnO1xuaW1wb3J0IHsgaW5qZWN0QXV0b0VmZmVjdCB9IGZyb20gJ25neHRlbnNpb24vYXV0by1lZmZlY3QnO1xuaW1wb3J0IHsgR3JpZEVmZmVjdCB9IGZyb20gJ3Bvc3Rwcm9jZXNzaW5nJztcblxudHlwZSBHcmlkT3B0aW9ucyA9IE5vbk51bGxhYmxlPENvbnN0cnVjdG9yUGFyYW1ldGVyczx0eXBlb2YgR3JpZEVmZmVjdD5bMF0+ICZcblx0UGFydGlhbDx7IHNpemU6IHsgd2lkdGg6IG51bWJlcjsgaGVpZ2h0OiBudW1iZXIgfSB9PjtcblxuQENvbXBvbmVudCh7XG5cdHNlbGVjdG9yOiAnbmd0cC1ncmlkJyxcblx0c3RhbmRhbG9uZTogdHJ1ZSxcblx0dGVtcGxhdGU6IGBcblx0XHQ8bmd0LXByaW1pdGl2ZSAqYXJncz1cIltlZmZlY3QoKV1cIiAvPlxuXHRgLFxuXHRpbXBvcnRzOiBbTmd0QXJnc10sXG5cdGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuXHRzY2hlbWFzOiBbQ1VTVE9NX0VMRU1FTlRTX1NDSEVNQV0sXG59KVxuZXhwb3J0IGNsYXNzIE5ndHBHcmlkIHtcblx0cHJpdmF0ZSBhdXRvRWZmZWN0ID0gaW5qZWN0QXV0b0VmZmVjdCgpO1xuXHRwcml2YXRlIHN0b3JlID0gaW5qZWN0U3RvcmUoKTtcblx0cHJpdmF0ZSBpbnZhbGlkYXRlID0gdGhpcy5zdG9yZS5zZWxlY3QoJ2ludmFsaWRhdGUnKTtcblxuXHRvcHRpb25zID0gaW5wdXQoe30gYXMgR3JpZE9wdGlvbnMpO1xuXHRwcml2YXRlIHNpemUgPSBwaWNrKHRoaXMub3B0aW9ucywgJ3NpemUnKTtcblxuXHRlZmZlY3QgPSBjb21wdXRlZCgoKSA9PiB7XG5cdFx0Y29uc3QgeyBzaXplOiBfLCAuLi5vcHRpb25zIH0gPSB0aGlzLm9wdGlvbnMoKTtcblx0XHRyZXR1cm4gbmV3IEdyaWRFZmZlY3Qob3B0aW9ucyk7XG5cdH0pO1xuXG5cdGNvbnN0cnVjdG9yKCkge1xuXHRcdGFmdGVyTmV4dFJlbmRlcigoKSA9PiB7XG5cdFx0XHR0aGlzLmF1dG9FZmZlY3QoKCkgPT4ge1xuXHRcdFx0XHRjb25zdCBbc2l6ZSwgZWZmZWN0XSA9IFt0aGlzLnNpemUoKSwgdGhpcy5lZmZlY3QoKV07XG5cdFx0XHRcdGlmIChzaXplKSB7XG5cdFx0XHRcdFx0ZWZmZWN0LnNldFNpemUoc2l6ZS53aWR0aCwgc2l6ZS5oZWlnaHQpO1xuXHRcdFx0XHR9XG5cdFx0XHR9KTtcblx0XHR9KTtcblx0fVxufVxuIl19
42
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ3JpZC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvcG9zdHByb2Nlc3Npbmcvc3JjL2xpYi9lZmZlY3RzL2dyaWQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNOLHNCQUFzQixFQUN0Qix1QkFBdUIsRUFDdkIsU0FBUyxFQUNULGVBQWUsRUFDZixRQUFRLEVBQ1IsS0FBSyxHQUNMLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzlDLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQzFELE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQzs7QUFlNUMsTUFBTSxPQUFPLFFBQVE7SUFXcEI7UUFWUSxlQUFVLEdBQUcsZ0JBQWdCLEVBQUUsQ0FBQztRQUV4QyxZQUFPLEdBQUcsS0FBSyxDQUFDLEVBQWlCLENBQUMsQ0FBQztRQUMzQixTQUFJLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsTUFBTSxDQUFDLENBQUM7UUFFMUMsV0FBTSxHQUFHLFFBQVEsQ0FBQyxHQUFHLEVBQUU7WUFDdEIsTUFBTSxFQUFFLElBQUksRUFBRSxDQUFDLEVBQUUsR0FBRyxPQUFPLEVBQUUsR0FBRyxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7WUFDL0MsT0FBTyxJQUFJLFVBQVUsQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUNoQyxDQUFDLENBQUMsQ0FBQztRQUdGLGVBQWUsQ0FBQyxHQUFHLEVBQUU7WUFDcEIsSUFBSSxDQUFDLFVBQVUsQ0FBQyxHQUFHLEVBQUU7Z0JBQ3BCLE1BQU0sQ0FBQyxJQUFJLEVBQUUsTUFBTSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLEVBQUUsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUM7Z0JBQ3BELElBQUksSUFBSSxFQUFFLENBQUM7b0JBQ1YsTUFBTSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztnQkFDekMsQ0FBQztZQUNGLENBQUMsQ0FBQyxDQUFDO1FBQ0osQ0FBQyxDQUFDLENBQUM7SUFDSixDQUFDOzhHQXBCVyxRQUFRO2tHQUFSLFFBQVEsK01BUFY7O0VBRVQsNERBQ1MsT0FBTzs7MkZBSUwsUUFBUTtrQkFWcEIsU0FBUzttQkFBQztvQkFDVixRQUFRLEVBQUUsV0FBVztvQkFDckIsVUFBVSxFQUFFLElBQUk7b0JBQ2hCLFFBQVEsRUFBRTs7RUFFVDtvQkFDRCxPQUFPLEVBQUUsQ0FBQyxPQUFPLENBQUM7b0JBQ2xCLGVBQWUsRUFBRSx1QkFBdUIsQ0FBQyxNQUFNO29CQUMvQyxPQUFPLEVBQUUsQ0FBQyxzQkFBc0IsQ0FBQztpQkFDakMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuXHRDVVNUT01fRUxFTUVOVFNfU0NIRU1BLFxuXHRDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcblx0Q29tcG9uZW50LFxuXHRhZnRlck5leHRSZW5kZXIsXG5cdGNvbXB1dGVkLFxuXHRpbnB1dCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBOZ3RBcmdzLCBwaWNrIH0gZnJvbSAnYW5ndWxhci10aHJlZSc7XG5pbXBvcnQgeyBpbmplY3RBdXRvRWZmZWN0IH0gZnJvbSAnbmd4dGVuc2lvbi9hdXRvLWVmZmVjdCc7XG5pbXBvcnQgeyBHcmlkRWZmZWN0IH0gZnJvbSAncG9zdHByb2Nlc3NpbmcnO1xuXG50eXBlIEdyaWRPcHRpb25zID0gTm9uTnVsbGFibGU8Q29uc3RydWN0b3JQYXJhbWV0ZXJzPHR5cGVvZiBHcmlkRWZmZWN0PlswXT4gJlxuXHRQYXJ0aWFsPHsgc2l6ZTogeyB3aWR0aDogbnVtYmVyOyBoZWlnaHQ6IG51bWJlciB9IH0+O1xuXG5AQ29tcG9uZW50KHtcblx0c2VsZWN0b3I6ICduZ3RwLWdyaWQnLFxuXHRzdGFuZGFsb25lOiB0cnVlLFxuXHR0ZW1wbGF0ZTogYFxuXHRcdDxuZ3QtcHJpbWl0aXZlICphcmdzPVwiW2VmZmVjdCgpXVwiIC8+XG5cdGAsXG5cdGltcG9ydHM6IFtOZ3RBcmdzXSxcblx0Y2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG5cdHNjaGVtYXM6IFtDVVNUT01fRUxFTUVOVFNfU0NIRU1BXSxcbn0pXG5leHBvcnQgY2xhc3MgTmd0cEdyaWQge1xuXHRwcml2YXRlIGF1dG9FZmZlY3QgPSBpbmplY3RBdXRvRWZmZWN0KCk7XG5cblx0b3B0aW9ucyA9IGlucHV0KHt9IGFzIEdyaWRPcHRpb25zKTtcblx0cHJpdmF0ZSBzaXplID0gcGljayh0aGlzLm9wdGlvbnMsICdzaXplJyk7XG5cblx0ZWZmZWN0ID0gY29tcHV0ZWQoKCkgPT4ge1xuXHRcdGNvbnN0IHsgc2l6ZTogXywgLi4ub3B0aW9ucyB9ID0gdGhpcy5vcHRpb25zKCk7XG5cdFx0cmV0dXJuIG5ldyBHcmlkRWZmZWN0KG9wdGlvbnMpO1xuXHR9KTtcblxuXHRjb25zdHJ1Y3RvcigpIHtcblx0XHRhZnRlck5leHRSZW5kZXIoKCkgPT4ge1xuXHRcdFx0dGhpcy5hdXRvRWZmZWN0KCgpID0+IHtcblx0XHRcdFx0Y29uc3QgW3NpemUsIGVmZmVjdF0gPSBbdGhpcy5zaXplKCksIHRoaXMuZWZmZWN0KCldO1xuXHRcdFx0XHRpZiAoc2l6ZSkge1xuXHRcdFx0XHRcdGVmZmVjdC5zZXRTaXplKHNpemUud2lkdGgsIHNpemUuaGVpZ2h0KTtcblx0XHRcdFx0fVxuXHRcdFx0fSk7XG5cdFx0fSk7XG5cdH1cbn1cbiJdfQ==
@@ -176,7 +176,7 @@ export class NgtpLensFlare {
176
176
  }
177
177
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.3", ngImport: i0, type: NgtpLensFlare, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
178
178
  static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "18.1.3", type: NgtpLensFlare, isStandalone: true, selector: "ngtp-lens-flare", inputs: { options: { classPropertyName: "options", publicName: "options", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0, template: `
179
- <ngt-primitive *args="[effect()]" [dispose]="null" />
179
+ <ngt-primitive *args="[effect()]" [parameters]="{ dispose: null }" />
180
180
  `, isInline: true, dependencies: [{ kind: "directive", type: NgtArgs, selector: "ng-template[args]", inputs: ["args"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
181
181
  }
182
182
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.3", ngImport: i0, type: NgtpLensFlare, decorators: [{
@@ -185,11 +185,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.3", ngImpor
185
185
  selector: 'ngtp-lens-flare',
186
186
  standalone: true,
187
187
  template: `
188
- <ngt-primitive *args="[effect()]" [dispose]="null" />
188
+ <ngt-primitive *args="[effect()]" [parameters]="{ dispose: null }" />
189
189
  `,
190
190
  imports: [NgtArgs],
191
191
  schemas: [CUSTOM_ELEMENTS_SCHEMA],
192
192
  changeDetection: ChangeDetectionStrategy.OnPush,
193
193
  }]
194
194
  }], ctorParameters: () => [] });
195
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGVucy1mbGFyZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvcG9zdHByb2Nlc3Npbmcvc3JjL2xpYi9lZmZlY3RzL2xlbnMtZmxhcmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsbUNBQW1DO0FBQ25DLHVDQUF1QztBQUV2QyxPQUFPLEVBQ04sc0JBQXNCLEVBQ3RCLHVCQUF1QixFQUN2QixTQUFTLEVBQ1QsZUFBZSxFQUNmLFFBQVEsRUFDUixNQUFNLEVBQ04sS0FBSyxHQUNMLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsV0FBVyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3pFLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxPQUFPLENBQUM7QUFDL0IsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDMUQsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQ3ZELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDdkQsT0FBTyxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQVcsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxPQUFPLENBQUM7QUFDeEUsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sb0JBQW9CLENBQUM7O0FBRXhELE1BQU0sZUFBZSxHQUFHO0lBQ3ZCLGNBQWMsRUFBRSx3QkFBd0IsQ0FBQzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Q0E0Q3pDO0NBQ0EsQ0FBQztBQUVGLE1BQU0sT0FBTyxlQUFnQixTQUFRLE1BQU07SUFDMUMsWUFBWSxFQUNYLGFBQWEsR0FBRyxhQUFhLENBQUMsTUFBTSxFQUNwQyxPQUFPLEdBQUcsSUFBSSxFQUNkLFNBQVMsR0FBRyxHQUFHLEVBQ2YsWUFBWSxHQUFHLENB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QUM7b0JBQ1osQ0FBQzt5QkFBTSxJQUFJLE1BQU0sWUFBWSxJQUFJLEVBQUUsQ0FBQzt3QkFDbkMsSUFBSSxNQUFNLENBQUMsUUFBUSxDQUFDLFFBQVEsRUFBRSxhQUFhLEVBQUUsS0FBSyxHQUFHLEdBQUcsRUFBRSxDQUFDOzRCQUMxRCxvQ0FBb0M7NEJBQ3BDLE1BQU0sR0FBRyxHQUFHLENBQUM7d0JBQ2QsQ0FBQzs2QkFBTSxJQUFJLE1BQU0sQ0FBQyxRQUFRLENBQUMsYUFBYSxJQUFJLE1BQU0sQ0FBQyxRQUFRLENBQUMsYUFBYSxHQUFHLEdBQUcsRUFBRSxDQUFDOzRCQUNqRiwwREFBMEQ7NEJBQzFELE1BQU0sR0FBRyxHQUFHLENBQUM7d0JBQ2QsQ0FBQzs2QkFBTSxJQUFJLE1BQU0sQ0FBQyxRQUFRLENBQUMsV0FBVyxFQUFFLENBQUM7NEJBQ3hDLHNEQUFzRDs0QkFDdEQsTUFBTSxHQUFHLE1BQU0sQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDO3dCQUNsQyxDQUFDO29CQUNGLENBQUM7Z0JBQ0YsQ0FBQztZQUNGLENBQUM7WUFFRCxNQUFNLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRSxPQUFPLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxLQUFLLENBQUMsQ0FBQztRQUMzRCxDQUFDLENBQUMsQ0FBQztJQUNKLENBQUM7OEdBcEZXLGFBQWE7a0dBQWIsYUFBYSxxTkFQZjs7RUFFVCw0REFDUyxPQUFPOzsyRkFJTCxhQUFhO2tCQVZ6QixTQUFTO21CQUFDO29CQUNWLFFBQVEsRUFBRSxpQkFBaUI7b0JBQzNCLFVBQVUsRUFBRSxJQUFJO29CQUNoQixRQUFRLEVBQUU7O0VBRVQ7b0JBQ0QsT0FBTyxFQUFFLENBQUMsT0FBTyxDQUFDO29CQUNsQixPQUFPLEVBQUUsQ0FBQyxzQkFBc0IsQ0FBQztvQkFDakMsZUFBZSxFQUFFLHVCQUF1QixDQUFDLE1BQU07aUJBQy9DIiwic291cmNlc0NvbnRlbnQiOlsiLy8gQ3JlYXRlZCBieSBBbmRlcnNvbiBNYW5jaW5pIDIwMjNcbi8vIFJlYWN0IFRocmVlIEZpYmVyIFVsdGltYXRlIExlbnNGbGFyZVxuXG5pbXBvcnQge1xuXHRDVVNUT01fRUxFTUVOVFNfU0NIRU1BLFxuXHRDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcblx0Q29tcG9uZW50LFxuXHRhZnRlck5leHRSZW5kZXIsXG5cdGNvbXB1dGVkLFxuXHRpbmplY3QsXG5cdGlucHV0LFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE5ndEFyZ3MsIGluamVjdEJlZm9yZVJlbmRlciwgaW5qZWN0U3RvcmUgfSBmcm9tICdhbmd1bGFyLXRocmVlJztcbmltcG9ydCB7IGVhc2luZyB9IGZyb20gJ21hYXRoJztcbmltcG9ydCB7IGluamVjdEF1dG9FZmZlY3QgfSBmcm9tICduZ3h0ZW5zaW9uL2F1dG8tZWZmZWN0JztcbmltcG9ydCB7IG1lcmdlSW5wdXRzIH0gZnJvbSAnbmd4dGVuc2lvbi9pbmplY3QtaW5wdXRzJztcbmltcG9ydCB7IEJsZW5kRnVuY3Rpb24sIEVmZmVjdCB9IGZyb20gJ3Bvc3Rwcm9jZXNzaW5nJztcbmltcG9ydCB7IENvbG9yLCBNZXNoLCBUZXh0dXJlLCBVbmlmb3JtLCBWZWN0b3IyLCBWZWN0b3IzIH0gZnJvbSAndGhyZWUnO1xuaW1wb3J0IHsgTmd0cEVmZmVjdENvbXBvc2VyIH0gZnJvbSAnLi4vZWZmZWN0LWNvbXBvc2VyJztcblxuY29uc3QgTGVuc0ZsYXJlU2hhZGVyID0ge1xuXHRmcmFnbWVudFNoYWRlcjogLyogbGFuZ3VhZ2U9Z2xzbCBnbHNsICovIGBcblxuICB1bmlmb3JtIGZsb2F0IGlUaW1lO1xuICB1bmlmb3JtIHZlYzIgbGVuc1Bvc2l0aW9uO1xuICB1bmlmb3JtIHZlYzIgaVJlc29sdXRpb247XG4gIHVuaWZvcm0gdmVjMyBjb2xvckdhaW47XG4gIHVuaWZvcm0gZmxvYXQgc3RhclBvaW50cztcbiAgdW5pZm9ybSBmbG9hdCBnbGFyZVNpemU7XG4gIHVuaWZvcm0gZmxvYXQgZmxhcmVTaXplO1xuICB1bmlmb3JtIGZsb2F0IGZsYXJlU3BlZWQ7XG4gIHVuaWZvcm0gZmxvYXQgZmxhcmVTaGFwZTtcbiAgdW5pZm9ybSBmbG9hdCBoYWxvU2NhbGU7XG4gIHVuaWZvcm0gZmxvYXQgb3BhY2l0eTtcbiAgdW5pZm9ybSBib29sIGFuaW1hdGVkO1xuICB1bmlmb3JtIGJvb2wgYW5hbW9ycGhpYztcbiAgdW5pZm9ybSBib29sIGVuYWJsZWQ7XG4gIHVuaWZvcm0gYm9vbCBzZWNvbmRhcnlHaG9zdHM7XG4gIHVuaWZvcm0gYm9vbCBzdGFyQnVyc3Q7XG4gIHVuaWZvcm0gZmxvYXQgZ2hvc3RTY2FsZTtcbiAgdW5pZm9ybSBib29sIGFkaXRpb25hbFN0cmVha3M7XG4gIHVuaWZvcm0gc2FtcGxlcjJEIGxlbnNEaXJ0VGV4dHVyZTtcbiAgdmVjMiB2eHRDO1xuXG4gIGZsb2F0IHJuZGYoZmxvYXQgbil7cmV0dXJuIGZyYWN0KHNpbihuKSAqIDQzNzU4LjU0NTMxMjMpO31mbG9hdCBuaXooZmxvYXQgcCl7ZmxvYXQgZmwgPSBmbG9vcihwKTtmbG9hdCBmYyA9IGZyYWN0KHApO3JldHVybiBtaXgocm5kZihmbCkscm5kZihmbCArIDEuMCksIGZjKTt9XG4gIHZlYzMgaHN2MnJnYih2ZWMzIGMpe3ZlYzQgayA9IHZlYzQoMS4wLCAyLjAgLyAzLjAsIDEuMCAvIDMuMCwgMy4wKTt2ZWMzIHAgPSBhYnMoZnJhY3QoYy54eHggKyBrLnh5eikgKiA2LjAgLSBrLnd3dyk7cmV0dXJuIGMueiAqIG1peChrLnh4eCwgY2xhbXAocCAtIGsueHh4LCAwLjAsIDEuMCksIGMueSk7fVxuICBmbG9hdCBzYXRVKGZsb2F0IHgpe3JldHVybiBjbGFtcCh4LCAwLiwxLik7fXZlYzIgcnRVKHZlYzIgbmF6LCBmbG9hdCBydG4pe3JldHVybiB2ZWMyKGNvcyhydG4pICogbmF6LnggKyBzaW4ocnRuKSAqIG5hei55LGNvcyhydG4pICogbmF6LnkgLSBzaW4ocnRuKSAqIG5hei54KTt9XG4gIHZlYzMgZHJ3Rih2ZWMyIHAsIGZsb2F0IGludGVuc2l0eSwgZmxvYXQgcm5kLCBmbG9hdCBzcGVlZCwgaW50IGlkKXtmbG9hdCBmbGhvcyA9ICgxLiAvIDMyLikgKiBmbG9hdChpZCkgKiAwLjE7ZmxvYXQgbGluZ3JhZCA9IGRpc3RhbmNlKHZlYzIoMC4pLCBwKTtmbG9hdCBleHBnID0gMS4gLyBleHAobGluZ3JhZCAqIChmcmFjdChybmQpICogMC42NiArIDAuMzMpKTt2ZWMzIHF6VGcgPSBoc3YycmdiKHZlYzMoIGZyYWN0KCAoZXhwZyAqIDguKSArIHNwZWVkICogZmxhcmVTcGVlZCArIGZsaG9zKSwgcG93KDEuLWFicyhleHBnKjIuLTEuKSwgMC40NSksIDIwLjAgKiBleHBnICogaW50ZW5zaXR5KSk7ZmxvYXQgaW50ZXJuYWxTdGFyUG9pbnRzO2lmKGFuYW1vcnBoaWMpe2ludGVybmFsU3RhclBvaW50cyA9IDEuMDt9IGVsc2V7aW50ZXJuYWxTdGFyUG9pbnRzID0gc3RhclBvaW50czt9ZmxvYXQgYW1zID0gbGVuZ3RoKHAgKiBmbGFyZVNoYXBlICogc2luKGludGVybmFsU3RhclBvaW50cyAqIGF0YW4ocC54LCBwLnkpKSk7ZmxvYXQga0poZyA9IHBvdygxLi1zYXRVKGFtcyksICggYW5hbW9ycGhpYyA/IDEwMC4gOiAxMi4pKTtrSmhnICs9IHNhdFUoZXhwZy0wLjkpICogMy47a0poZyA9IHBvdyhrSmhnICogZXhwZywgOC4gKyAoMS4taW50ZW5zaXR5KSAqIDUuKTtpZihmbGFyZVNwZWVkID4gMC4wKXtyZXR1cm4gdmVjMyhrSmhnKSAqIHF6VGc7fSBlbHNle3JldHVybiB2ZWMzKGtKaGcpICogZmxhcmVTaXplICogMTUuO319XG4gIGZsb2F0IGFtczIodmVjMyBhLCB2ZWMzIGIpIHsgcmV0dXJuIGFicyhhLnggLSBiLngpICsgYWJzKGEueSAtIGIueSkgKyBhYnMoYS56IC0gYi56KTt9dmVjMyBzYXRVKHZlYzMgeCl7cmV0dXJuIGNsYW1wKHgsIHZlYzMoMC4wKSwgdmVjMygxLjApKTt9XG4gIGZsb2F0IGdsUih2ZWMyIG5heiwgdmVjMiBwb3MsIGZsb2F0IHpzaSl7dmVjMiBtbmk7aWYoYW5pbWF0ZWQpe21uaSA9IHJ0VShuYXotcG9zLCBpVGltZSAqIDAuMSk7fSBlbHNle21uaSA9IG5hei1wb3M7fWZsb2F0IGFuZyA9IGF0YW4obW5pLnksIG1uaS54KSAqIChhbmFtb3JwaGljID8gMS4wIDogc3RhclBvaW50cyk7ZmxvYXQgYW1zMiA9IGxlbmd0aChtbmkpO2FtczIgPSBwb3coYW1zMiwgLjkpO2Zsb2F0IGYwID0gMS4wLyhsZW5ndGgobmF6LXBvcykqKDEuMC96c2kqMTYuMCkrLjIpO3JldHVybiBmMCtmMCooc2luKChhbmcpKSouMiArLjMpO31cbiAgZmxvYXQgc2RIZXgodmVjMiBwKXtwID0gYWJzKHApO3ZlYzIgcSA9IHZlYzIocC54KjIuMCowLjU3NzM1MDMsIHAueSArIHAueCowLjU3NzM1MDMpO3JldHVybiBkb3Qoc3RlcChxLnh5LHEueXgpLCAxLjAtcS55eCk7fWZsb2F0IGZwb3coZmxvYXQgeCwgZmxvYXQgayl7cmV0dXJuIHggPiBrID8gcG93KCh4LWspLygxLjAtayksMi4wKSA6IDAuMDt9XG4gIHZlYzMgckh4KHZlYzIgbmF6LCB2ZWMyIHAsIGZsb2F0IHMsIHZlYzMgY29sKXtuYXogLT0gcDtpZiAoYWJzKG5hei54KSA8IDAuMipzICYmIGFicyhuYXoueSkgPCAwLjIqcyl7cmV0dXJuIG1peCh2ZWMzKDApLG1peCh2ZWMzKDApLGNvbCwwLjEgKyBmcG93KGxlbmd0aChuYXovcyksMC4xKSoxMC4wKSxzbW9vdGhzdGVwKDAuMCwwLjEsc2RIZXgobmF6KjIwLjAvcykpKTt9cmV0dXJuIHZlYzMoMCk7fVxuICB2ZWMzIG1Mcyh2ZWMyIG5heiwgdmVjMiBwb3Mpe3ZlYzIgbW5pID0gbmF6LXBvczt2ZWMyIHp4TXAgPSBuYXoqKGxlbmd0aChuYXopKTtmbG9hdCBhbmcgPSBhdGFuKG1uaS54LG1uaS55KTtmbG9hdCBmMCA9IC4zLyhsZW5ndGgobmF6LXBvcykqMTYuMCsxLjApO2YwID0gZjAqKHNpbihuaXooc2luKGFuZyozLjktKGFuaW1hdGVkID8gaVRpbWUgOiAwLjApICogMC4zKSAqIHN0YXJQb2ludHMpKSouMiApO2Zsb2F0IGYxID0gbWF4KDAuMDEtcG93KGxlbmd0aChuYXorMS4yKnBvcyksMS45KSwuMCkqNy4wO2Zsb2F0IGYyID0gbWF4KC45LygxMC4wKzMyLjAqcG93KGxlbmd0aCh6eE1wKzAuOTkqcG9zKSwyLjApKSwuMCkqMC4zNTtmbG9hdCBmMjIgPSBtYXgoLjkvKDExLjArMzIuMCpwb3cobGVuZ3RoKHp4TXArMC44NSpwb3MpLDIuMCkpLC4wKSowLjIzO2Zsb2F0IGYyMyA9IG1heCguOS8oMTIuMCszMi4wKnBvdyhsZW5ndGgoenhNcCswLjk1KnBvcyksMi4wKSksLjApKjAuNjt2ZWMyIHp0WCA9IG1peChuYXosenhNcCwgMC4xKTtmbG9hdCBmNCA9IG1heCgwLjAxLXBvdyhsZW5ndGgoenRYKzAuNCpwb3MpLDIuOSksLjApKjQuMDI7ZmxvYXQgZjQyID0gbWF4KDAuMC1wb3cobGVuZ3RoKHp0WCswLjQ1KnBvcyksMi45KSwuMCkqNC4xO2Zsb2F0IGY0MyA9IG1heCgwLjAxLXBvdyhsZW5ndGgoenRYKzAuNSpwb3MpLDIuOSksLjApKjQuNjt6dFggPSBtaXgobmF6LHp4TXAsLS40KTtmbG9hdCBmNSA9IG1heCgwLjAxLXBvdyhsZW5ndGgoenRYKzAuMSpwb3MpLDUuNSksLjApKjIuMDtmbG9hdCBmNTIgPSBtYXgoMC4wMS1wb3cobGVuZ3RoKHp0WCswLjIqcG9zKSw1LjUpLC4wKSoyLjA7ZmxvYXQgZjUzID0gbWF4KDAuMDEtcG93KGxlbmd0aCh6dFgrMC4xKnBvcyksNS41KSwuMCkqMi4wO3p0WCA9IG1peChuYXosenhNcCwgMi4xKTtmbG9hdCBmNiA9IG1heCgwLjAxLXBvdyhsZW5ndGgoenRYLTAuMypwb3MpLDEuNjEpLC4wKSozLjE1OTtmbG9hdCBmNjIgPSBtYXgoMC4wMS1wb3cobGVuZ3RoKHp0WC0wLjMyNSpwb3MpLDEuNjE0KSwuMCkqMy4xNDtmbG9hdCBmNjMgPSBtYXgoMC4wMS1wb3cobGVuZ3RoKHp0WC0wLjM4OSpwb3MpLDEuNjIzKSwuMCkqMy4xMjt2ZWMzIGMgPSB2ZWMzKGdsUihuYXoscG9zLCBnbGFyZVNpemUpKTt2ZWMyIHByb3Q7aWYoYW5pbWF0ZWQpe3Byb3QgPSBydFUobmF6IC0gcG9zLCAoaVRpbWUgKiAwLjEpKTt9IGVsc2UgaWYoYW5hbW9ycGhpYyl7cHJvdCA9IHJ0VShuYXogLSBwb3MsIDEuNTcwNzk2KTt9IGVsc2Uge3Byb3QgPSBuYXogLSBwb3M7fWMgKz0gZHJ3Rihwcm90LCAoYW5hbW9ycGhpYyA/IGZsYXJlU2l6ZSAqIDEwLiA6IGZsYXJlU2l6ZSksIDAuMSwgaVRpbWUsIDEpO2Mucis9ZjErZjIrZjQrZjUrZjY7IGMuZys9ZjErZjIyK2Y0MitmNTIrZjYyOyBjLmIrPWYxK2YyMytmNDMrZjUzK2Y2MztjID0gYyoxLjMgKiB2ZWMzKGxlbmd0aCh6eE1wKSsuMDkpO2MrPXZlYzMoZjApO3JldHVybiBjO31cbiAgdmVjMyBjYyh2ZWMzIGNsciwgZmxvYXQgZmN0LGZsb2F0IGZjdDIpe2Zsb2F0IHcgPSBjbHIueCtjbHIueStjbHIuejtyZXR1cm4gbWl4KGNscix2ZWMzKHcpKmZjdCx3KmZjdDIpO31mbG9hdCBybmQodmVjMiBwKXtmbG9hdCBmID0gZnJhY3Qoc2luKGRvdChwLCB2ZWMyKDEyLjEyMzQsIDcyLjgzOTIpICkqNDUxMjMuMikpO3JldHVybiBmO31mbG9hdCBybmQoZmxvYXQgdyl7ZmxvYXQgZiA9IGZyYWN0KHNpbih3KSoxMDAwLik7cmV0dXJuIGY7fVxuICBmbG9hdCByU2hwKHZlYzIgcCwgaW50IE4pe2Zsb2F0IGY7ZmxvYXQgYT1hdGFuKHAueCxwLnkpKy4yO2Zsb2F0IGI9Ni4yODMxOS9mbG9hdChOKTtmPXNtb290aHN0ZXAoLjUsLjUxLCBjb3MoZmxvb3IoLjUrYS9iKSpiLWEpKmxlbmd0aChwLnh5KSogMi4wICAtZ2hvc3RTY2FsZSk7cmV0dXJuIGY7fVxuICB2ZWMzIGRyQyh2ZWMyIHAsIGZsb2F0IHpzaSwgZmxvYXQgZEN5LCB2ZWMzIGNsciwgdmVjMyBjbHIyLCBmbG9hdCBhbXMyLCB2ZWMyIGVzb20pe2Zsb2F0IGwgPSBsZW5ndGgocCArIGVzb20qKGFtczIqMi4pKSt6c2kvMi47ZmxvYXQgbDIgPSBsZW5ndGgocCArIGVzb20qKGFtczIqNC4pKSt6c2kvMy47ZmxvYXQgYyA9IG1heCgwLjAxLXBvdyhsZW5ndGgocCArIGVzb20qYW1zMiksIHpzaSpnaG9zdFNjYWxlKSwgMC4wKSoxMC47ZmxvYXQgYzEgPSBtYXgoMC4wMDEtcG93KGwtMC4zLCAxLi80MC4pK3NpbihsKjIwLiksIDAuMCkqMy47ZmxvYXQgYzIgPSAgbWF4KDAuMDkvcG93KGxlbmd0aChwLWVzb20qYW1zMi8uNSkqMS4sIC45NSksIDAuMCkvMjAuO2Zsb2F0IHMgPSBtYXgoMC4wMi1wb3coclNocChwKjUuICsgZXNvbSphbXMyKjUuICsgZEN5LCA2KSAsIDEuKSwgMC4wKSoxLjU7Y2xyID0gY29zKHZlYzMoMC40NCwgLjI0LCAuMikqOC4gKyBhbXMyKjQuKSowLjUrLjU7dmVjMyBmID0gYypjbHI7ZiArPSBjMSpjbHI7ZiArPSBjMipjbHI7ZiArPSAgcypjbHI7cmV0dXJuIGYtMC4wMTt9XG4gIHZlYzQgZ2VMQyhmbG9hdCB4KXtyZXR1cm4gdmVjNCh2ZWMzKG1peChtaXgobWl4KG1peChtaXgobWl4KG1peChtaXgobWl4KG1peChtaXgobWl4KG1peChtaXgobWl4KHZlYzMoMC4sIDAuLCAwLiksdmVjMygwLiwgMC4sIDAuKSwgc21vb3Roc3RlcCgwLjAsIDAuMDYzLCB4KSksdmVjMygwLiwgMC4sIDAuKSwgc21vb3Roc3RlcCgwLjA2MywgMC4xMjUsIHgpKSx2ZWMzKDAuMCwgMC4sIDAuKSwgc21vb3Roc3RlcCgwLjEyNSwgMC4xODgsIHgpKSx2ZWMzKDAuMTg4LCAwLjEzMSwgMC4xMTYpLCBzbW9vdGhzdGVwKDAuMTg4LCAwLjIyNywgeCkpLHZlYzMoMC4zMSwgMC4yMDQsIDAuNTM3KSwgc21vb3Roc3RlcCgwLjIyNywgMC4yNTEsIHgpKSx2ZWMzKDAuMTkyLCAwLjEwNiwgMC4yODYpLCBzbW9vdGhzdGVwKDAuMjUxLCAwLjMxNCwgeCkpLHZlYzMoMC4xMDIsIDAuMDA4LCAwLjM0MSksIHNtb290aHN0ZXAoMC4zMTQsIDAuMzkyLCB4KSksdmVjMygwLjA4NiwgMC4wLCAwLjE0MSksIHNtb290aHN0ZXAoMC4zOTIsIDAuNTAyLCB4KSksdmVjMygxLjAsIDAuMzEsIDAuMCksIHNtb290aHN0ZXAoMC41MDIsIDAuNjA0LCB4KSksdmVjMyguMSwgMC4xLCAwLjEpLCBzbW9vdGhzdGVwKDAuNjA0LCAwLjY0MywgeCkpLHZlYzMoMS4wLCAwLjkyOSwgMC4wKSwgc21vb3Roc3RlcCgwLjY0MywgMC43NjEsIHgpKSx2ZWMzKDEuMCwgMC4wODYsIDAuNDI0KSwgc21vb3Roc3RlcCgwLjc2MSwgMC44NDcsIHgpKSx2ZWMzKDEuMCwgMC40OSwgMC4wKSwgc21vb3Roc3RlcCgwLjg0NywgMC44OSwgeCkpLHZlYzMoMC45NDUsIDAuMjc1LCAwLjQ3NSksIHNtb290aHN0ZXAoMC44OSwgMC45NDEsIHgpKSx2ZWMzKDAuMjUxLCAwLjI3NSwgMC43OTYpLCBzbW9vdGhzdGVwKDAuOTQxLCAxLjAsIHgpKSksMS4wKTt9XG4gIGZsb2F0IGRpVE4odmVjMiBwKXt2ZWMyIGYgPSBmcmFjdChwKTtmID0gKGYgKiBmKSAqICgzLjAgLSAoMi4wICogZikpO2Zsb2F0IG4gPSBkb3QoZmxvb3IocCksIHZlYzIoMS4wLCAxNTcuMCkpO3ZlYzQgYSA9IGZyYWN0KHNpbih2ZWM0KG4gKyAwLjAsIG4gKyAxLjAsIG4gKyAxNTcuMCwgbiArIDE1OC4wKSkgKiA0Mzc1OC41NDUzMTIzKTtyZXR1cm4gbWl4KG1peChhLngsIGEueSwgZi54KSwgbWl4KGEueiwgYS53LCBmLngpLCBmLnkpO31cbiAgZmxvYXQgZmJtKHZlYzIgcCl7Y29uc3QgbWF0MiBtID0gbWF0MigwLjgwLCAtMC42MCwgMC42MCwgMC44MCk7ZmxvYXQgZiA9IDAuMDtmICs9IDAuNTAwMCpkaVROKHApOyBwID0gbSpwKjIuMDI7ZiArPSAwLjI1MDAqZGlUTihwKTsgcCA9IG0qcCoyLjAzO2YgKz0gMC4xMjUwKmRpVE4ocCk7IHAgPSBtKnAqMi4wMTtmICs9IDAuMDYyNSpkaVROKHApO3JldHVybiBmLzAuOTM3NTt9XG4gIHZlYzQgZ2VMUyh2ZWMyIHApe3ZlYzIgcHAgPSAocCAtIHZlYzIoMC41KSkgKiAyLjA7ZmxvYXQgYSA9IGF0YW4ocHAueSwgcHAueCk7dmVjNCBjcCA9IHZlYzQoc2luKGEgKiAxLjApLCBsZW5ndGgocHApLCBzaW4oYSAqIDEzLjApLCBzaW4oYSAqIDUzLjApKTtmbG9hdCBkID0gc2luKGNsYW1wKHBvdyhsZW5ndGgodmVjMigwLjUpIC0gcCkgKiAwLjUgKyBoYWxvU2NhbGUgLzIuLCA1LjApLCAwLjAsIDEuMCkgKiAzLjE0MTU5KTt2ZWMzIGMgPSB2ZWMzKGQpICogdmVjMyhmYm0oY3AueHkgKiAxNi4wKSAqIGZibShjcC56dyAqIDkuMCkgKiBtYXgobWF4KG1heChtYXgoMC41LCBzaW4oYSAqIDEuMCkpLCBzaW4oYSAqIDMuMCkgKiAwLjgpLCBzaW4oYSAqIDcuMCkgKiAwLjgpLCBzaW4oYSAqIDkuMCkgKiAxMC42KSk7YyAqPSB2ZWMzKG1peCgyLjAsIChzaW4obGVuZ3RoKHBwLnh5KSAqIDI1Ni4wKSAqIDAuNSkgKyAwLjUsIHNpbigoY2xhbXAoKGxlbmd0aChwcC54eSkgLSAwLjg3NSkgLyAwLjEsIDAuMCwgMS4wKSArIDAuMCkgKiAyLjAgKiAzLjE0MTU5KSAqIDEuNSkgKyAwLjUpICogMC4zMjc1O3JldHVybiB2ZWM0KHZlYzMoYyAqIDEuMCksIGQpO31cbiAgdmVjNCBnZUxEKHZlYzIgcCl7cC54eSArPSB2ZWMyKGZibShwLnl4ICogMy4wKSwgZmJtKHAueXggKiAyLjApKSAqIDAuMDgyNTt2ZWMzIG8gPSB2ZWMzKG1peCgwLjEyNSwgMC4yNSwgbWF4KG1heChzbW9vdGhzdGVwKDAuMSwgMC4wLCBsZW5ndGgocCAtIHZlYzIoMC4yNSkpKSxzbW9vdGhzdGVwKDAuNCwgMC4wLCBsZW5ndGgocCAtIHZlYzIoMC43NSkpKSksc21vb3Roc3RlcCgwLjgsIDAuMCwgbGVuZ3RoKHAgLSB2ZWMyKDAuODc1LCAwLjEyNSkpKSkpKTtvICs9IHZlYzMobWF4KGZibShwICogMS4wKSAtIDAuNSwgMC4wKSkgKiAwLjU7byArPSB2ZWMzKG1heChmYm0ocCAqIDIuMCkgLSAwLjUsIDAuMCkpICogMC41O28gKz0gdmVjMyhtYXgoZmJtKHAgKiA0LjApIC0gMC41LCAwLjApKSAqIDAuMjU7byArPSB2ZWMzKG1heChmYm0ocCAqIDguMCkgLSAwLjc1LCAwLjApKSAqIDEuMDtvICs9IHZlYzMobWF4KGZibShwICogMTYuMCkgLSAwLjc1LCAwLjApKSAqIDAuNzU7byArPSB2ZWMzKG1heChmYm0ocCAqIDY0LjApIC0gMC43NSwgMC4wKSkgKiAwLjU7cmV0dXJuIHZlYzQoY2xhbXAobywgdmVjMygwLjE1KSwgdmVjMygxLjApKSwgMS4wKTt9XG4gIHZlYzQgdHhMKHNhbXBsZXIyRCB0ZXgsIHZlYzIgeHRDKXtpZigoKHh0Qy54IDwgMC4pIHx8ICh4dEMueSA8IDAuKSkgfHwgKCh4dEMueCA+IDEuKSB8fCAoeHRDLnkgPiAxLikpKXtyZXR1cm4gdmVjNCgwLjApO31lbHNle3JldHVybiB0ZXh0dXJlKHRleCwgeHRDKTsgfX1cbiAgdmVjNCB0eEQoc2FtcGxlcjJEIHRleCwgdmVjMiB4dEMsIHZlYzIgZGlyLCB2ZWMzIGRpdG4pIHtyZXR1cm4gdmVjNCh0eEwodGV4LCAoeHRDICsgKGRpciAqIGRpdG4ucikpKS5yLHR4TCh0ZXgsICh4dEMgKyAoZGlyICogZGl0bi5nKSkpLmcsdHhMKHRleCwgKHh0QyArIChkaXIgKiBkaXRuLmIpKSkuYiwxLjApO31cbiAgdmVjNCBzdHJCKCl7dmVjMiBhc3BYdGMgPSB2ZWMyKDEuMCkgLSAoKCh2eHRDIC0gdmVjMigwLjUpKSAqIHZlYzIoMS4wKSkgKyB2ZWMyKDAuNSkpOyB2ZWMyIHh0QyA9IHZlYzIoMS4wKSAtIHZ4dEM7IHZlYzIgZ2h2YyA9ICh2ZWMyKDAuNSkgLSB4dEMpICogMC4zIC0gbGVuc1Bvc2l0aW9uOyB2ZWMyIGdoTm0gPSBub3JtYWxpemUoZ2h2YyAqIHZlYzIoMS4wKSkgKiB2ZWMyKDEuMCk7dmVjMiBoYWxvVmVjID0gbm9ybWFsaXplKGdodmMpICogMC42O3ZlYzIgaGxObSA9IGdoTm0gKiAwLjY7dmVjMiB0ZXhlbFNpemUgPSB2ZWMyKDEuMCkgLyB2ZWMyKGlSZXNvbHV0aW9uLnh5KTt2ZWMzIGRpdG4gPSB2ZWMzKC0odGV4ZWxTaXplLnggKiAxLjUpLCAwLjIsIHRleGVsU2l6ZS54ICogMS41KTt2ZWM0IGMgPSB2ZWM0KDAuMCk7Zm9yIChpbnQgaSA9IDA7IGkgPCA4OyBpKyspIHt2ZWMyIG9mZnNldCA9IHh0QyArIChnaHZjICogZmxvYXQoaSkpO2MgKz0gdHhEKGxlbnNEaXJ0VGV4dHVyZSwgb2Zmc2V0LCBnaE5tLCBkaXRuKSAqIHBvdyhtYXgoMC4wLCAxLjAgLSAobGVuZ3RoKHZlYzIoMC41KSAtIG9mZnNldCkgLyBsZW5ndGgodmVjMigwLjUpKSkpLCAxMC4wKTt9dmVjMiB1eVRyeiA9IHh0QyArIGhsTm07IHJldHVybiAoYyAqIGdlTEMoKGxlbmd0aCh2ZWMyKDAuNSkgLSBhc3BYdGMpIC8gbGVuZ3RoKHZlYzIoaGFsb1NjYWxlKSkpKSkgKyh0eEQobGVuc0RpcnRUZXh0dXJlLCB1eVRyeiwgZ2hObSwgZGl0bikgKiBwb3cobWF4KDAuMCwgMS4wIC0gKGxlbmd0aCh2ZWMyKDAuNSkgLSB1eVRyeikgLyBsZW5ndGgodmVjMigwLjUpKSkpLCAxMC4wKSk7fVxuICB2b2lkIG1haW5JbWFnZSh2ZWM0IHYsdmVjMiByLG91dCB2ZWM0IGkpe3ZlYzIgZz1yLS41O2cueSo9aVJlc29sdXRpb24ueS9pUmVzb2x1dGlvbi54O3ZlYzIgbD1sZW5zUG9zaXRpb24qLjU7bC55Kj1pUmVzb2x1dGlvbi55L2lSZXNvbHV0aW9uLng7dmVjMyBmPW1McyhnLGwpKjIwLipjb2xvckdhaW4vMjU2LjtpZihhZGl0aW9uYWxTdHJlYWtzKXt2ZWMzIG89dmVjMyguOSwuMiwuMSkscD12ZWMzKC4zLC4xLC45KTtmb3IoZmxvYXQgbj0wLjtuPDEwLjtuKyspZis9ZHJDKGcscG93KHJuZChuKjJlMykqMi44LC4xKSsxLjQxLDAuLG8rbixwK24scm5kKG4qMjAuKSozLisuMi0uNSxsZW5zUG9zaXRpb24pO31pZihzZWNvbmRhcnlHaG9zdHMpe3ZlYzMgbj12ZWMzKDApO24rPXJIeChnLC1sZW5zUG9zaXRpb24qLjI1LGdob3N0U2NhbGUqMS40LHZlYzMoLjI1LC4zNSwwKSk7bis9ckh4KGcsbGVuc1Bvc2l0aW9uKi4yNSxnaG9zdFNjYWxlKi41LHZlYzMoMSwuNSwuNSkpO24rPXJIeChnLGxlbnNQb3NpdGlvbiouMSxnaG9zdFNjYWxlKjEuNix2ZWMzKDEpKTtuKz1ySHgoZyxsZW5zUG9zaXRpb24qMS44LGdob3N0U2NhbGUqMi4sdmVjMygwLC41LC43NSkpO24rPXJIeChnLGxlbnNQb3NpdGlvbioxLjI1LGdob3N0U2NhbGUqLjgsdmVjMygxLDEsLjUpKTtuKz1ySHgoZywtbGVuc1Bvc2l0aW9uKjEuMjUsZ2hvc3RTY2FsZSo1Lix2ZWMzKC41LC41LC4yNSkpO24rPWZwb3coMS4tYWJzKGRpc3RhbmNlKGxlbnNQb3NpdGlvbiouOCxnKS0uNyksLjk4NSkqY29sb3JHYWluLzIxMDAuO2YrPW47fWlmKHN0YXJCdXJzdCl7dnh0Qz1nKy41O3ZlYzQgbj1nZUxEKGcpO2Zsb2F0IG89MS4tY2xhbXAoMC41LDAuLC41KSoyLjtuKz1taXgobixwb3cobioyLix2ZWM0KDIpKSouNSxvKTtmbG9hdCBzPShnLngrZy55KSooMS4vNi4pO3ZlYzIgZD1tYXQyKGNvcyhzKSwtc2luKHMpLHNpbihzKSxjb3MocykpKnZ4dEM7bis9Z2VMUyhkKSoyLjtmKz1jbGFtcChuLnh5eipzdHJCKCkueHl6LC4wMSwxLik7fWk9ZW5hYmxlZD92ZWM0KG1peChmLHZlYzMoMCksb3BhY2l0eSkrdi54eXosdi53KTp2ZWM0KHYpO31cbmAsXG59O1xuXG5leHBvcnQgY2xhc3MgTGVuc0ZsYXJlRWZmZWN0IGV4dGVuZHMgRWZmZWN0IHtcblx0Y29uc3RydWN0b3Ioe1xuXHRcdGJsZW5kRnVuY3Rpb24gPSBCbGVuZEZ1bmN0aW9uLk5PUk1BTCxcblx0XHRlbmFibGVkID0gdHJ1ZSxcblx0XHRnbGFyZVNpemUgPSAwLjIsXG5cdFx0bGVuc1Bvc2l0aW9uID0gWzAuMDEsIDAuMDFdLFxuXHRcdGlSZXNvbHV0aW9uID0gWzAsIDBdLFxuXHRcdHN0YXJQb2ludHMgPSA2LFxuXHRcdGZsYXJlU2l6ZSA9IDAuMDEsXG5cdFx0ZmxhcmVTcGVlZCA9IDAuMDEsXG5cdFx0ZmxhcmVTaGFwZSA9IDAuMDEsXG5cdFx0YW5pbWF0ZWQgPSB0cnVlLFxuXHRcdGFuYW1vcnBoaWMgPSBmYWxzZSxcblx0XHRjb2xvckdhaW4gPSBuZXcgQ29sb3IoMjAsIDIwLCAyMCksXG5cdFx0bGVuc0RpcnRUZXh0dXJlID0gbnVsbCBhcyBUZXh0dXJlIHwgbnVsbCxcblx0XHRoYWxvU2NhbGUgPSAwLjUsXG5cdFx0c2Vjb25kYXJ5R2hvc3RzID0gdHJ1ZSxcblx0XHRhZGl0aW9uYWxTdHJlYWtzID0gdHJ1ZSxcblx0XHRnaG9zdFNjYWxlID0gMC4wLFxuXHRcdG9wYWNpdHkgPSAxLjAsXG5cdFx0c3RhckJ1cnN0ID0gZmFsc2UsXG5cdH0gPSB7fSkge1xuXHRcdHN1cGVyKCdMZW5zRmxhcmVFZmZlY3QnLCBMZW5zRmxhcmVTaGFkZXIuZnJhZ21lbnRTaGFkZXIsIHtcblx0XHRcdGJsZW5kRnVuY3Rpb24sXG5cdFx0XHR1bmlmb3JtczogbmV3IE1hcDxzdHJpbmcsIFVuaWZvcm0+KFtcblx0XHRcdFx0WydlbmFibGVkJywgbmV3IFVuaWZvcm0oZW5hYmxlZCldLFxuXHRcdFx0XHRbJ2dsYXJlU2l6ZScsIG5ldyBVbmlmb3JtKGdsYXJlU2l6ZSldLFxuXHRcdFx0XHRbJ2xlbnNQb3NpdGlvbicsIG5ldyBVbmlmb3JtKGxlbnNQb3NpdGlvbildLFxuXHRcdFx0XHRbJ2lUaW1lJywgbmV3IFVuaWZvcm0oMCldLFxuXHRcdFx0XHRbJ2lSZXNvbHV0aW9uJywgbmV3IFVuaWZvcm0oaVJlc29sdXRpb24pXSxcblx0XHRcdFx0WydzdGFyUG9pbnRzJywgbmV3IFVuaWZvcm0oc3RhclBvaW50cyldLFxuXHRcdFx0XHRbJ2ZsYXJlU2l6ZScsIG5ldyBVbmlmb3JtKGZsYXJlU2l6ZSldLFxuXHRcdFx0XHRbJ2ZsYXJlU3BlZWQnLCBuZXcgVW5pZm9ybShmbGFyZVNwZWVkKV0sXG5cdFx0XHRcdFsnZmxhcmVTaGFwZScsIG5ldyBVbmlmb3JtKGZsYXJlU2hhcGUpXSxcblx0XHRcdFx0WydhbmltYXRlZCcsIG5ldyBVbmlmb3JtKGFuaW1hdGVkKV0sXG5cdFx0XHRcdFsnYW5hbW9ycGhpYycsIG5ldyBVbmlmb3JtKGFuYW1vcnBoaWMpXSxcblx0XHRcdFx0Wydjb2xvckdhaW4nLCBuZXcgVW5pZm9ybShjb2xvckdhaW4pXSxcblx0XHRcdFx0WydsZW5zRGlydFRleHR1cmUnLCBuZXcgVW5pZm9ybShsZW5zRGlydFRleHR1cmUpXSxcblx0XHRcdFx0WydoYWxvU2NhbGUnLCBuZXcgVW5pZm9ybShoYWxvU2NhbGUpXSxcblx0XHRcdFx0WydzZWNvbmRhcnlHaG9zdHMnLCBuZXcgVW5pZm9ybShzZWNvbmRhcnlHaG9zdHMpXSxcblx0XHRcdFx0WydhZGl0aW9uYWxTdHJlYWtzJywgbmV3IFVuaWZvcm0oYWRpdGlvbmFsU3RyZWFrcyldLFxuXHRcdFx0XHRbJ2dob3N0U2NhbGUnLCBuZXcgVW5pZm9ybShnaG9zdFNjYWxlKV0sXG5cdFx0XHRcdFsnc3RhckJ1cnN0JywgbmV3IFVuaWZvcm0oc3RhckJ1cnN0KV0sXG5cdFx0XHRcdFsnb3BhY2l0eScsIG5ldyBVbmlmb3JtKG9wYWNpdHkpXSxcblx0XHRcdF0pLFxuXHRcdH0pO1xuXHR9XG5cblx0b3ZlcnJpZGUgdXBkYXRlKF9yZW5kZXJlcjogYW55LCBfaW5wdXRCdWZmZXI6IGFueSwgZGVsdGFUaW1lOiBudW1iZXIpIHtcblx0XHRjb25zdCBpVGltZSA9IHRoaXMudW5pZm9ybXMuZ2V0KCdpVGltZScpO1xuXHRcdGlmIChpVGltZSkge1xuXHRcdFx0aVRpbWUudmFsdWUgKz0gZGVsdGFUaW1lO1xuXHRcdH1cblx0fVxufVxuXG5leHBvcnQgdHlwZSBMZW5zRmxhcmVPcHRpb25zID0gQ29uc3RydWN0b3JQYXJhbWV0ZXJzPHR5cGVvZiBMZW5zRmxhcmVFZmZlY3Q+WzBdICYge1xuXHRwb3NpdGlvbjogVmVjdG9yMztcblx0Zm9sbG93TW91c2U6IGJvb2xlYW47XG5cdHNtb290aFRpbWU6IG51bWJlcjtcbn07XG5cbmNvbnN0IGRlZmF1bHRPcHRpb25zOiBMZW5zRmxhcmVPcHRpb25zID0ge1xuXHRwb3NpdGlvbjogbmV3IFZlY3RvcjMoLTI1LCA2LCAtNjApLFxuXHRmb2xsb3dNb3VzZTogZmFsc2UsXG5cdHNtb290aFRpbWU6IDAuNyxcbn07XG5cbkBDb21wb25lbnQoe1xuXHRzZWxlY3RvcjogJ25ndHAtbGVucy1mbGFyZScsXG5cdHN0YW5kYWxvbmU6IHRydWUsXG5cdHRlbXBsYXRlOiBgXG5cdFx0PG5ndC1wcmltaXRpdmUgKmFyZ3M9XCJbZWZmZWN0KCldXCIgW2Rpc3Bvc2VdPVwibnVsbFwiIC8+XG5cdGAsXG5cdGltcG9ydHM6IFtOZ3RBcmdzXSxcblx0c2NoZW1hczogW0NVU1RPTV9FTEVNRU5UU19TQ0hFTUFdLFxuXHRjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbn0pXG5leHBvcnQgY2xhc3MgTmd0cExlbnNGbGFyZSB7XG5cdHByaXZhdGUgYXV0b0VmZmVjdCA9IGluamVjdEF1dG9FZmZlY3QoKTtcblx0cHJpdmF0ZSBzdG9yZSA9IGluamVjdFN0b3JlKCk7XG5cdHByaXZhdGUgdmlld3BvcnQgPSB0aGlzLnN0b3JlLnNlbGVjdCgndmlld3BvcnQnKTtcblx0cHJpdmF0ZSByYXljYXN0ZXIgPSB0aGlzLnN0b3JlLnNlbGVjdCgncmF5Y2FzdGVyJyk7XG5cdHByaXZhdGUgcG9pbnRlciA9IHRoaXMuc3RvcmUuc2VsZWN0KCdwb2ludGVyJyk7XG5cblx0ZWZmZWN0Q29tcG9zZXIgPSBpbmplY3QoTmd0cEVmZmVjdENvbXBvc2VyKTtcblxuXHRvcHRpb25zID0gaW5wdXQoZGVmYXVsdE9wdGlvbnMsIHsgdHJhbnNmb3JtOiBtZXJnZUlucHV0cyhkZWZhdWx0T3B0aW9ucykgfSk7XG5cblx0cHJpdmF0ZSBwcm9qZWN0ZWRQb3NpdGlvbiA9IG5ldyBWZWN0b3IzKCk7XG5cdHByaXZhdGUgbW91c2UyZCA9IG5ldyBWZWN0b3IyKCk7XG5cblx0ZWZmZWN0ID0gY29tcHV0ZWQoKCkgPT4ge1xuXHRcdGNvbnN0IHsgcG9zaXRpb246IF8sIGZvbGxvd01vdXNlOiBfXywgc21vb3RoVGltZTogX19fLCAuLi5vcHRpb25zIH0gPSB0aGlzLm9wdGlvbnMoKTtcblx0XHRyZXR1cm4gbmV3IExlbnNGbGFyZUVmZmVjdChvcHRpb25zKTtcblx0fSk7XG5cblx0Y29uc3RydWN0b3IoKSB7XG5cdFx0YWZ0ZXJOZXh0UmVuZGVyKCgpID0+IHtcblx0XHRcdHRoaXMuYXV0b0VmZmVjdCgoKSA9PiB7XG5cdFx0XHRcdGNvbnN0IFtlZmZlY3QsIHZpZXdwb3J0XSA9IFt0aGlzLmVmZmVjdCgpLCB0aGlzLnZpZXdwb3J0KCldO1xuXHRcdFx0XHRjb25zdCBpUmVzb2x1dGlvbiA9IGVmZmVjdC51bmlmb3Jtcy5nZXQoJ2lSZXNvbHV0aW9uJyk7XG5cdFx0XHRcdGlmIChpUmVzb2x1dGlvbikge1xuXHRcdFx0XHRcdGlSZXNvbHV0aW9uLnZhbHVlLnggPSB2aWV3cG9ydC53aWR0aDtcblx0XHRcdFx0XHRpUmVzb2x1dGlvbi52YWx1ZS55ID0gdmlld3BvcnQuaGVpZ2h0O1xuXHRcdFx0XHR9XG5cdFx0XHR9KTtcblx0XHR9KTtcblxuXHRcdGluamVjdEJlZm9yZVJlbmRlcigoeyBkZWx0YSB9KSA9PiB7XG5cdFx0XHRjb25zdCBbZWZmZWN0XSA9IFt0aGlzLmVmZmVjdCgpXTtcblx0XHRcdGlmICghZWZmZWN0KSByZXR1cm47XG5cblx0XHRcdGNvbnN0IFt7IGZvbGxvd01vdXNlLCBwb3NpdGlvbiwgc21vb3RoVGltZSB9LCBwb2ludGVyLCBjYW1lcmEsIHNjZW5lLCByYXljYXN0ZXJdID0gW1xuXHRcdFx0XHR0aGlzLm9wdGlvbnMoKSxcblx0XHRcdFx0dGhpcy5wb2ludGVyKCksXG5cdFx0XHRcdHRoaXMuZWZmZWN0Q29tcG9zZXIuY2FtZXJhKCksXG5cdFx0XHRcdHRoaXMuZWZmZWN0Q29tcG9zZXIuc2NlbmUoKSxcblx0XHRcdFx0dGhpcy5yYXljYXN0ZXIoKSxcblx0XHRcdF07XG5cblx0XHRcdGNvbnN0IHVMZW5zUG9zaXRpb24gPSBlZmZlY3QudW5pZm9ybXMuZ2V0KCdsZW5zUG9zaXRpb24nKTtcblx0XHRcdGNvbnN0IHVPcGFjaXR5ID0gZWZmZWN0LnVuaWZvcm1zLmdldCgnb3BhY2l0eScpO1xuXHRcdFx0aWYgKCF1TGVuc1Bvc2l0aW9uIHx8ICF1T3BhY2l0eSkgcmV0dXJuO1xuXG5cdFx0XHRsZXQgdGFyZ2V0ID0gMTtcblxuXHRcdFx0aWYgKGZvbGxvd01vdXNlKSB7XG5cdFx0XHRcdHVMZW5zUG9zaXRpb24udmFsdWUueCA9IHBvaW50ZXIueDtcblx0XHRcdFx0dUxlbnNQb3NpdGlvbi52YWx1ZS55ID0gcG9pbnRlci55O1xuXHRcdFx0XHR0YXJnZXQgPSAwO1xuXHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0dGhpcy5wcm9qZWN0ZWRQb3NpdGlvbi5jb3B5KHBvc2l0aW9uKS5wcm9qZWN0KGNhbWVyYSk7XG5cdFx0XHRcdGlmICh0aGlzLnByb2plY3RlZFBvc2l0aW9uLnogPiAxKSByZXR1cm47XG5cblx0XHRcdFx0dUxlbnNQb3NpdGlvbi52YWx1ZS54ID0gdGhpcy5wcm9qZWN0ZWRQb3NpdGlvbi54O1xuXHRcdFx0XHR1TGVuc1Bvc2l0aW9uLnZhbHVlLnkgPSB0aGlzLnByb2plY3RlZFBvc2l0aW9uLnk7XG5cblx0XHRcdFx0dGhpcy5tb3VzZTJkLnNldCh0aGlzLnByb2plY3RlZFBvc2l0aW9uLngsIHRoaXMucHJvamVjdGVkUG9zaXRpb24ueSk7XG5cdFx0XHRcdHJheWNhc3Rlci5zZXRGcm9tQ2FtZXJhKHRoaXMubW91c2UyZCwgY2FtZXJhKTtcblx0XHRcdFx0Y29uc3QgaW50ZXJzZWN0cyA9IHJheWNhc3Rlci5pbnRlcnNlY3RPYmplY3RzKHNjZW5lLmNoaWxkcmVuLCB0cnVlKTtcblx0XHRcdFx0Y29uc3QgeyBvYmplY3QgfSA9IGludGVyc2VjdHNbMF0gPz8ge307XG5cdFx0XHRcdGlmIChvYmplY3QpIHtcblx0XHRcdFx0XHRpZiAob2JqZWN0LnVzZXJEYXRhPy5bJ2xlbnNmbGFyZSddID09PSAnbm8tb2NjbHVzaW9uJykge1xuXHRcdFx0XHRcdFx0dGFyZ2V0ID0gMDtcblx0XHRcdFx0XHR9IGVsc2UgaWYgKG9iamVjdCBpbnN0YW5jZW9mIE1lc2gpIHtcblx0XHRcdFx0XHRcdGlmIChvYmplY3QubWF0ZXJpYWwudW5pZm9ybXM/Ll90cmFuc21pc3Npb24/LnZhbHVlID4gMC4yKSB7XG5cdFx0XHRcdFx0XHRcdC8vQ2hlY2sgZm9yIE1lc2hUcmFuc21pc3Npb25NYXRlcmlhbFxuXHRcdFx0XHRcdFx0XHR0YXJnZXQgPSAwLjI7XG5cdFx0XHRcdFx0XHR9IGVsc2UgaWYgKG9iamVjdC5tYXRlcmlhbC5fdHJhbnNtaXNzaW9uICYmIG9iamVjdC5tYXRlcmlhbC5fdHJhbnNtaXNzaW9uID4gMC4yKSB7XG5cdFx0XHRcdFx0XHRcdC8vQ2hlY2sgZm9yIE1lc2hQaHlzaWNhbE1hdGVyaWFsIHdpdGggdHJhbnNtaXNzaW9uIHNldHRpbmdcblx0XHRcdFx0XHRcdFx0dGFyZ2V0ID0gMC4yO1xuXHRcdFx0XHRcdFx0fSBlbHNlIGlmIChvYmplY3QubWF0ZXJpYWwudHJhbnNwYXJlbnQpIHtcblx0XHRcdFx0XHRcdFx0Ly8gQ2hlY2sgZm9yIE90aGVyTWF0ZXJpYWxzIHdpdGggdHJhbnNwYXJlbnQgcGFyYW1ldGVyXG5cdFx0XHRcdFx0XHRcdHRhcmdldCA9IG9iamVjdC5tYXRlcmlhbC5vcGFjaXR5O1xuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXHRcdFx0fVxuXG5cdFx0XHRlYXNpbmcuZGFtcCh1T3BhY2l0eSwgJ3ZhbHVlJywgdGFyZ2V0LCBzbW9vdGhUaW1lLCBkZWx0YSk7XG5cdFx0fSk7XG5cdH1cbn1cbiJdfQ==
195
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGVucy1mbGFyZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvcG9zdHByb2Nlc3Npbmcvc3JjL2xpYi9lZmZlY3RzL2xlbnMtZmxhcmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsbUNBQW1DO0FBQ25DLHVDQUF1QztBQUV2QyxPQUFPLEVBQ04sc0JBQXNCLEVBQ3RCLHVCQUF1QixFQUN2QixTQUFTLEVBQ1QsZUFBZSxFQUNmLFFBQVEsRUFDUixNQUFNLEVBQ04sS0FBSyxHQUNMLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsV0FBVyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3pFLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxPQUFPLENBQUM7QUFDL0IsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDMUQsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQ3ZELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDdkQsT0FBTyxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQVcsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQW9DLE1BQU0sT0FBTyxDQUFDO0FBQzFHLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLG9CQUFvQixDQUFDOztBQUV4RCxNQUFNLGVBQWUsR0FBRztJQUN2QixjQUFjLEVBQUUsd0JBQXdCLENBQUM7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0NBNEN6QztDQUNBLENBQUM7QUFFRixNQUFNLE9BQU8sZUFBZ0IsU0FBUSxNQUFNO0lBQzFDLFlBQVksRUFDWCxhQUFhLEdBQUcsYUFBYSxDQUFDLE1BQU0sRUFDcEMsT0FBTyxHQUFHLElBQUksRUFDZCxTQUFTLEdBQUcsR0FBRyxFQUNmLFlBQVksR0FBRyxD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Q0FBQztvQkFDWixDQUFDO3lCQUFNLElBQUksTUFBTSxZQUFZLElBQUksRUFBRSxDQUFDO3dCQUNuQyxJQUFJLE1BQU0sQ0FBQyxRQUFRLENBQUMsUUFBUSxFQUFFLGFBQWEsRUFBRSxLQUFLLEdBQUcsR0FBRyxFQUFFLENBQUM7NEJBQzFELG9DQUFvQzs0QkFDcEMsTUFBTSxHQUFHLEdBQUcsQ0FBQzt3QkFDZCxDQUFDOzZCQUFNLElBQUksTUFBTSxDQUFDLFFBQVEsQ0FBQyxhQUFhLElBQUksTUFBTSxDQUFDLFFBQVEsQ0FBQyxhQUFhLEdBQUcsR0FBRyxFQUFFLENBQUM7NEJBQ2pGLDBEQUEwRDs0QkFDMUQsTUFBTSxHQUFHLEdBQUcsQ0FBQzt3QkFDZCxDQUFDOzZCQUFNLElBQUksTUFBTSxDQUFDLFFBQVEsQ0FBQyxXQUFXLEVBQUUsQ0FBQzs0QkFDeEMsc0RBQXNEOzRCQUN0RCxNQUFNLEdBQUcsTUFBTSxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUM7d0JBQ2xDLENBQUM7b0JBQ0YsQ0FBQztnQkFDRixDQUFDO1lBQ0YsQ0FBQztZQUVELE1BQU0sQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFLE9BQU8sRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLEtBQUssQ0FBQyxDQUFDO1FBQzNELENBQUMsQ0FBQyxDQUFDO0lBQ0osQ0FBQzs4R0FwRlcsYUFBYTtrR0FBYixhQUFhLHFOQVBmOztFQUVULDREQUNTLE9BQU87OzJGQUlMLGFBQWE7a0JBVnpCLFNBQVM7bUJBQUM7b0JBQ1YsUUFBUSxFQUFFLGlCQUFpQjtvQkFDM0IsVUFBVSxFQUFFLElBQUk7b0JBQ2hCLFFBQVEsRUFBRTs7RUFFVDtvQkFDRCxPQUFPLEVBQUUsQ0FBQyxPQUFPLENBQUM7b0JBQ2xCLE9BQU8sRUFBRSxDQUFDLHNCQUFzQixDQUFDO29CQUNqQyxlQUFlLEVBQUUsdUJBQXVCLENBQUMsTUFBTTtpQkFDL0MiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBDcmVhdGVkIGJ5IEFuZGVyc29uIE1hbmNpbmkgMjAyM1xuLy8gUmVhY3QgVGhyZWUgRmliZXIgVWx0aW1hdGUgTGVuc0ZsYXJlXG5cbmltcG9ydCB7XG5cdENVU1RPTV9FTEVNRU5UU19TQ0hFTUEsXG5cdENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuXHRDb21wb25lbnQsXG5cdGFmdGVyTmV4dFJlbmRlcixcblx0Y29tcHV0ZWQsXG5cdGluamVjdCxcblx0aW5wdXQsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgTmd0QXJncywgaW5qZWN0QmVmb3JlUmVuZGVyLCBpbmplY3RTdG9yZSB9IGZyb20gJ2FuZ3VsYXItdGhyZWUnO1xuaW1wb3J0IHsgZWFzaW5nIH0gZnJvbSAnbWFhdGgnO1xuaW1wb3J0IHsgaW5qZWN0QXV0b0VmZmVjdCB9IGZyb20gJ25neHRlbnNpb24vYXV0by1lZmZlY3QnO1xuaW1wb3J0IHsgbWVyZ2VJbnB1dHMgfSBmcm9tICduZ3h0ZW5zaW9uL2luamVjdC1pbnB1dHMnO1xuaW1wb3J0IHsgQmxlbmRGdW5jdGlvbiwgRWZmZWN0IH0gZnJvbSAncG9zdHByb2Nlc3NpbmcnO1xuaW1wb3J0IHsgQ29sb3IsIE1lc2gsIFRleHR1cmUsIFVuaWZvcm0sIFZlY3RvcjIsIFZlY3RvcjMsIFdlYkdMUmVuZGVyVGFyZ2V0LCBXZWJHTFJlbmRlcmVyIH0gZnJvbSAndGhyZWUnO1xuaW1wb3J0IHsgTmd0cEVmZmVjdENvbXBvc2VyIH0gZnJvbSAnLi4vZWZmZWN0LWNvbXBvc2VyJztcblxuY29uc3QgTGVuc0ZsYXJlU2hhZGVyID0ge1xuXHRmcmFnbWVudFNoYWRlcjogLyogbGFuZ3VhZ2U9Z2xzbCBnbHNsICovIGBcblxuICB1bmlmb3JtIGZsb2F0IGlUaW1lO1xuICB1bmlmb3JtIHZlYzIgbGVuc1Bvc2l0aW9uO1xuICB1bmlmb3JtIHZlYzIgaVJlc29sdXRpb247XG4gIHVuaWZvcm0gdmVjMyBjb2xvckdhaW47XG4gIHVuaWZvcm0gZmxvYXQgc3RhclBvaW50cztcbiAgdW5pZm9ybSBmbG9hdCBnbGFyZVNpemU7XG4gIHVuaWZvcm0gZmxvYXQgZmxhcmVTaXplO1xuICB1bmlmb3JtIGZsb2F0IGZsYXJlU3BlZWQ7XG4gIHVuaWZvcm0gZmxvYXQgZmxhcmVTaGFwZTtcbiAgdW5pZm9ybSBmbG9hdCBoYWxvU2NhbGU7XG4gIHVuaWZvcm0gZmxvYXQgb3BhY2l0eTtcbiAgdW5pZm9ybSBib29sIGFuaW1hdGVkO1xuICB1bmlmb3JtIGJvb2wgYW5hbW9ycGhpYztcbiAgdW5pZm9ybSBib29sIGVuYWJsZWQ7XG4gIHVuaWZvcm0gYm9vbCBzZWNvbmRhcnlHaG9zdHM7XG4gIHVuaWZvcm0gYm9vbCBzdGFyQnVyc3Q7XG4gIHVuaWZvcm0gZmxvYXQgZ2hvc3RTY2FsZTtcbiAgdW5pZm9ybSBib29sIGFkaXRpb25hbFN0cmVha3M7XG4gIHVuaWZvcm0gc2FtcGxlcjJEIGxlbnNEaXJ0VGV4dHVyZTtcbiAgdmVjMiB2eHRDO1xuXG4gIGZsb2F0IHJuZGYoZmxvYXQgbil7cmV0dXJuIGZyYWN0KHNpbihuKSAqIDQzNzU4LjU0NTMxMjMpO31mbG9hdCBuaXooZmxvYXQgcCl7ZmxvYXQgZmwgPSBmbG9vcihwKTtmbG9hdCBmYyA9IGZyYWN0KHApO3JldHVybiBtaXgocm5kZihmbCkscm5kZihmbCArIDEuMCksIGZjKTt9XG4gIHZlYzMgaHN2MnJnYih2ZWMzIGMpe3ZlYzQgayA9IHZlYzQoMS4wLCAyLjAgLyAzLjAsIDEuMCAvIDMuMCwgMy4wKTt2ZWMzIHAgPSBhYnMoZnJhY3QoYy54eHggKyBrLnh5eikgKiA2LjAgLSBrLnd3dyk7cmV0dXJuIGMueiAqIG1peChrLnh4eCwgY2xhbXAocCAtIGsueHh4LCAwLjAsIDEuMCksIGMueSk7fVxuICBmbG9hdCBzYXRVKGZsb2F0IHgpe3JldHVybiBjbGFtcCh4LCAwLiwxLik7fXZlYzIgcnRVKHZlYzIgbmF6LCBmbG9hdCBydG4pe3JldHVybiB2ZWMyKGNvcyhydG4pICogbmF6LnggKyBzaW4ocnRuKSAqIG5hei55LGNvcyhydG4pICogbmF6LnkgLSBzaW4ocnRuKSAqIG5hei54KTt9XG4gIHZlYzMgZHJ3Rih2ZWMyIHAsIGZsb2F0IGludGVuc2l0eSwgZmxvYXQgcm5kLCBmbG9hdCBzcGVlZCwgaW50IGlkKXtmbG9hdCBmbGhvcyA9ICgxLiAvIDMyLikgKiBmbG9hdChpZCkgKiAwLjE7ZmxvYXQgbGluZ3JhZCA9IGRpc3RhbmNlKHZlYzIoMC4pLCBwKTtmbG9hdCBleHBnID0gMS4gLyBleHAobGluZ3JhZCAqIChmcmFjdChybmQpICogMC42NiArIDAuMzMpKTt2ZWMzIHF6VGcgPSBoc3YycmdiKHZlYzMoIGZyYWN0KCAoZXhwZyAqIDguKSArIHNwZWVkICogZmxhcmVTcGVlZCArIGZsaG9zKSwgcG93KDEuLWFicyhleHBnKjIuLTEuKSwgMC40NSksIDIwLjAgKiBleHBnICogaW50ZW5zaXR5KSk7ZmxvYXQgaW50ZXJuYWxTdGFyUG9pbnRzO2lmKGFuYW1vcnBoaWMpe2ludGVybmFsU3RhclBvaW50cyA9IDEuMDt9IGVsc2V7aW50ZXJuYWxTdGFyUG9pbnRzID0gc3RhclBvaW50czt9ZmxvYXQgYW1zID0gbGVuZ3RoKHAgKiBmbGFyZVNoYXBlICogc2luKGludGVybmFsU3RhclBvaW50cyAqIGF0YW4ocC54LCBwLnkpKSk7ZmxvYXQga0poZyA9IHBvdygxLi1zYXRVKGFtcyksICggYW5hbW9ycGhpYyA/IDEwMC4gOiAxMi4pKTtrSmhnICs9IHNhdFUoZXhwZy0wLjkpICogMy47a0poZyA9IHBvdyhrSmhnICogZXhwZywgOC4gKyAoMS4taW50ZW5zaXR5KSAqIDUuKTtpZihmbGFyZVNwZWVkID4gMC4wKXtyZXR1cm4gdmVjMyhrSmhnKSAqIHF6VGc7fSBlbHNle3JldHVybiB2ZWMzKGtKaGcpICogZmxhcmVTaXplICogMTUuO319XG4gIGZsb2F0IGFtczIodmVjMyBhLCB2ZWMzIGIpIHsgcmV0dXJuIGFicyhhLnggLSBiLngpICsgYWJzKGEueSAtIGIueSkgKyBhYnMoYS56IC0gYi56KTt9dmVjMyBzYXRVKHZlYzMgeCl7cmV0dXJuIGNsYW1wKHgsIHZlYzMoMC4wKSwgdmVjMygxLjApKTt9XG4gIGZsb2F0IGdsUih2ZWMyIG5heiwgdmVjMiBwb3MsIGZsb2F0IHpzaSl7dmVjMiBtbmk7aWYoYW5pbWF0ZWQpe21uaSA9IHJ0VShuYXotcG9zLCBpVGltZSAqIDAuMSk7fSBlbHNle21uaSA9IG5hei1wb3M7fWZsb2F0IGFuZyA9IGF0YW4obW5pLnksIG1uaS54KSAqIChhbmFtb3JwaGljID8gMS4wIDogc3RhclBvaW50cyk7ZmxvYXQgYW1zMiA9IGxlbmd0aChtbmkpO2FtczIgPSBwb3coYW1zMiwgLjkpO2Zsb2F0IGYwID0gMS4wLyhsZW5ndGgobmF6LXBvcykqKDEuMC96c2kqMTYuMCkrLjIpO3JldHVybiBmMCtmMCooc2luKChhbmcpKSouMiArLjMpO31cbiAgZmxvYXQgc2RIZXgodmVjMiBwKXtwID0gYWJzKHApO3ZlYzIgcSA9IHZlYzIocC54KjIuMCowLjU3NzM1MDMsIHAueSArIHAueCowLjU3NzM1MDMpO3JldHVybiBkb3Qoc3RlcChxLnh5LHEueXgpLCAxLjAtcS55eCk7fWZsb2F0IGZwb3coZmxvYXQgeCwgZmxvYXQgayl7cmV0dXJuIHggPiBrID8gcG93KCh4LWspLygxLjAtayksMi4wKSA6IDAuMDt9XG4gIHZlYzMgckh4KHZlYzIgbmF6LCB2ZWMyIHAsIGZsb2F0IHMsIHZlYzMgY29sKXtuYXogLT0gcDtpZiAoYWJzKG5hei54KSA8IDAuMipzICYmIGFicyhuYXoueSkgPCAwLjIqcyl7cmV0dXJuIG1peCh2ZWMzKDApLG1peCh2ZWMzKDApLGNvbCwwLjEgKyBmcG93KGxlbmd0aChuYXovcyksMC4xKSoxMC4wKSxzbW9vdGhzdGVwKDAuMCwwLjEsc2RIZXgobmF6KjIwLjAvcykpKTt9cmV0dXJuIHZlYzMoMCk7fVxuICB2ZWMzIG1Mcyh2ZWMyIG5heiwgdmVjMiBwb3Mpe3ZlYzIgbW5pID0gbmF6LXBvczt2ZWMyIHp4TXAgPSBuYXoqKGxlbmd0aChuYXopKTtmbG9hdCBhbmcgPSBhdGFuKG1uaS54LG1uaS55KTtmbG9hdCBmMCA9IC4zLyhsZW5ndGgobmF6LXBvcykqMTYuMCsxLjApO2YwID0gZjAqKHNpbihuaXooc2luKGFuZyozLjktKGFuaW1hdGVkID8gaVRpbWUgOiAwLjApICogMC4zKSAqIHN0YXJQb2ludHMpKSouMiApO2Zsb2F0IGYxID0gbWF4KDAuMDEtcG93KGxlbmd0aChuYXorMS4yKnBvcyksMS45KSwuMCkqNy4wO2Zsb2F0IGYyID0gbWF4KC45LygxMC4wKzMyLjAqcG93KGxlbmd0aCh6eE1wKzAuOTkqcG9zKSwyLjApKSwuMCkqMC4zNTtmbG9hdCBmMjIgPSBtYXgoLjkvKDExLjArMzIuMCpwb3cobGVuZ3RoKHp4TXArMC44NSpwb3MpLDIuMCkpLC4wKSowLjIzO2Zsb2F0IGYyMyA9IG1heCguOS8oMTIuMCszMi4wKnBvdyhsZW5ndGgoenhNcCswLjk1KnBvcyksMi4wKSksLjApKjAuNjt2ZWMyIHp0WCA9IG1peChuYXosenhNcCwgMC4xKTtmbG9hdCBmNCA9IG1heCgwLjAxLXBvdyhsZW5ndGgoenRYKzAuNCpwb3MpLDIuOSksLjApKjQuMDI7ZmxvYXQgZjQyID0gbWF4KDAuMC1wb3cobGVuZ3RoKHp0WCswLjQ1KnBvcyksMi45KSwuMCkqNC4xO2Zsb2F0IGY0MyA9IG1heCgwLjAxLXBvdyhsZW5ndGgoenRYKzAuNSpwb3MpLDIuOSksLjApKjQuNjt6dFggPSBtaXgobmF6LHp4TXAsLS40KTtmbG9hdCBmNSA9IG1heCgwLjAxLXBvdyhsZW5ndGgoenRYKzAuMSpwb3MpLDUuNSksLjApKjIuMDtmbG9hdCBmNTIgPSBtYXgoMC4wMS1wb3cobGVuZ3RoKHp0WCswLjIqcG9zKSw1LjUpLC4wKSoyLjA7ZmxvYXQgZjUzID0gbWF4KDAuMDEtcG93KGxlbmd0aCh6dFgrMC4xKnBvcyksNS41KSwuMCkqMi4wO3p0WCA9IG1peChuYXosenhNcCwgMi4xKTtmbG9hdCBmNiA9IG1heCgwLjAxLXBvdyhsZW5ndGgoenRYLTAuMypwb3MpLDEuNjEpLC4wKSozLjE1OTtmbG9hdCBmNjIgPSBtYXgoMC4wMS1wb3cobGVuZ3RoKHp0WC0wLjMyNSpwb3MpLDEuNjE0KSwuMCkqMy4xNDtmbG9hdCBmNjMgPSBtYXgoMC4wMS1wb3cobGVuZ3RoKHp0WC0wLjM4OSpwb3MpLDEuNjIzKSwuMCkqMy4xMjt2ZWMzIGMgPSB2ZWMzKGdsUihuYXoscG9zLCBnbGFyZVNpemUpKTt2ZWMyIHByb3Q7aWYoYW5pbWF0ZWQpe3Byb3QgPSBydFUobmF6IC0gcG9zLCAoaVRpbWUgKiAwLjEpKTt9IGVsc2UgaWYoYW5hbW9ycGhpYyl7cHJvdCA9IHJ0VShuYXogLSBwb3MsIDEuNTcwNzk2KTt9IGVsc2Uge3Byb3QgPSBuYXogLSBwb3M7fWMgKz0gZHJ3Rihwcm90LCAoYW5hbW9ycGhpYyA/IGZsYXJlU2l6ZSAqIDEwLiA6IGZsYXJlU2l6ZSksIDAuMSwgaVRpbWUsIDEpO2Mucis9ZjErZjIrZjQrZjUrZjY7IGMuZys9ZjErZjIyK2Y0MitmNTIrZjYyOyBjLmIrPWYxK2YyMytmNDMrZjUzK2Y2MztjID0gYyoxLjMgKiB2ZWMzKGxlbmd0aCh6eE1wKSsuMDkpO2MrPXZlYzMoZjApO3JldHVybiBjO31cbiAgdmVjMyBjYyh2ZWMzIGNsciwgZmxvYXQgZmN0LGZsb2F0IGZjdDIpe2Zsb2F0IHcgPSBjbHIueCtjbHIueStjbHIuejtyZXR1cm4gbWl4KGNscix2ZWMzKHcpKmZjdCx3KmZjdDIpO31mbG9hdCBybmQodmVjMiBwKXtmbG9hdCBmID0gZnJhY3Qoc2luKGRvdChwLCB2ZWMyKDEyLjEyMzQsIDcyLjgzOTIpICkqNDUxMjMuMikpO3JldHVybiBmO31mbG9hdCBybmQoZmxvYXQgdyl7ZmxvYXQgZiA9IGZyYWN0KHNpbih3KSoxMDAwLik7cmV0dXJuIGY7fVxuICBmbG9hdCByU2hwKHZlYzIgcCwgaW50IE4pe2Zsb2F0IGY7ZmxvYXQgYT1hdGFuKHAueCxwLnkpKy4yO2Zsb2F0IGI9Ni4yODMxOS9mbG9hdChOKTtmPXNtb290aHN0ZXAoLjUsLjUxLCBjb3MoZmxvb3IoLjUrYS9iKSpiLWEpKmxlbmd0aChwLnh5KSogMi4wICAtZ2hvc3RTY2FsZSk7cmV0dXJuIGY7fVxuICB2ZWMzIGRyQyh2ZWMyIHAsIGZsb2F0IHpzaSwgZmxvYXQgZEN5LCB2ZWMzIGNsciwgdmVjMyBjbHIyLCBmbG9hdCBhbXMyLCB2ZWMyIGVzb20pe2Zsb2F0IGwgPSBsZW5ndGgocCArIGVzb20qKGFtczIqMi4pKSt6c2kvMi47ZmxvYXQgbDIgPSBsZW5ndGgocCArIGVzb20qKGFtczIqNC4pKSt6c2kvMy47ZmxvYXQgYyA9IG1heCgwLjAxLXBvdyhsZW5ndGgocCArIGVzb20qYW1zMiksIHpzaSpnaG9zdFNjYWxlKSwgMC4wKSoxMC47ZmxvYXQgYzEgPSBtYXgoMC4wMDEtcG93KGwtMC4zLCAxLi80MC4pK3NpbihsKjIwLiksIDAuMCkqMy47ZmxvYXQgYzIgPSAgbWF4KDAuMDkvcG93KGxlbmd0aChwLWVzb20qYW1zMi8uNSkqMS4sIC45NSksIDAuMCkvMjAuO2Zsb2F0IHMgPSBtYXgoMC4wMi1wb3coclNocChwKjUuICsgZXNvbSphbXMyKjUuICsgZEN5LCA2KSAsIDEuKSwgMC4wKSoxLjU7Y2xyID0gY29zKHZlYzMoMC40NCwgLjI0LCAuMikqOC4gKyBhbXMyKjQuKSowLjUrLjU7dmVjMyBmID0gYypjbHI7ZiArPSBjMSpjbHI7ZiArPSBjMipjbHI7ZiArPSAgcypjbHI7cmV0dXJuIGYtMC4wMTt9XG4gIHZlYzQgZ2VMQyhmbG9hdCB4KXtyZXR1cm4gdmVjNCh2ZWMzKG1peChtaXgobWl4KG1peChtaXgobWl4KG1peChtaXgobWl4KG1peChtaXgobWl4KG1peChtaXgobWl4KHZlYzMoMC4sIDAuLCAwLiksdmVjMygwLiwgMC4sIDAuKSwgc21vb3Roc3RlcCgwLjAsIDAuMDYzLCB4KSksdmVjMygwLiwgMC4sIDAuKSwgc21vb3Roc3RlcCgwLjA2MywgMC4xMjUsIHgpKSx2ZWMzKDAuMCwgMC4sIDAuKSwgc21vb3Roc3RlcCgwLjEyNSwgMC4xODgsIHgpKSx2ZWMzKDAuMTg4LCAwLjEzMSwgMC4xMTYpLCBzbW9vdGhzdGVwKDAuMTg4LCAwLjIyNywgeCkpLHZlYzMoMC4zMSwgMC4yMDQsIDAuNTM3KSwgc21vb3Roc3RlcCgwLjIyNywgMC4yNTEsIHgpKSx2ZWMzKDAuMTkyLCAwLjEwNiwgMC4yODYpLCBzbW9vdGhzdGVwKDAuMjUxLCAwLjMxNCwgeCkpLHZlYzMoMC4xMDIsIDAuMDA4LCAwLjM0MSksIHNtb290aHN0ZXAoMC4zMTQsIDAuMzkyLCB4KSksdmVjMygwLjA4NiwgMC4wLCAwLjE0MSksIHNtb290aHN0ZXAoMC4zOTIsIDAuNTAyLCB4KSksdmVjMygxLjAsIDAuMzEsIDAuMCksIHNtb290aHN0ZXAoMC41MDIsIDAuNjA0LCB4KSksdmVjMyguMSwgMC4xLCAwLjEpLCBzbW9vdGhzdGVwKDAuNjA0LCAwLjY0MywgeCkpLHZlYzMoMS4wLCAwLjkyOSwgMC4wKSwgc21vb3Roc3RlcCgwLjY0MywgMC43NjEsIHgpKSx2ZWMzKDEuMCwgMC4wODYsIDAuNDI0KSwgc21vb3Roc3RlcCgwLjc2MSwgMC44NDcsIHgpKSx2ZWMzKDEuMCwgMC40OSwgMC4wKSwgc21vb3Roc3RlcCgwLjg0NywgMC44OSwgeCkpLHZlYzMoMC45NDUsIDAuMjc1LCAwLjQ3NSksIHNtb290aHN0ZXAoMC44OSwgMC45NDEsIHgpKSx2ZWMzKDAuMjUxLCAwLjI3NSwgMC43OTYpLCBzbW9vdGhzdGVwKDAuOTQxLCAxLjAsIHgpKSksMS4wKTt9XG4gIGZsb2F0IGRpVE4odmVjMiBwKXt2ZWMyIGYgPSBmcmFjdChwKTtmID0gKGYgKiBmKSAqICgzLjAgLSAoMi4wICogZikpO2Zsb2F0IG4gPSBkb3QoZmxvb3IocCksIHZlYzIoMS4wLCAxNTcuMCkpO3ZlYzQgYSA9IGZyYWN0KHNpbih2ZWM0KG4gKyAwLjAsIG4gKyAxLjAsIG4gKyAxNTcuMCwgbiArIDE1OC4wKSkgKiA0Mzc1OC41NDUzMTIzKTtyZXR1cm4gbWl4KG1peChhLngsIGEueSwgZi54KSwgbWl4KGEueiwgYS53LCBmLngpLCBmLnkpO31cbiAgZmxvYXQgZmJtKHZlYzIgcCl7Y29uc3QgbWF0MiBtID0gbWF0MigwLjgwLCAtMC42MCwgMC42MCwgMC44MCk7ZmxvYXQgZiA9IDAuMDtmICs9IDAuNTAwMCpkaVROKHApOyBwID0gbSpwKjIuMDI7ZiArPSAwLjI1MDAqZGlUTihwKTsgcCA9IG0qcCoyLjAzO2YgKz0gMC4xMjUwKmRpVE4ocCk7IHAgPSBtKnAqMi4wMTtmICs9IDAuMDYyNSpkaVROKHApO3JldHVybiBmLzAuOTM3NTt9XG4gIHZlYzQgZ2VMUyh2ZWMyIHApe3ZlYzIgcHAgPSAocCAtIHZlYzIoMC41KSkgKiAyLjA7ZmxvYXQgYSA9IGF0YW4ocHAueSwgcHAueCk7dmVjNCBjcCA9IHZlYzQoc2luKGEgKiAxLjApLCBsZW5ndGgocHApLCBzaW4oYSAqIDEzLjApLCBzaW4oYSAqIDUzLjApKTtmbG9hdCBkID0gc2luKGNsYW1wKHBvdyhsZW5ndGgodmVjMigwLjUpIC0gcCkgKiAwLjUgKyBoYWxvU2NhbGUgLzIuLCA1LjApLCAwLjAsIDEuMCkgKiAzLjE0MTU5KTt2ZWMzIGMgPSB2ZWMzKGQpICogdmVjMyhmYm0oY3AueHkgKiAxNi4wKSAqIGZibShjcC56dyAqIDkuMCkgKiBtYXgobWF4KG1heChtYXgoMC41LCBzaW4oYSAqIDEuMCkpLCBzaW4oYSAqIDMuMCkgKiAwLjgpLCBzaW4oYSAqIDcuMCkgKiAwLjgpLCBzaW4oYSAqIDkuMCkgKiAxMC42KSk7YyAqPSB2ZWMzKG1peCgyLjAsIChzaW4obGVuZ3RoKHBwLnh5KSAqIDI1Ni4wKSAqIDAuNSkgKyAwLjUsIHNpbigoY2xhbXAoKGxlbmd0aChwcC54eSkgLSAwLjg3NSkgLyAwLjEsIDAuMCwgMS4wKSArIDAuMCkgKiAyLjAgKiAzLjE0MTU5KSAqIDEuNSkgKyAwLjUpICogMC4zMjc1O3JldHVybiB2ZWM0KHZlYzMoYyAqIDEuMCksIGQpO31cbiAgdmVjNCBnZUxEKHZlYzIgcCl7cC54eSArPSB2ZWMyKGZibShwLnl4ICogMy4wKSwgZmJtKHAueXggKiAyLjApKSAqIDAuMDgyNTt2ZWMzIG8gPSB2ZWMzKG1peCgwLjEyNSwgMC4yNSwgbWF4KG1heChzbW9vdGhzdGVwKDAuMSwgMC4wLCBsZW5ndGgocCAtIHZlYzIoMC4yNSkpKSxzbW9vdGhzdGVwKDAuNCwgMC4wLCBsZW5ndGgocCAtIHZlYzIoMC43NSkpKSksc21vb3Roc3RlcCgwLjgsIDAuMCwgbGVuZ3RoKHAgLSB2ZWMyKDAuODc1LCAwLjEyNSkpKSkpKTtvICs9IHZlYzMobWF4KGZibShwICogMS4wKSAtIDAuNSwgMC4wKSkgKiAwLjU7byArPSB2ZWMzKG1heChmYm0ocCAqIDIuMCkgLSAwLjUsIDAuMCkpICogMC41O28gKz0gdmVjMyhtYXgoZmJtKHAgKiA0LjApIC0gMC41LCAwLjApKSAqIDAuMjU7byArPSB2ZWMzKG1heChmYm0ocCAqIDguMCkgLSAwLjc1LCAwLjApKSAqIDEuMDtvICs9IHZlYzMobWF4KGZibShwICogMTYuMCkgLSAwLjc1LCAwLjApKSAqIDAuNzU7byArPSB2ZWMzKG1heChmYm0ocCAqIDY0LjApIC0gMC43NSwgMC4wKSkgKiAwLjU7cmV0dXJuIHZlYzQoY2xhbXAobywgdmVjMygwLjE1KSwgdmVjMygxLjApKSwgMS4wKTt9XG4gIHZlYzQgdHhMKHNhbXBsZXIyRCB0ZXgsIHZlYzIgeHRDKXtpZigoKHh0Qy54IDwgMC4pIHx8ICh4dEMueSA8IDAuKSkgfHwgKCh4dEMueCA+IDEuKSB8fCAoeHRDLnkgPiAxLikpKXtyZXR1cm4gdmVjNCgwLjApO31lbHNle3JldHVybiB0ZXh0dXJlKHRleCwgeHRDKTsgfX1cbiAgdmVjNCB0eEQoc2FtcGxlcjJEIHRleCwgdmVjMiB4dEMsIHZlYzIgZGlyLCB2ZWMzIGRpdG4pIHtyZXR1cm4gdmVjNCh0eEwodGV4LCAoeHRDICsgKGRpciAqIGRpdG4ucikpKS5yLHR4TCh0ZXgsICh4dEMgKyAoZGlyICogZGl0bi5nKSkpLmcsdHhMKHRleCwgKHh0QyArIChkaXIgKiBkaXRuLmIpKSkuYiwxLjApO31cbiAgdmVjNCBzdHJCKCl7dmVjMiBhc3BYdGMgPSB2ZWMyKDEuMCkgLSAoKCh2eHRDIC0gdmVjMigwLjUpKSAqIHZlYzIoMS4wKSkgKyB2ZWMyKDAuNSkpOyB2ZWMyIHh0QyA9IHZlYzIoMS4wKSAtIHZ4dEM7IHZlYzIgZ2h2YyA9ICh2ZWMyKDAuNSkgLSB4dEMpICogMC4zIC0gbGVuc1Bvc2l0aW9uOyB2ZWMyIGdoTm0gPSBub3JtYWxpemUoZ2h2YyAqIHZlYzIoMS4wKSkgKiB2ZWMyKDEuMCk7dmVjMiBoYWxvVmVjID0gbm9ybWFsaXplKGdodmMpICogMC42O3ZlYzIgaGxObSA9IGdoTm0gKiAwLjY7dmVjMiB0ZXhlbFNpemUgPSB2ZWMyKDEuMCkgLyB2ZWMyKGlSZXNvbHV0aW9uLnh5KTt2ZWMzIGRpdG4gPSB2ZWMzKC0odGV4ZWxTaXplLnggKiAxLjUpLCAwLjIsIHRleGVsU2l6ZS54ICogMS41KTt2ZWM0IGMgPSB2ZWM0KDAuMCk7Zm9yIChpbnQgaSA9IDA7IGkgPCA4OyBpKyspIHt2ZWMyIG9mZnNldCA9IHh0QyArIChnaHZjICogZmxvYXQoaSkpO2MgKz0gdHhEKGxlbnNEaXJ0VGV4dHVyZSwgb2Zmc2V0LCBnaE5tLCBkaXRuKSAqIHBvdyhtYXgoMC4wLCAxLjAgLSAobGVuZ3RoKHZlYzIoMC41KSAtIG9mZnNldCkgLyBsZW5ndGgodmVjMigwLjUpKSkpLCAxMC4wKTt9dmVjMiB1eVRyeiA9IHh0QyArIGhsTm07IHJldHVybiAoYyAqIGdlTEMoKGxlbmd0aCh2ZWMyKDAuNSkgLSBhc3BYdGMpIC8gbGVuZ3RoKHZlYzIoaGFsb1NjYWxlKSkpKSkgKyh0eEQobGVuc0RpcnRUZXh0dXJlLCB1eVRyeiwgZ2hObSwgZGl0bikgKiBwb3cobWF4KDAuMCwgMS4wIC0gKGxlbmd0aCh2ZWMyKDAuNSkgLSB1eVRyeikgLyBsZW5ndGgodmVjMigwLjUpKSkpLCAxMC4wKSk7fVxuICB2b2lkIG1haW5JbWFnZSh2ZWM0IHYsdmVjMiByLG91dCB2ZWM0IGkpe3ZlYzIgZz1yLS41O2cueSo9aVJlc29sdXRpb24ueS9pUmVzb2x1dGlvbi54O3ZlYzIgbD1sZW5zUG9zaXRpb24qLjU7bC55Kj1pUmVzb2x1dGlvbi55L2lSZXNvbHV0aW9uLng7dmVjMyBmPW1McyhnLGwpKjIwLipjb2xvckdhaW4vMjU2LjtpZihhZGl0aW9uYWxTdHJlYWtzKXt2ZWMzIG89dmVjMyguOSwuMiwuMSkscD12ZWMzKC4zLC4xLC45KTtmb3IoZmxvYXQgbj0wLjtuPDEwLjtuKyspZis9ZHJDKGcscG93KHJuZChuKjJlMykqMi44LC4xKSsxLjQxLDAuLG8rbixwK24scm5kKG4qMjAuKSozLisuMi0uNSxsZW5zUG9zaXRpb24pO31pZihzZWNvbmRhcnlHaG9zdHMpe3ZlYzMgbj12ZWMzKDApO24rPXJIeChnLC1sZW5zUG9zaXRpb24qLjI1LGdob3N0U2NhbGUqMS40LHZlYzMoLjI1LC4zNSwwKSk7bis9ckh4KGcsbGVuc1Bvc2l0aW9uKi4yNSxnaG9zdFNjYWxlKi41LHZlYzMoMSwuNSwuNSkpO24rPXJIeChnLGxlbnNQb3NpdGlvbiouMSxnaG9zdFNjYWxlKjEuNix2ZWMzKDEpKTtuKz1ySHgoZyxsZW5zUG9zaXRpb24qMS44LGdob3N0U2NhbGUqMi4sdmVjMygwLC41LC43NSkpO24rPXJIeChnLGxlbnNQb3NpdGlvbioxLjI1LGdob3N0U2NhbGUqLjgsdmVjMygxLDEsLjUpKTtuKz1ySHgoZywtbGVuc1Bvc2l0aW9uKjEuMjUsZ2hvc3RTY2FsZSo1Lix2ZWMzKC41LC41LC4yNSkpO24rPWZwb3coMS4tYWJzKGRpc3RhbmNlKGxlbnNQb3NpdGlvbiouOCxnKS0uNyksLjk4NSkqY29sb3JHYWluLzIxMDAuO2YrPW47fWlmKHN0YXJCdXJzdCl7dnh0Qz1nKy41O3ZlYzQgbj1nZUxEKGcpO2Zsb2F0IG89MS4tY2xhbXAoMC41LDAuLC41KSoyLjtuKz1taXgobixwb3cobioyLix2ZWM0KDIpKSouNSxvKTtmbG9hdCBzPShnLngrZy55KSooMS4vNi4pO3ZlYzIgZD1tYXQyKGNvcyhzKSwtc2luKHMpLHNpbihzKSxjb3MocykpKnZ4dEM7bis9Z2VMUyhkKSoyLjtmKz1jbGFtcChuLnh5eipzdHJCKCkueHl6LC4wMSwxLik7fWk9ZW5hYmxlZD92ZWM0KG1peChmLHZlYzMoMCksb3BhY2l0eSkrdi54eXosdi53KTp2ZWM0KHYpO31cbmAsXG59O1xuXG5leHBvcnQgY2xhc3MgTGVuc0ZsYXJlRWZmZWN0IGV4dGVuZHMgRWZmZWN0IHtcblx0Y29uc3RydWN0b3Ioe1xuXHRcdGJsZW5kRnVuY3Rpb24gPSBCbGVuZEZ1bmN0aW9uLk5PUk1BTCxcblx0XHRlbmFibGVkID0gdHJ1ZSxcblx0XHRnbGFyZVNpemUgPSAwLjIsXG5cdFx0bGVuc1Bvc2l0aW9uID0gWzAuMDEsIDAuMDFdLFxuXHRcdGlSZXNvbHV0aW9uID0gWzAsIDBdLFxuXHRcdHN0YXJQb2ludHMgPSA2LFxuXHRcdGZsYXJlU2l6ZSA9IDAuMDEsXG5cdFx0ZmxhcmVTcGVlZCA9IDAuMDEsXG5cdFx0ZmxhcmVTaGFwZSA9IDAuMDEsXG5cdFx0YW5pbWF0ZWQgPSB0cnVlLFxuXHRcdGFuYW1vcnBoaWMgPSBmYWxzZSxcblx0XHRjb2xvckdhaW4gPSBuZXcgQ29sb3IoMjAsIDIwLCAyMCksXG5cdFx0bGVuc0RpcnRUZXh0dXJlID0gbnVsbCBhcyBUZXh0dXJlIHwgbnVsbCxcblx0XHRoYWxvU2NhbGUgPSAwLjUsXG5cdFx0c2Vjb25kYXJ5R2hvc3RzID0gdHJ1ZSxcblx0XHRhZGl0aW9uYWxTdHJlYWtzID0gdHJ1ZSxcblx0XHRnaG9zdFNjYWxlID0gMC4wLFxuXHRcdG9wYWNpdHkgPSAxLjAsXG5cdFx0c3RhckJ1cnN0ID0gZmFsc2UsXG5cdH0gPSB7fSkge1xuXHRcdHN1cGVyKCdMZW5zRmxhcmVFZmZlY3QnLCBMZW5zRmxhcmVTaGFkZXIuZnJhZ21lbnRTaGFkZXIsIHtcblx0XHRcdGJsZW5kRnVuY3Rpb24sXG5cdFx0XHR1bmlmb3JtczogbmV3IE1hcDxzdHJpbmcsIFVuaWZvcm0+KFtcblx0XHRcdFx0WydlbmFibGVkJywgbmV3IFVuaWZvcm0oZW5hYmxlZCldLFxuXHRcdFx0XHRbJ2dsYXJlU2l6ZScsIG5ldyBVbmlmb3JtKGdsYXJlU2l6ZSldLFxuXHRcdFx0XHRbJ2xlbnNQb3NpdGlvbicsIG5ldyBVbmlmb3JtKGxlbnNQb3NpdGlvbildLFxuXHRcdFx0XHRbJ2lUaW1lJywgbmV3IFVuaWZvcm0oMCldLFxuXHRcdFx0XHRbJ2lSZXNvbHV0aW9uJywgbmV3IFVuaWZvcm0oaVJlc29sdXRpb24pXSxcblx0XHRcdFx0WydzdGFyUG9pbnRzJywgbmV3IFVuaWZvcm0oc3RhclBvaW50cyldLFxuXHRcdFx0XHRbJ2ZsYXJlU2l6ZScsIG5ldyBVbmlmb3JtKGZsYXJlU2l6ZSldLFxuXHRcdFx0XHRbJ2ZsYXJlU3BlZWQnLCBuZXcgVW5pZm9ybShmbGFyZVNwZWVkKV0sXG5cdFx0XHRcdFsnZmxhcmVTaGFwZScsIG5ldyBVbmlmb3JtKGZsYXJlU2hhcGUpXSxcblx0XHRcdFx0WydhbmltYXRlZCcsIG5ldyBVbmlmb3JtKGFuaW1hdGVkKV0sXG5cdFx0XHRcdFsnYW5hbW9ycGhpYycsIG5ldyBVbmlmb3JtKGFuYW1vcnBoaWMpXSxcblx0XHRcdFx0Wydjb2xvckdhaW4nLCBuZXcgVW5pZm9ybShjb2xvckdhaW4pXSxcblx0XHRcdFx0WydsZW5zRGlydFRleHR1cmUnLCBuZXcgVW5pZm9ybShsZW5zRGlydFRleHR1cmUpXSxcblx0XHRcdFx0WydoYWxvU2NhbGUnLCBuZXcgVW5pZm9ybShoYWxvU2NhbGUpXSxcblx0XHRcdFx0WydzZWNvbmRhcnlHaG9zdHMnLCBuZXcgVW5pZm9ybShzZWNvbmRhcnlHaG9zdHMpXSxcblx0XHRcdFx0WydhZGl0aW9uYWxTdHJlYWtzJywgbmV3IFVuaWZvcm0oYWRpdGlvbmFsU3RyZWFrcyldLFxuXHRcdFx0XHRbJ2dob3N0U2NhbGUnLCBuZXcgVW5pZm9ybShnaG9zdFNjYWxlKV0sXG5cdFx0XHRcdFsnc3RhckJ1cnN0JywgbmV3IFVuaWZvcm0oc3RhckJ1cnN0KV0sXG5cdFx0XHRcdFsnb3BhY2l0eScsIG5ldyBVbmlmb3JtKG9wYWNpdHkpXSxcblx0XHRcdF0pLFxuXHRcdH0pO1xuXHR9XG5cblx0b3ZlcnJpZGUgdXBkYXRlKF9yZW5kZXJlcjogV2ViR0xSZW5kZXJlciwgX2lucHV0QnVmZmVyOiBXZWJHTFJlbmRlclRhcmdldCwgZGVsdGFUaW1lOiBudW1iZXIpIHtcblx0XHRjb25zdCBpVGltZSA9IHRoaXMudW5pZm9ybXMuZ2V0KCdpVGltZScpO1xuXHRcdGlmIChpVGltZSkge1xuXHRcdFx0aVRpbWUudmFsdWUgKz0gZGVsdGFUaW1lO1xuXHRcdH1cblx0fVxufVxuXG5leHBvcnQgdHlwZSBMZW5zRmxhcmVPcHRpb25zID0gQ29uc3RydWN0b3JQYXJhbWV0ZXJzPHR5cGVvZiBMZW5zRmxhcmVFZmZlY3Q+WzBdICYge1xuXHRwb3NpdGlvbjogVmVjdG9yMztcblx0Zm9sbG93TW91c2U6IGJvb2xlYW47XG5cdHNtb290aFRpbWU6IG51bWJlcjtcbn07XG5cbmNvbnN0IGRlZmF1bHRPcHRpb25zOiBMZW5zRmxhcmVPcHRpb25zID0ge1xuXHRwb3NpdGlvbjogbmV3IFZlY3RvcjMoLTI1LCA2LCAtNjApLFxuXHRmb2xsb3dNb3VzZTogZmFsc2UsXG5cdHNtb290aFRpbWU6IDAuNyxcbn07XG5cbkBDb21wb25lbnQoe1xuXHRzZWxlY3RvcjogJ25ndHAtbGVucy1mbGFyZScsXG5cdHN0YW5kYWxvbmU6IHRydWUsXG5cdHRlbXBsYXRlOiBgXG5cdFx0PG5ndC1wcmltaXRpdmUgKmFyZ3M9XCJbZWZmZWN0KCldXCIgW3BhcmFtZXRlcnNdPVwieyBkaXNwb3NlOiBudWxsIH1cIiAvPlxuXHRgLFxuXHRpbXBvcnRzOiBbTmd0QXJnc10sXG5cdHNjaGVtYXM6IFtDVVNUT01fRUxFTUVOVFNfU0NIRU1BXSxcblx0Y2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG59KVxuZXhwb3J0IGNsYXNzIE5ndHBMZW5zRmxhcmUge1xuXHRwcml2YXRlIGF1dG9FZmZlY3QgPSBpbmplY3RBdXRvRWZmZWN0KCk7XG5cdHByaXZhdGUgc3RvcmUgPSBpbmplY3RTdG9yZSgpO1xuXHRwcml2YXRlIHZpZXdwb3J0ID0gdGhpcy5zdG9yZS5zZWxlY3QoJ3ZpZXdwb3J0Jyk7XG5cdHByaXZhdGUgcmF5Y2FzdGVyID0gdGhpcy5zdG9yZS5zZWxlY3QoJ3JheWNhc3RlcicpO1xuXHRwcml2YXRlIHBvaW50ZXIgPSB0aGlzLnN0b3JlLnNlbGVjdCgncG9pbnRlcicpO1xuXG5cdGVmZmVjdENvbXBvc2VyID0gaW5qZWN0KE5ndHBFZmZlY3RDb21wb3Nlcik7XG5cblx0b3B0aW9ucyA9IGlucHV0KGRlZmF1bHRPcHRpb25zLCB7IHRyYW5zZm9ybTogbWVyZ2VJbnB1dHMoZGVmYXVsdE9wdGlvbnMpIH0pO1xuXG5cdHByaXZhdGUgcHJvamVjdGVkUG9zaXRpb24gPSBuZXcgVmVjdG9yMygpO1xuXHRwcml2YXRlIG1vdXNlMmQgPSBuZXcgVmVjdG9yMigpO1xuXG5cdGVmZmVjdCA9IGNvbXB1dGVkKCgpID0+IHtcblx0XHRjb25zdCB7IHBvc2l0aW9uOiBfLCBmb2xsb3dNb3VzZTogX18sIHNtb290aFRpbWU6IF9fXywgLi4ub3B0aW9ucyB9ID0gdGhpcy5vcHRpb25zKCk7XG5cdFx0cmV0dXJuIG5ldyBMZW5zRmxhcmVFZmZlY3Qob3B0aW9ucyk7XG5cdH0pO1xuXG5cdGNvbnN0cnVjdG9yKCkge1xuXHRcdGFmdGVyTmV4dFJlbmRlcigoKSA9PiB7XG5cdFx0XHR0aGlzLmF1dG9FZmZlY3QoKCkgPT4ge1xuXHRcdFx0XHRjb25zdCBbZWZmZWN0LCB2aWV3cG9ydF0gPSBbdGhpcy5lZmZlY3QoKSwgdGhpcy52aWV3cG9ydCgpXTtcblx0XHRcdFx0Y29uc3QgaVJlc29sdXRpb24gPSBlZmZlY3QudW5pZm9ybXMuZ2V0KCdpUmVzb2x1dGlvbicpO1xuXHRcdFx0XHRpZiAoaVJlc29sdXRpb24pIHtcblx0XHRcdFx0XHRpUmVzb2x1dGlvbi52YWx1ZS54ID0gdmlld3BvcnQud2lkdGg7XG5cdFx0XHRcdFx0aVJlc29sdXRpb24udmFsdWUueSA9IHZpZXdwb3J0LmhlaWdodDtcblx0XHRcdFx0fVxuXHRcdFx0fSk7XG5cdFx0fSk7XG5cblx0XHRpbmplY3RCZWZvcmVSZW5kZXIoKHsgZGVsdGEgfSkgPT4ge1xuXHRcdFx0Y29uc3QgW2VmZmVjdF0gPSBbdGhpcy5lZmZlY3QoKV07XG5cdFx0XHRpZiAoIWVmZmVjdCkgcmV0dXJuO1xuXG5cdFx0XHRjb25zdCBbeyBmb2xsb3dNb3VzZSwgcG9zaXRpb24sIHNtb290aFRpbWUgfSwgcG9pbnRlciwgY2FtZXJhLCBzY2VuZSwgcmF5Y2FzdGVyXSA9IFtcblx0XHRcdFx0dGhpcy5vcHRpb25zKCksXG5cdFx0XHRcdHRoaXMucG9pbnRlcigpLFxuXHRcdFx0XHR0aGlzLmVmZmVjdENvbXBvc2VyLmNhbWVyYSgpLFxuXHRcdFx0XHR0aGlzLmVmZmVjdENvbXBvc2VyLnNjZW5lKCksXG5cdFx0XHRcdHRoaXMucmF5Y2FzdGVyKCksXG5cdFx0XHRdO1xuXG5cdFx0XHRjb25zdCB1TGVuc1Bvc2l0aW9uID0gZWZmZWN0LnVuaWZvcm1zLmdldCgnbGVuc1Bvc2l0aW9uJyk7XG5cdFx0XHRjb25zdCB1T3BhY2l0eSA9IGVmZmVjdC51bmlmb3Jtcy5nZXQoJ29wYWNpdHknKTtcblx0XHRcdGlmICghdUxlbnNQb3NpdGlvbiB8fCAhdU9wYWNpdHkpIHJldHVybjtcblxuXHRcdFx0bGV0IHRhcmdldCA9IDE7XG5cblx0XHRcdGlmIChmb2xsb3dNb3VzZSkge1xuXHRcdFx0XHR1TGVuc1Bvc2l0aW9uLnZhbHVlLnggPSBwb2ludGVyLng7XG5cdFx0XHRcdHVMZW5zUG9zaXRpb24udmFsdWUueSA9IHBvaW50ZXIueTtcblx0XHRcdFx0dGFyZ2V0ID0gMDtcblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdHRoaXMucHJvamVjdGVkUG9zaXRpb24uY29weShwb3NpdGlvbikucHJvamVjdChjYW1lcmEpO1xuXHRcdFx0XHRpZiAodGhpcy5wcm9qZWN0ZWRQb3NpdGlvbi56ID4gMSkgcmV0dXJuO1xuXG5cdFx0XHRcdHVMZW5zUG9zaXRpb24udmFsdWUueCA9IHRoaXMucHJvamVjdGVkUG9zaXRpb24ueDtcblx0XHRcdFx0dUxlbnNQb3NpdGlvbi52YWx1ZS55ID0gdGhpcy5wcm9qZWN0ZWRQb3NpdGlvbi55O1xuXG5cdFx0XHRcdHRoaXMubW91c2UyZC5zZXQodGhpcy5wcm9qZWN0ZWRQb3NpdGlvbi54LCB0aGlzLnByb2plY3RlZFBvc2l0aW9uLnkpO1xuXHRcdFx0XHRyYXljYXN0ZXIuc2V0RnJvbUNhbWVyYSh0aGlzLm1vdXNlMmQsIGNhbWVyYSk7XG5cdFx0XHRcdGNvbnN0IGludGVyc2VjdHMgPSByYXljYXN0ZXIuaW50ZXJzZWN0T2JqZWN0cyhzY2VuZS5jaGlsZHJlbiwgdHJ1ZSk7XG5cdFx0XHRcdGNvbnN0IHsgb2JqZWN0IH0gPSBpbnRlcnNlY3RzWzBdID8/IHt9O1xuXHRcdFx0XHRpZiAob2JqZWN0KSB7XG5cdFx0XHRcdFx0aWYgKG9iamVjdC51c2VyRGF0YT8uWydsZW5zZmxhcmUnXSA9PT0gJ25vLW9jY2x1c2lvbicpIHtcblx0XHRcdFx0XHRcdHRhcmdldCA9IDA7XG5cdFx0XHRcdFx0fSBlbHNlIGlmIChvYmplY3QgaW5zdGFuY2VvZiBNZXNoKSB7XG5cdFx0XHRcdFx0XHRpZiAob2JqZWN0Lm1hdGVyaWFsLnVuaWZvcm1zPy5fdHJhbnNtaXNzaW9uPy52YWx1ZSA+IDAuMikge1xuXHRcdFx0XHRcdFx0XHQvL0NoZWNrIGZvciBNZXNoVHJhbnNtaXNzaW9uTWF0ZXJpYWxcblx0XHRcdFx0XHRcdFx0dGFyZ2V0ID0gMC4yO1xuXHRcdFx0XHRcdFx0fSBlbHNlIGlmIChvYmplY3QubWF0ZXJpYWwuX3RyYW5zbWlzc2lvbiAmJiBvYmplY3QubWF0ZXJpYWwuX3RyYW5zbWlzc2lvbiA+IDAuMikge1xuXHRcdFx0XHRcdFx0XHQvL0NoZWNrIGZvciBNZXNoUGh5c2ljYWxNYXRlcmlhbCB3aXRoIHRyYW5zbWlzc2lvbiBzZXR0aW5nXG5cdFx0XHRcdFx0XHRcdHRhcmdldCA9IDAuMjtcblx0XHRcdFx0XHRcdH0gZWxzZSBpZiAob2JqZWN0Lm1hdGVyaWFsLnRyYW5zcGFyZW50KSB7XG5cdFx0XHRcdFx0XHRcdC8vIENoZWNrIGZvciBPdGhlck1hdGVyaWFscyB3aXRoIHRyYW5zcGFyZW50IHBhcmFtZXRlclxuXHRcdFx0XHRcdFx0XHR0YXJnZXQgPSBvYmplY3QubWF0ZXJpYWwub3BhY2l0eTtcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblx0XHRcdH1cblxuXHRcdFx0ZWFzaW5nLmRhbXAodU9wYWNpdHksICd2YWx1ZScsIHRhcmdldCwgc21vb3RoVGltZSwgZGVsdGEpO1xuXHRcdH0pO1xuXHR9XG59XG4iXX0=
@@ -555,7 +555,7 @@ class NgtpDepthOfField {
555
555
  effect.setDepthTexture(options.depthTexture.texture, options.depthTexture.packing);
556
556
  }
557
557
  // Temporary fix that restores DOF 6.21.3 behavior, everything since then lets shapes leak through the blur
558
- const maskPass = effect.maskPass;
558
+ const maskPass = effect['maskPass'];
559
559
  maskPass.maskFunction = MaskFunction.MULTIPLY_RGB_SET_ALPHA;
560
560
  return effect;
561
561
  });
@@ -746,8 +746,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.3", ngImpor
746
746
  class NgtpGrid {
747
747
  constructor() {
748
748
  this.autoEffect = injectAutoEffect();
749
- this.store = injectStore();
750
- this.invalidate = this.store.select('invalidate');
751
749
  this.options = input({});
752
750
  this.size = pick(this.options, 'size');
753
751
  this.effect = computed(() => {
@@ -983,7 +981,7 @@ class NgtpLensFlare {
983
981
  }
984
982
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.3", ngImport: i0, type: NgtpLensFlare, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
985
983
  static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "18.1.3", type: NgtpLensFlare, isStandalone: true, selector: "ngtp-lens-flare", inputs: { options: { classPropertyName: "options", publicName: "options", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0, template: `
986
- <ngt-primitive *args="[effect()]" [dispose]="null" />
984
+ <ngt-primitive *args="[effect()]" [parameters]="{ dispose: null }" />
987
985
  `, isInline: true, dependencies: [{ kind: "directive", type: NgtArgs, selector: "ng-template[args]", inputs: ["args"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
988
986
  }
989
987
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.3", ngImport: i0, type: NgtpLensFlare, decorators: [{
@@ -992,7 +990,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.3", ngImpor
992
990
  selector: 'ngtp-lens-flare',
993
991
  standalone: true,
994
992
  template: `
995
- <ngt-primitive *args="[effect()]" [dispose]="null" />
993
+ <ngt-primitive *args="[effect()]" [parameters]="{ dispose: null }" />
996
994
  `,
997
995
  imports: [NgtArgs],
998
996
  schemas: [CUSTOM_ELEMENTS_SCHEMA],
@@ -1 +1 @@
1
- {"version":3,"file":"angular-three-postprocessing.mjs","sources":["../../../../libs/postprocessing/src/lib/effect.ts","../../../../libs/postprocessing/src/lib/effect-composer.ts","../../../../libs/postprocessing/src/lib/effects/ascii.ts","../../../../libs/postprocessing/src/lib/effects/bloom.ts","../../../../libs/postprocessing/src/lib/effects/brightness-contrast.ts","../../../../libs/postprocessing/src/lib/effects/chromatic-abberation.ts","../../../../libs/postprocessing/src/lib/effects/color-average.ts","../../../../libs/postprocessing/src/lib/effects/color-depth.ts","../../../../libs/postprocessing/src/lib/effects/depth.ts","../../../../libs/postprocessing/src/lib/effects/depth-of-field.ts","../../../../libs/postprocessing/src/lib/effects/dot-screen.ts","../../../../libs/postprocessing/src/lib/effects/fxaa.ts","../../../../libs/postprocessing/src/lib/effects/glitch.ts","../../../../libs/postprocessing/src/lib/effects/god-rays.ts","../../../../libs/postprocessing/src/lib/effects/grid.ts","../../../../libs/postprocessing/src/lib/effects/hue-saturation.ts","../../../../libs/postprocessing/src/lib/effects/lens-flare.ts","../../../../libs/postprocessing/src/lib/effects/lut.ts","../../../../libs/postprocessing/src/lib/effects/noise.ts","../../../../libs/postprocessing/src/lib/effects/pixelation.ts","../../../../libs/postprocessing/src/lib/effects/scanline.ts","../../../../libs/postprocessing/src/lib/effects/sepia.ts","../../../../libs/postprocessing/src/lib/effects/shock-wave.ts","../../../../libs/postprocessing/src/lib/effects/smaa.ts","../../../../libs/postprocessing/src/lib/effects/tilt-shift.ts","../../../../libs/postprocessing/src/lib/effects/tilt-shift-2.ts","../../../../libs/postprocessing/src/lib/effects/vignette.ts","../../../../libs/postprocessing/src/lib/effects/water.ts","../../../../libs/postprocessing/src/angular-three-postprocessing.ts"],"sourcesContent":["import { CUSTOM_ELEMENTS_SCHEMA, ChangeDetectionStrategy, Component, Directive, inject, input } from '@angular/core';\nimport { injectStore } from 'angular-three';\nimport { createNoopInjectionToken } from 'ngxtension/create-injection-token';\nimport { BlendFunction } from 'postprocessing';\n\nexport const [injectDefaultEffectOptions, provideDefaultEffectOptions] = createNoopInjectionToken<{\n\tblendFunction?: BlendFunction;\n\topacity?: number;\n}>('Default Effect options');\n\n@Component({\n\tselector: 'ngtp-effect-blend-mode',\n\tstandalone: true,\n\ttemplate: `\n\t\t@if (effect) {\n\t\t\t<ngt-value [rawValue]=\"effect.blendFunction()\" attach=\"blendMode.blendFunction\" />\n\t\t\t<ngt-value [rawValue]=\"effect.opacity()\" attach=\"blendMode.opacity.value\" />\n\t\t}\n\t`,\n\tschemas: [CUSTOM_ELEMENTS_SCHEMA],\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class NgtpEffectBlendMode {\n\teffect = inject(NgtpEffect, { optional: true });\n}\n\n@Directive({ standalone: true })\nexport class NgtpEffect {\n\tdefaultEffectOptions = injectDefaultEffectOptions({ optional: true });\n\n\tblendFunction = input(this.defaultEffectOptions?.blendFunction);\n\topacity = input(this.defaultEffectOptions?.opacity);\n\n\tprivate store = injectStore();\n\tcamera = this.store.select('camera');\n\tinvalidate = this.store.select('invalidate');\n}\n\nexport const NgtpEffectHostDirective = { directive: NgtpEffect, inputs: ['blendFunction', 'opacity'] };\n","import {\n\tCUSTOM_ELEMENTS_SCHEMA,\n\tChangeDetectionStrategy,\n\tComponent,\n\tElementRef,\n\tInjector,\n\tafterNextRender,\n\tcomputed,\n\tinject,\n\tinput,\n\tviewChild,\n} from '@angular/core';\nimport { extend, getLocalState, injectBeforeRender, injectStore, pick } from 'angular-three';\nimport { injectAutoEffect } from 'ngxtension/auto-effect';\nimport { mergeInputs } from 'ngxtension/inject-inputs';\nimport {\n\tDepthDownsamplingPass,\n\tEffect,\n\tEffectAttribute,\n\tEffectComposer,\n\tEffectPass,\n\tNormalPass,\n\tPass,\n\tRenderPass,\n} from 'postprocessing';\nimport { Camera, Group, HalfFloatType, NoToneMapping, Scene, TextureDataType } from 'three';\nimport { isWebGL2Available } from 'three-stdlib';\n\nextend({ Group });\n\ninterface NgtpEffectComposerOptions {\n\tenabled: boolean;\n\tdepthBuffer?: boolean;\n\t/** Only used for SSGI currently, leave it disabled for everything else unless it's needed */\n\tenableNormalPass?: boolean;\n\tstencilBuffer?: boolean;\n\tautoClear: boolean;\n\tresolutionScale?: number;\n\tmultisampling: number;\n\tframeBufferType: TextureDataType;\n\trenderPriority: number;\n\tcamera?: Camera;\n\tscene?: Scene;\n}\n\nconst defaultOptions: NgtpEffectComposerOptions = {\n\tenabled: true,\n\trenderPriority: 1,\n\tautoClear: true,\n\tmultisampling: 8,\n\tframeBufferType: HalfFloatType,\n};\n\nfunction isConvolution(effect: Effect) {\n\treturn (effect.getAttributes() & EffectAttribute.CONVOLUTION) === EffectAttribute.CONVOLUTION;\n}\n\n@Component({\n\tselector: 'ngtp-effect-composer',\n\tstandalone: true,\n\ttemplate: `\n\t\t<ngt-group #group>\n\t\t\t<ng-content />\n\t\t</ngt-group>\n\t`,\n\tschemas: [CUSTOM_ELEMENTS_SCHEMA],\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class NgtpEffectComposer {\n\toptions = input(defaultOptions, { transform: mergeInputs(defaultOptions) });\n\n\tprivate injector = inject(Injector);\n\tprivate autoEffect = injectAutoEffect();\n\tprivate store = injectStore();\n\tprivate size = this.store.select('size');\n\tprivate gl = this.store.select('gl');\n\tprivate defaultScene = this.store.select('scene');\n\tprivate defaultCamera = this.store.select('camera');\n\n\tdepthBuffer = pick(this.options, 'depthBuffer');\n\tstencilBuffer = pick(this.options, 'stencilBuffer');\n\tmultisampling = pick(this.options, 'multisampling');\n\tframeBufferType = pick(this.options, 'frameBufferType');\n\tscene = computed(() => this.options().scene ?? this.defaultScene());\n\tcamera = computed(() => this.options().camera ?? this.defaultCamera());\n\tenableNormalPass = pick(this.options, 'enableNormalPass');\n\tresolutionScale = pick(this.options, 'resolutionScale');\n\n\tgroupRef = viewChild.required<ElementRef<Group>>('group');\n\n\tcomposerData = computed(() => {\n\t\tconst webGL2Available = isWebGL2Available();\n\t\tconst [\n\t\t\tgl,\n\t\t\tscene,\n\t\t\tcamera,\n\t\t\tdepthBuffer,\n\t\t\tstencilBuffer,\n\t\t\tmultisampling,\n\t\t\tframeBufferType,\n\t\t\tenableNormalPass,\n\t\t\tresolutionScale,\n\t\t] = [\n\t\t\tthis.gl(),\n\t\t\tthis.scene(),\n\t\t\tthis.camera(),\n\t\t\tthis.depthBuffer(),\n\t\t\tthis.stencilBuffer(),\n\t\t\tthis.multisampling(),\n\t\t\tthis.frameBufferType(),\n\t\t\tthis.enableNormalPass(),\n\t\t\tthis.resolutionScale(),\n\t\t];\n\n\t\t// initialize composer\n\t\tconst composer = new EffectComposer(gl, {\n\t\t\tdepthBuffer,\n\t\t\tstencilBuffer,\n\t\t\tmultisampling: multisampling > 0 && webGL2Available ? multisampling : 0,\n\t\t\tframeBufferType,\n\t\t});\n\n\t\t// add render pass\n\t\tcomposer.addPass(new RenderPass(scene, camera));\n\n\t\t// create normal pass\n\t\tlet downSamplingPass = null;\n\t\tlet normalPass = null;\n\t\tif (enableNormalPass) {\n\t\t\tnormalPass = new NormalPass(scene, camera);\n\t\t\tnormalPass.enabled = false;\n\t\t\tcomposer.addPass(normalPass);\n\t\t\tif (resolutionScale !== undefined && webGL2Available) {\n\t\t\t\tdownSamplingPass = new DepthDownsamplingPass({ normalBuffer: normalPass.texture, resolutionScale });\n\t\t\t\tdownSamplingPass.enabled = false;\n\t\t\t\tcomposer.addPass(downSamplingPass);\n\t\t\t}\n\t\t}\n\n\t\treturn { composer, normalPass, downSamplingPass };\n\t});\n\n\tconstructor() {\n\t\tafterNextRender(() => {\n\t\t\tthis.disableToneMapping();\n\t\t\tthis.setComposerSize();\n\t\t\tthis.updatePasses();\n\n\t\t\tinjectBeforeRender(\n\t\t\t\t({ delta }) => {\n\t\t\t\t\tconst [{ composer }, { enabled, autoClear, stencilBuffer }, gl] = [\n\t\t\t\t\t\tthis.composerData(),\n\t\t\t\t\t\tthis.options(),\n\t\t\t\t\t\tthis.gl(),\n\t\t\t\t\t];\n\n\t\t\t\t\tif (enabled) {\n\t\t\t\t\t\tconst currentAutoClear = gl.autoClear;\n\t\t\t\t\t\tgl.autoClear = autoClear;\n\t\t\t\t\t\tif (stencilBuffer && !autoClear) gl.clearStencil();\n\t\t\t\t\t\tcomposer.render(delta);\n\t\t\t\t\t\tgl.autoClear = currentAutoClear;\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\t{ injector: this.injector, priority: this.options().enabled ? this.options().renderPriority : 0 },\n\t\t\t);\n\t\t});\n\t}\n\n\t// NOTE: Disable tone mapping because threejs disallows tonemapping on render targets\n\tprivate disableToneMapping() {\n\t\tthis.autoEffect(() => {\n\t\t\tconst gl = this.gl();\n\t\t\tconst currentTonemapping = gl.toneMapping;\n\t\t\tgl.toneMapping = NoToneMapping;\n\t\t\treturn () => {\n\t\t\t\tgl.toneMapping = currentTonemapping;\n\t\t\t};\n\t\t});\n\t}\n\n\tprivate setComposerSize() {\n\t\tthis.autoEffect(() => {\n\t\t\tconst [{ composer }, { width, height }] = [this.composerData(), this.size()];\n\t\t\tif (composer) {\n\t\t\t\tcomposer.setSize(width, height);\n\t\t\t}\n\t\t});\n\t}\n\n\tprivate updatePasses() {\n\t\tthis.autoEffect(() => {\n\t\t\tconst [group, { composer, normalPass, downSamplingPass }, camera] = [\n\t\t\t\tthis.groupRef(),\n\t\t\t\tthis.composerData(),\n\t\t\t\tthis.camera(),\n\t\t\t];\n\n\t\t\tconst passes: Pass[] = [];\n\n\t\t\tif (group.nativeElement && composer) {\n\t\t\t\tconst localState = getLocalState(group.nativeElement);\n\t\t\t\tif (!localState) return;\n\n\t\t\t\tconst children = localState.nonObjects();\n\t\t\t\tfor (let i = 0; i < children.length; i++) {\n\t\t\t\t\tconst child = children[i];\n\t\t\t\t\tif (child instanceof Effect) {\n\t\t\t\t\t\tconst effects: Effect[] = [child];\n\n\t\t\t\t\t\tif (!isConvolution(child)) {\n\t\t\t\t\t\t\tlet next: unknown = null;\n\t\t\t\t\t\t\twhile ((next = children[i + 1]) instanceof Effect) {\n\t\t\t\t\t\t\t\tif (isConvolution(next)) break;\n\t\t\t\t\t\t\t\teffects.push(next as Effect);\n\t\t\t\t\t\t\t\ti++;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tconst pass = new EffectPass(camera, ...effects);\n\t\t\t\t\t\tpasses.push(pass);\n\t\t\t\t\t} else if (child instanceof Pass) {\n\t\t\t\t\t\tpasses.push(child);\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tfor (const pass of passes) {\n\t\t\t\t\tcomposer.addPass(pass);\n\t\t\t\t}\n\n\t\t\t\tif (normalPass) normalPass.enabled = true;\n\t\t\t\tif (downSamplingPass) downSamplingPass.enabled = true;\n\t\t\t}\n\n\t\t\treturn () => {\n\t\t\t\tfor (const pass of passes) composer?.removePass(pass);\n\t\t\t\tif (normalPass) normalPass.enabled = false;\n\t\t\t\tif (downSamplingPass) downSamplingPass.enabled = false;\n\t\t\t};\n\t\t});\n\t}\n}\n","import { CUSTOM_ELEMENTS_SCHEMA, ChangeDetectionStrategy, Component, computed, input } from '@angular/core';\nimport { NgtArgs } from 'angular-three';\nimport { mergeInputs } from 'ngxtension/inject-inputs';\nimport { Effect } from 'postprocessing';\nimport { CanvasTexture, Color, NearestFilter, RepeatWrapping, Texture, Uniform } from 'three';\n\nconst fragment = `\nuniform sampler2D uCharacters;\nuniform float uCharactersCount;\nuniform float uCellSize;\nuniform bool uInvert;\nuniform vec3 uColor;\n\nconst vec2 SIZE = vec2(16.);\n\nvec3 greyscale(vec3 color, float strength) {\n float g = dot(color, vec3(0.299, 0.587, 0.114));\n return mix(color, vec3(g), strength);\n}\n\nvec3 greyscale(vec3 color) {\n return greyscale(color, 1.0);\n}\n\nvoid mainImage(const in vec4 inputColor, const in vec2 uv, out vec4 outputColor) {\n vec2 cell = resolution / uCellSize;\n vec2 grid = 1.0 / cell;\n vec2 pixelizedUV = grid * (0.5 + floor(uv / grid));\n vec4 pixelized = texture2D(inputBuffer, pixelizedUV);\n float greyscaled = greyscale(pixelized.rgb).r;\n\n if (uInvert) {\n greyscaled = 1.0 - greyscaled;\n }\n\n float characterIndex = floor((uCharactersCount - 1.0) * greyscaled);\n vec2 characterPosition = vec2(mod(characterIndex, SIZE.x), floor(characterIndex / SIZE.y));\n vec2 offset = vec2(characterPosition.x, -characterPosition.y) / SIZE;\n vec2 charUV = mod(uv * (cell / SIZE), 1.0 / SIZE) - vec2(0., 1.0 / SIZE) + offset;\n vec4 asciiCharacter = texture2D(uCharacters, charUV);\n\n asciiCharacter.rgb = uColor * asciiCharacter.r;\n asciiCharacter.a = pixelized.a;\n outputColor = asciiCharacter;\n}\n`;\n\ninterface ASCIIEffectOptions {\n\tfont?: string;\n\tcharacters?: string;\n\tfontSize?: number;\n\tcellSize?: number;\n\tcolor?: string;\n\tinvert?: boolean;\n}\n\nexport class ASCIIEffect extends Effect {\n\tconstructor({\n\t\tfont = 'arial',\n\t\tcharacters = ` .:,'-^=*+?!|0#X%WM@`,\n\t\tfontSize = 54,\n\t\tcellSize = 16,\n\t\tcolor = '#ffffff',\n\t\tinvert = false,\n\t}: ASCIIEffectOptions = {}) {\n\t\tconst uniforms = new Map<string, Uniform>([\n\t\t\t['uCharacters', new Uniform(new Texture())],\n\t\t\t['uCellSize', new Uniform(cellSize)],\n\t\t\t['uCharactersCount', new Uniform(characters.length)],\n\t\t\t['uColor', new Uniform(new Color(color))],\n\t\t\t['uInvert', new Uniform(invert)],\n\t\t]);\n\n\t\tsuper('ASCIIEffect', fragment, { uniforms });\n\n\t\tconst charactersTextureUniform = this.uniforms.get('uCharacters');\n\n\t\tif (charactersTextureUniform) {\n\t\t\tcharactersTextureUniform.value = this.createCharactersTexture(characters, font, fontSize);\n\t\t}\n\t}\n\n\t/** Draws the characters on a Canvas and returns a texture */\n\tpublic createCharactersTexture(characters: string, font: string, fontSize: number): Texture {\n\t\tconst canvas = document.createElement('canvas');\n\t\tconst SIZE = 1024;\n\t\tconst MAX_PER_ROW = 16;\n\t\tconst CELL = SIZE / MAX_PER_ROW;\n\n\t\tcanvas.width = canvas.height = SIZE;\n\t\tconst texture = new CanvasTexture(canvas, undefined, RepeatWrapping, RepeatWrapping, NearestFilter, NearestFilter);\n\t\tconst context = canvas.getContext('2d');\n\n\t\tif (!context) {\n\t\t\tthrow new Error('Context not available');\n\t\t}\n\n\t\tcontext.clearRect(0, 0, SIZE, SIZE);\n\t\tcontext.font = `${fontSize}px ${font}`;\n\t\tcontext.textAlign = 'center';\n\t\tcontext.textBaseline = 'middle';\n\t\tcontext.fillStyle = '#fff';\n\n\t\tfor (let i = 0; i < characters.length; i++) {\n\t\t\tconst char = characters[i];\n\t\t\tconst x = i % MAX_PER_ROW;\n\t\t\tconst y = Math.floor(i / MAX_PER_ROW);\n\t\t\tcontext.fillText(char, x * CELL + CELL / 2, y * CELL + CELL / 2);\n\t\t}\n\n\t\ttexture.needsUpdate = true;\n\t\treturn texture;\n\t}\n}\n\nconst defaultOptions: ASCIIEffectOptions = {\n\tfont: 'arial',\n\tcharacters: ` .:,'-^=*+?!|0#X%WM@`,\n\tfontSize: 54,\n\tcellSize: 16,\n\tcolor: '#ffffff',\n\tinvert: false,\n};\n\n@Component({\n\tselector: 'ngtp-ascii',\n\tstandalone: true,\n\ttemplate: `\n\t\t<ngt-primitive *args=\"[effect()]\" />\n\t`,\n\timports: [NgtArgs],\n\tschemas: [CUSTOM_ELEMENTS_SCHEMA],\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class NgtpASCII {\n\toptions = input(defaultOptions, { transform: mergeInputs(defaultOptions) });\n\teffect = computed(() => new ASCIIEffect(this.options()));\n}\n","import { CUSTOM_ELEMENTS_SCHEMA, ChangeDetectionStrategy, Component, inject, input } from '@angular/core';\nimport { NgtArgs, extend } from 'angular-three';\nimport { BlendFunction, BloomEffect, BloomEffectOptions } from 'postprocessing';\nimport { NgtpEffect, NgtpEffectBlendMode, NgtpEffectHostDirective, provideDefaultEffectOptions } from '../effect';\n\nextend({ BloomEffect });\n\n@Component({\n\tselector: 'ngtp-bloom',\n\tstandalone: true,\n\ttemplate: `\n\t\t<ngt-bloom-effect *args=\"[options()]\" [camera]=\"effect.camera()\">\n\t\t\t<ngtp-effect-blend-mode />\n\t\t\t<ng-content />\n\t\t</ngt-bloom-effect>\n\t`,\n\timports: [NgtArgs, NgtpEffectBlendMode],\n\tschemas: [CUSTOM_ELEMENTS_SCHEMA],\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n\thostDirectives: [NgtpEffectHostDirective],\n\tproviders: [provideDefaultEffectOptions({ blendFunction: BlendFunction.ADD })],\n})\nexport class NgtpBloom {\n\teffect = inject(NgtpEffect, { host: true });\n\toptions = input({} as Omit<BloomEffectOptions, 'blendFunction'>);\n}\n","import { CUSTOM_ELEMENTS_SCHEMA, ChangeDetectionStrategy, Component, inject, input } from '@angular/core';\nimport { NgtArgs, extend } from 'angular-three';\nimport { BrightnessContrastEffect } from 'postprocessing';\nimport { NgtpEffect, NgtpEffectBlendMode, NgtpEffectHostDirective } from '../effect';\n\nextend({ BrightnessContrastEffect });\n\nexport type BrightnessEffectOptions = NonNullable<ConstructorParameters<typeof BrightnessContrastEffect>[0]>;\n\n@Component({\n\tselector: 'ngtp-brightness-contrast',\n\tstandalone: true,\n\ttemplate: `\n\t\t<ngt-brightness-contrast-effect *args=\"[options()]\" [camera]=\"effect.camera()\">\n\t\t\t<ngtp-effect-blend-mode />\n\t\t\t<ng-content />\n\t\t</ngt-brightness-contrast-effect>\n\t`,\n\timports: [NgtArgs, NgtpEffectBlendMode],\n\tschemas: [CUSTOM_ELEMENTS_SCHEMA],\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n\thostDirectives: [NgtpEffectHostDirective],\n})\nexport class NgtpBrightnessContrast {\n\teffect = inject(NgtpEffect, { host: true });\n\toptions = input({} as Omit<BrightnessEffectOptions, 'blendFunction'>);\n}\n","import { CUSTOM_ELEMENTS_SCHEMA, ChangeDetectionStrategy, Component, inject, input } from '@angular/core';\nimport { NgtArgs, extend } from 'angular-three';\nimport { ChromaticAberrationEffect } from 'postprocessing';\nimport { NgtpEffect, NgtpEffectBlendMode, NgtpEffectHostDirective } from '../effect';\n\nextend({ ChromaticAberrationEffect });\n\nexport type ChromaticAberrationEffectOptions = Partial<\n\tNonNullable<ConstructorParameters<typeof ChromaticAberrationEffect>[0]>\n>;\n\n@Component({\n\tselector: 'ngtp-chromatic-aberration',\n\ttemplate: `\n\t\t<ngt-chromatic-aberration-effect *args=\"[options()]\" [camera]=\"effect.camera()\">\n\t\t\t<ngtp-effect-blend-mode />\n\t\t\t<ng-content />\n\t\t</ngt-chromatic-aberration-effect>\n\t`,\n\tstandalone: true,\n\tschemas: [CUSTOM_ELEMENTS_SCHEMA],\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n\timports: [NgtArgs, NgtpEffectBlendMode],\n\thostDirectives: [NgtpEffectHostDirective],\n})\nexport class NgtpChromaticAberration {\n\teffect = inject(NgtpEffect, { host: true });\n\toptions = input({} as Omit<ChromaticAberrationEffectOptions, 'blendFunction'>);\n}\n","import { CUSTOM_ELEMENTS_SCHEMA, ChangeDetectionStrategy, Component, input } from '@angular/core';\nimport { NgtArgs, extend } from 'angular-three';\nimport { mergeInputs } from 'ngxtension/inject-inputs';\nimport { BlendFunction, ColorAverageEffect } from 'postprocessing';\n\nextend({ ColorAverageEffect });\n\n@Component({\n\tselector: 'ngtp-color-average',\n\tstandalone: true,\n\ttemplate: `\n\t\t<ngt-color-average-effect *args=\"[options().blendFunction]\">\n\t\t\t<ng-content />\n\t\t</ngt-color-average-effect>\n\t`,\n\timports: [NgtArgs],\n\tschemas: [CUSTOM_ELEMENTS_SCHEMA],\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class NgtpColorAverage {\n\toptions = input(\n\t\t{ blendFunction: BlendFunction.NORMAL },\n\t\t{ transform: mergeInputs({ blendFunction: BlendFunction.NORMAL }) },\n\t);\n}\n","import { CUSTOM_ELEMENTS_SCHEMA, ChangeDetectionStrategy, Component, inject, input } from '@angular/core';\nimport { NgtArgs, extend } from 'angular-three';\nimport { ColorDepthEffect } from 'postprocessing';\nimport { NgtpEffect, NgtpEffectBlendMode, NgtpEffectHostDirective } from '../effect';\n\nextend({ ColorDepthEffect });\n\nexport type ColorDepthEffectOptions = Partial<NonNullable<ConstructorParameters<typeof ColorDepthEffect>[0]>>;\n\n@Component({\n\tselector: 'ngtp-color-depth',\n\ttemplate: `\n\t\t<ngt-color-depth-effect *args=\"[options()]\" [camera]=\"effect.camera()\">\n\t\t\t<ngtp-effect-blend-mode />\n\t\t\t<ng-content />\n\t\t</ngt-color-depth-effect>\n\t`,\n\tstandalone: true,\n\tschemas: [CUSTOM_ELEMENTS_SCHEMA],\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n\timports: [NgtArgs, NgtpEffectBlendMode],\n\thostDirectives: [NgtpEffectHostDirective],\n})\nexport class NgtpColorDepth {\n\teffect = inject(NgtpEffect, { host: true });\n\toptions = input({} as Omit<ColorDepthEffectOptions, 'blendFunction'>);\n}\n","import { CUSTOM_ELEMENTS_SCHEMA, ChangeDetectionStrategy, Component, inject, input } from '@angular/core';\nimport { NgtArgs, extend } from 'angular-three';\nimport { DepthEffect } from 'postprocessing';\nimport { NgtpEffect, NgtpEffectBlendMode, NgtpEffectHostDirective } from '../effect';\n\nextend({ DepthEffect });\n\nexport type DepthEffectOptions = Partial<NonNullable<ConstructorParameters<typeof DepthEffect>[0]>>;\n\n@Component({\n\tselector: 'ngtp-depth',\n\ttemplate: `\n\t\t<ngt-depth-effect *args=\"[options()]\" [camera]=\"effect.camera()\">\n\t\t\t<ngtp-effect-blend-mode />\n\t\t\t<ng-content />\n\t\t</ngt-depth-effect>\n\t`,\n\tstandalone: true,\n\tschemas: [CUSTOM_ELEMENTS_SCHEMA],\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n\timports: [NgtArgs, NgtpEffectBlendMode],\n\thostDirectives: [NgtpEffectHostDirective],\n})\nexport class NgtpDepth {\n\teffect = inject(NgtpEffect, { host: true });\n\toptions = input({} as Omit<DepthEffectOptions, 'blendFunction'>);\n}\n","import {\n\tCUSTOM_ELEMENTS_SCHEMA,\n\tChangeDetectionStrategy,\n\tComponent,\n\tafterNextRender,\n\tcomputed,\n\tinject,\n\tinput,\n} from '@angular/core';\nimport { NgtArgs, NgtVector3 } from 'angular-three';\nimport { injectAutoEffect } from 'ngxtension/auto-effect';\nimport { DepthOfFieldEffect, MaskFunction } from 'postprocessing';\nimport { DepthPackingStrategies, Texture, Vector3 } from 'three';\nimport { NgtpEffectComposer } from '../effect-composer';\n\ntype DOFOptions = NonNullable<ConstructorParameters<typeof DepthOfFieldEffect>[1]> &\n\tPartial<{\n\t\ttarget: NgtVector3;\n\t\tdepthTexture: {\n\t\t\ttexture: Texture;\n\t\t\t// TODO: narrow to DepthPackingStrategies\n\t\t\tpacking: number;\n\t\t};\n\t}>;\n\n@Component({\n\tselector: 'ngtp-depth-of-field',\n\tstandalone: true,\n\ttemplate: `\n\t\t<ngt-primitive *args=\"[effect()]\" />\n\t`,\n\timports: [NgtArgs],\n\tschemas: [CUSTOM_ELEMENTS_SCHEMA],\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class NgtpDepthOfField {\n\tprivate autoEffect = injectAutoEffect();\n\tprivate effectComposer = inject(NgtpEffectComposer);\n\n\toptions = input({} as DOFOptions);\n\n\tprivate autoFocus = computed(() => this.options().target != null);\n\n\teffect = computed(() => {\n\t\tconst [camera, options, autoFocus] = [this.effectComposer.camera(), this.options(), this.autoFocus()];\n\n\t\tconst effect = new DepthOfFieldEffect(camera, options);\n\n\t\t// Creating a target enables autofocus, R3F will set via props\n\t\tif (autoFocus) effect.target = new Vector3();\n\t\t// Depth texture for depth picking with optional packing strategy\n\t\tif (options.depthTexture) {\n\t\t\teffect.setDepthTexture(options.depthTexture.texture, options.depthTexture.packing as DepthPackingStrategies);\n\t\t}\n\t\t// Temporary fix that restores DOF 6.21.3 behavior, everything since then lets shapes leak through the blur\n\t\tconst maskPass = (effect as any).maskPass;\n\t\tmaskPass.maskFunction = MaskFunction.MULTIPLY_RGB_SET_ALPHA;\n\n\t\treturn effect;\n\t});\n\n\tconstructor() {\n\t\tafterNextRender(() => {\n\t\t\tthis.autoEffect(() => {\n\t\t\t\tconst effect = this.effect();\n\t\t\t\treturn () => {\n\t\t\t\t\teffect.dispose();\n\t\t\t\t};\n\t\t\t});\n\t\t});\n\t}\n}\n","import { CUSTOM_ELEMENTS_SCHEMA, ChangeDetectionStrategy, Component, inject, input } from '@angular/core';\nimport { NgtArgs, extend } from 'angular-three';\nimport { DotScreenEffect } from 'postprocessing';\nimport { NgtpEffect, NgtpEffectBlendMode, NgtpEffectHostDirective } from '../effect';\n\nextend({ DotScreenEffect });\n\nexport type DotScreenEffectOptions = Partial<NonNullable<ConstructorParameters<typeof DotScreenEffect>[0]>>;\n\n@Component({\n\tselector: 'ngtp-dot-screen',\n\ttemplate: `\n\t\t<ngt-dot-screen-effect *args=\"[options()]\" [camera]=\"effect.camera()\">\n\t\t\t<ngtp-effect-blend-mode />\n\t\t\t<ng-content />\n\t\t</ngt-dot-screen-effect>\n\t`,\n\tstandalone: true,\n\tschemas: [CUSTOM_ELEMENTS_SCHEMA],\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n\timports: [NgtArgs, NgtpEffectBlendMode],\n\thostDirectives: [NgtpEffectHostDirective],\n})\nexport class NgtpDotScreen {\n\teffect = inject(NgtpEffect, { host: true });\n\toptions = input({} as Omit<DotScreenEffectOptions, 'blendFunction'>);\n}\n","import { CUSTOM_ELEMENTS_SCHEMA, ChangeDetectionStrategy, Component, inject, input } from '@angular/core';\nimport { NgtArgs, extend } from 'angular-three';\nimport { FXAAEffect } from 'postprocessing';\nimport { NgtpEffect, NgtpEffectBlendMode, NgtpEffectHostDirective } from '../effect';\n\nextend({ FXAAEffect });\n\nexport type FXAAEffectOptions = Partial<NonNullable<ConstructorParameters<typeof FXAAEffect>[0]>>;\n\n@Component({\n\tselector: 'ngtp-fxaa',\n\ttemplate: `\n\t\t<ngt-fXAA-effect *args=\"[options()]\" [camera]=\"effect.camera()\">\n\t\t\t<ngtp-effect-blend-mode />\n\t\t\t<ng-content />\n\t\t</ngt-fXAA-effect>\n\t`,\n\tstandalone: true,\n\tschemas: [CUSTOM_ELEMENTS_SCHEMA],\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n\timports: [NgtArgs, NgtpEffectBlendMode],\n\thostDirectives: [NgtpEffectHostDirective],\n})\nexport class NgtpFXAA {\n\teffect = inject(NgtpEffect, { host: true });\n\toptions = input({} as Omit<FXAAEffectOptions, 'blendFunction'>);\n}\n","import {\n\tCUSTOM_ELEMENTS_SCHEMA,\n\tChangeDetectionStrategy,\n\tComponent,\n\tafterNextRender,\n\tcomputed,\n\tinput,\n} from '@angular/core';\nimport { NgtArgs, NgtVector2, injectStore, pick, vector2 } from 'angular-three';\nimport { injectAutoEffect } from 'ngxtension/auto-effect';\nimport { mergeInputs } from 'ngxtension/inject-inputs';\nimport { GlitchEffect, GlitchMode } from 'postprocessing';\n\nexport type GlitchOptions = NonNullable<ConstructorParameters<typeof GlitchEffect>[0]> &\n\tPartial<{\n\t\tmode: GlitchMode;\n\t\tactive: boolean;\n\t\tdelay: NgtVector2;\n\t\tduration: NgtVector2;\n\t\tchromaticAberrationOffset: NgtVector2;\n\t\tstrength: NgtVector2;\n\t}>;\n\n@Component({\n\tselector: 'ngtp-glitch',\n\tstandalone: true,\n\ttemplate: `\n\t\t<ngt-primitive *args=\"[effect()]\" />\n\t`,\n\timports: [NgtArgs],\n\tschemas: [CUSTOM_ELEMENTS_SCHEMA],\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class NgtpGlitch {\n\tprivate autoEffect = injectAutoEffect();\n\tprivate store = injectStore();\n\tprivate invalidate = this.store.select('invalidate');\n\n\toptions = input({ active: true } as GlitchOptions, { transform: mergeInputs({ active: true }) });\n\n\tprivate active = pick(this.options, 'active');\n\tprivate mode = pick(this.options, 'mode');\n\n\tprivate delay = vector2(this.options, 'delay');\n\tprivate duration = vector2(this.options, 'duration');\n\tprivate chromaticAberrationOffset = vector2(this.options, 'chromaticAberrationOffset');\n\tprivate strength = vector2(this.options, 'strength');\n\n\teffect = computed(() => {\n\t\tconst [\n\t\t\t{ ratio, dtSize, columns, blendFunction, perturbationMap },\n\t\t\tdelay,\n\t\t\tduration,\n\t\t\tchromaticAberrationOffset,\n\t\t\tstrength,\n\t\t] = [this.options(), this.delay(), this.duration(), this.chromaticAberrationOffset(), this.strength()];\n\t\treturn new GlitchEffect({\n\t\t\tratio,\n\t\t\tdtSize,\n\t\t\tcolumns,\n\t\t\tblendFunction,\n\t\t\tperturbationMap,\n\t\t\tdelay,\n\t\t\tduration,\n\t\t\tchromaticAberrationOffset,\n\t\t\tstrength,\n\t\t});\n\t});\n\n\tconstructor() {\n\t\tafterNextRender(() => {\n\t\t\tthis.autoEffect(() => {\n\t\t\t\tconst effect = this.effect();\n\t\t\t\treturn () => effect.dispose();\n\t\t\t});\n\n\t\t\tthis.autoEffect(() => {\n\t\t\t\tconst [effect, invalidate, mode, active] = [this.effect(), this.invalidate(), this.mode(), this.active()];\n\t\t\t\teffect.mode = active ? mode || GlitchMode.SPORADIC : GlitchMode.DISABLED;\n\t\t\t\tinvalidate();\n\t\t\t});\n\t\t});\n\t}\n}\n","import {\n\tCUSTOM_ELEMENTS_SCHEMA,\n\tChangeDetectionStrategy,\n\tComponent,\n\tElementRef,\n\tafterNextRender,\n\tcomputed,\n\tinject,\n\tinput,\n} from '@angular/core';\nimport { NgtArgs, is } from 'angular-three';\nimport { injectAutoEffect } from 'ngxtension/auto-effect';\nimport { GodRaysEffect } from 'postprocessing';\nimport { Mesh, Points } from 'three';\nimport { NgtpEffectComposer } from '../effect-composer';\n\ntype GodRaysOptions = ConstructorParameters<typeof GodRaysEffect>[2] & {\n\tsun: Mesh | Points | ElementRef<Mesh | Points>;\n};\n\n@Component({\n\tselector: 'ngtp-god-rays',\n\tstandalone: true,\n\ttemplate: `\n\t\t<ngt-primitive *args=\"[effect()]\" />\n\t`,\n\timports: [NgtArgs],\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n\tschemas: [CUSTOM_ELEMENTS_SCHEMA],\n})\nexport class NgtpGodRays {\n\tprivate autoEffect = injectAutoEffect();\n\tprivate effectComposer = inject(NgtpEffectComposer);\n\n\toptions = input({} as GodRaysOptions);\n\n\teffect = computed(() => {\n\t\tconst [camera, { sun, ...options }] = [this.effectComposer.camera(), this.options()];\n\t\treturn new GodRaysEffect(camera, is.ref(sun) ? sun.nativeElement : sun, options);\n\t});\n\n\tconstructor() {\n\t\tafterNextRender(() => {\n\t\t\tthis.autoEffect(() => {\n\t\t\t\tconst [sun, effect] = [this.options().sun, this.effect()];\n\t\t\t\teffect.lightSource = is.ref(sun) ? sun.nativeElement : sun;\n\t\t\t});\n\t\t});\n\t}\n}\n","import {\n\tCUSTOM_ELEMENTS_SCHEMA,\n\tChangeDetectionStrategy,\n\tComponent,\n\tafterNextRender,\n\tcomputed,\n\tinput,\n} from '@angular/core';\nimport { NgtArgs, injectStore, pick } from 'angular-three';\nimport { injectAutoEffect } from 'ngxtension/auto-effect';\nimport { GridEffect } from 'postprocessing';\n\ntype GridOptions = NonNullable<ConstructorParameters<typeof GridEffect>[0]> &\n\tPartial<{ size: { width: number; height: number } }>;\n\n@Component({\n\tselector: 'ngtp-grid',\n\tstandalone: true,\n\ttemplate: `\n\t\t<ngt-primitive *args=\"[effect()]\" />\n\t`,\n\timports: [NgtArgs],\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n\tschemas: [CUSTOM_ELEMENTS_SCHEMA],\n})\nexport class NgtpGrid {\n\tprivate autoEffect = injectAutoEffect();\n\tprivate store = injectStore();\n\tprivate invalidate = this.store.select('invalidate');\n\n\toptions = input({} as GridOptions);\n\tprivate size = pick(this.options, 'size');\n\n\teffect = computed(() => {\n\t\tconst { size: _, ...options } = this.options();\n\t\treturn new GridEffect(options);\n\t});\n\n\tconstructor() {\n\t\tafterNextRender(() => {\n\t\t\tthis.autoEffect(() => {\n\t\t\t\tconst [size, effect] = [this.size(), this.effect()];\n\t\t\t\tif (size) {\n\t\t\t\t\teffect.setSize(size.width, size.height);\n\t\t\t\t}\n\t\t\t});\n\t\t});\n\t}\n}\n","import { CUSTOM_ELEMENTS_SCHEMA, ChangeDetectionStrategy, Component, inject, input } from '@angular/core';\nimport { NgtArgs, extend } from 'angular-three';\nimport { HueSaturationEffect } from 'postprocessing';\nimport { NgtpEffect, NgtpEffectBlendMode, NgtpEffectHostDirective } from '../effect';\n\nextend({ HueSaturationEffect });\n\nexport type HueSaturationEffectOptions = Partial<NonNullable<ConstructorParameters<typeof HueSaturationEffect>[0]>>;\n\n@Component({\n\tselector: 'ngtp-hue-saturation',\n\ttemplate: `\n\t\t<ngt-hue-saturation-effect *args=\"[options()]\" [camera]=\"effect.camera()\">\n\t\t\t<ngtp-effect-blend-mode />\n\t\t\t<ng-content />\n\t\t</ngt-hue-saturation-effect>\n\t`,\n\tstandalone: true,\n\tschemas: [CUSTOM_ELEMENTS_SCHEMA],\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n\timports: [NgtArgs, NgtpEffectBlendMode],\n\thostDirectives: [NgtpEffectHostDirective],\n})\nexport class NgtpHueSaturation {\n\teffect = inject(NgtpEffect, { host: true });\n\toptions = input({} as Omit<HueSaturationEffectOptions, 'blendFunction'>);\n}\n","// Created by Anderson Mancini 2023\n// React Three Fiber Ultimate LensFlare\n\nimport {\n\tCUSTOM_ELEMENTS_SCHEMA,\n\tChangeDetectionStrategy,\n\tComponent,\n\tafterNextRender,\n\tcomputed,\n\tinject,\n\tinput,\n} from '@angular/core';\nimport { NgtArgs, injectBeforeRender, injectStore } from 'angular-three';\nimport { easing } from 'maath';\nimport { injectAutoEffect } from 'ngxtension/auto-effect';\nimport { mergeInputs } from 'ngxtension/inject-inputs';\nimport { BlendFunction, Effect } from 'postprocessing';\nimport { Color, Mesh, Texture, Uniform, Vector2, Vector3 } from 'three';\nimport { NgtpEffectComposer } from '../effect-composer';\n\nconst LensFlareShader = {\n\tfragmentShader: /* language=glsl glsl */ `\n\n uniform float iTime;\n uniform vec2 lensPosition;\n uniform vec2 iResolution;\n uniform vec3 colorGain;\n uniform float starPoints;\n uniform float glareSize;\n uniform float flareSize;\n uniform float flareSpeed;\n uniform float flareShape;\n uniform float haloScale;\n uniform float opacity;\n uniform bool animated;\n uniform bool anamorphic;\n uniform bool enabled;\n uniform bool secondaryGhosts;\n uniform bool starBurst;\n uniform float ghostScale;\n uniform bool aditionalStreaks;\n uniform sampler2D lensDirtTexture;\n vec2 vxtC;\n\n float rndf(float n){return fract(sin(n) * 43758.5453123);}float niz(float p){float fl = floor(p);float fc = fract(p);return mix(rndf(fl),rndf(fl + 1.0), fc);}\n vec3 hsv2rgb(vec3 c){vec4 k = vec4(1.0, 2.0 / 3.0, 1.0 / 3.0, 3.0);vec3 p = abs(fract(c.xxx + k.xyz) * 6.0 - k.www);return c.z * mix(k.xxx, clamp(p - k.xxx, 0.0, 1.0), c.y);}\n float satU(float x){return clamp(x, 0.,1.);}vec2 rtU(vec2 naz, float rtn){return vec2(cos(rtn) * naz.x + sin(rtn) * naz.y,cos(rtn) * naz.y - sin(rtn) * naz.x);}\n vec3 drwF(vec2 p, float intensity, float rnd, float speed, int id){float flhos = (1. / 32.) * float(id) * 0.1;float lingrad = distance(vec2(0.), p);float expg = 1. / exp(lingrad * (fract(rnd) * 0.66 + 0.33));vec3 qzTg = hsv2rgb(vec3( fract( (expg * 8.) + speed * flareSpeed + flhos), pow(1.-abs(expg*2.-1.), 0.45), 20.0 * expg * intensity));float internalStarPoints;if(anamorphic){internalStarPoints = 1.0;} else{internalStarPoints = starPoints;}float ams = length(p * flareShape * sin(internalStarPoints * atan(p.x, p.y)));float kJhg = pow(1.-satU(ams), ( anamorphic ? 100. : 12.));kJhg += satU(expg-0.9) * 3.;kJhg = pow(kJhg * expg, 8. + (1.-intensity) * 5.);if(flareSpeed > 0.0){return vec3(kJhg) * qzTg;} else{return vec3(kJhg) * flareSize * 15.;}}\n float ams2(vec3 a, vec3 b) { return abs(a.x - b.x) + abs(a.y - b.y) + abs(a.z - b.z);}vec3 satU(vec3 x){return clamp(x, vec3(0.0), vec3(1.0));}\n float glR(vec2 naz, vec2 pos, float zsi){vec2 mni;if(animated){mni = rtU(naz-pos, iTime * 0.1);} else{mni = naz-pos;}float ang = atan(mni.y, mni.x) * (anamorphic ? 1.0 : starPoints);float ams2 = length(mni);ams2 = pow(ams2, .9);float f0 = 1.0/(length(naz-pos)*(1.0/zsi*16.0)+.2);return f0+f0*(sin((ang))*.2 +.3);}\n float sdHex(vec2 p){p = abs(p);vec2 q = vec2(p.x*2.0*0.5773503, p.y + p.x*0.5773503);return dot(step(q.xy,q.yx), 1.0-q.yx);}float fpow(float x, float k){return x > k ? pow((x-k)/(1.0-k),2.0) : 0.0;}\n vec3 rHx(vec2 naz, vec2 p, float s, vec3 col){naz -= p;if (abs(naz.x) < 0.2*s && abs(naz.y) < 0.2*s){return mix(vec3(0),mix(vec3(0),col,0.1 + fpow(length(naz/s),0.1)*10.0),smoothstep(0.0,0.1,sdHex(naz*20.0/s)));}return vec3(0);}\n vec3 mLs(vec2 naz, vec2 pos){vec2 mni = naz-pos;vec2 zxMp = naz*(length(naz));float ang = atan(mni.x,mni.y);float f0 = .3/(length(naz-pos)*16.0+1.0);f0 = f0*(sin(niz(sin(ang*3.9-(animated ? iTime : 0.0) * 0.3) * starPoints))*.2 );float f1 = max(0.01-pow(length(naz+1.2*pos),1.9),.0)*7.0;float f2 = max(.9/(10.0+32.0*pow(length(zxMp+0.99*pos),2.0)),.0)*0.35;float f22 = max(.9/(11.0+32.0*pow(length(zxMp+0.85*pos),2.0)),.0)*0.23;float f23 = max(.9/(12.0+32.0*pow(length(zxMp+0.95*pos),2.0)),.0)*0.6;vec2 ztX = mix(naz,zxMp, 0.1);float f4 = max(0.01-pow(length(ztX+0.4*pos),2.9),.0)*4.02;float f42 = max(0.0-pow(length(ztX+0.45*pos),2.9),.0)*4.1;float f43 = max(0.01-pow(length(ztX+0.5*pos),2.9),.0)*4.6;ztX = mix(naz,zxMp,-.4);float f5 = max(0.01-pow(length(ztX+0.1*pos),5.5),.0)*2.0;float f52 = max(0.01-pow(length(ztX+0.2*pos),5.5),.0)*2.0;float f53 = max(0.01-pow(length(ztX+0.1*pos),5.5),.0)*2.0;ztX = mix(naz,zxMp, 2.1);float f6 = max(0.01-pow(length(ztX-0.3*pos),1.61),.0)*3.159;float f62 = max(0.01-pow(length(ztX-0.325*pos),1.614),.0)*3.14;float f63 = max(0.01-pow(length(ztX-0.389*pos),1.623),.0)*3.12;vec3 c = vec3(glR(naz,pos, glareSize));vec2 prot;if(animated){prot = rtU(naz - pos, (iTime * 0.1));} else if(anamorphic){prot = rtU(naz - pos, 1.570796);} else {prot = naz - pos;}c += drwF(prot, (anamorphic ? flareSize * 10. : flareSize), 0.1, iTime, 1);c.r+=f1+f2+f4+f5+f6; c.g+=f1+f22+f42+f52+f62; c.b+=f1+f23+f43+f53+f63;c = c*1.3 * vec3(length(zxMp)+.09);c+=vec3(f0);return c;}\n vec3 cc(vec3 clr, float fct,float fct2){float w = clr.x+clr.y+clr.z;return mix(clr,vec3(w)*fct,w*fct2);}float rnd(vec2 p){float f = fract(sin(dot(p, vec2(12.1234, 72.8392) )*45123.2));return f;}float rnd(float w){float f = fract(sin(w)*1000.);return f;}\n float rShp(vec2 p, int N){float f;float a=atan(p.x,p.y)+.2;float b=6.28319/float(N);f=smoothstep(.5,.51, cos(floor(.5+a/b)*b-a)*length(p.xy)* 2.0 -ghostScale);return f;}\n vec3 drC(vec2 p, float zsi, float dCy, vec3 clr, vec3 clr2, float ams2, vec2 esom){float l = length(p + esom*(ams2*2.))+zsi/2.;float l2 = length(p + esom*(ams2*4.))+zsi/3.;float c = max(0.01-pow(length(p + esom*ams2), zsi*ghostScale), 0.0)*10.;float c1 = max(0.001-pow(l-0.3, 1./40.)+sin(l*20.), 0.0)*3.;float c2 = max(0.09/pow(length(p-esom*ams2/.5)*1., .95), 0.0)/20.;float s = max(0.02-pow(rShp(p*5. + esom*ams2*5. + dCy, 6) , 1.), 0.0)*1.5;clr = cos(vec3(0.44, .24, .2)*8. + ams2*4.)*0.5+.5;vec3 f = c*clr;f += c1*clr;f += c2*clr;f += s*clr;return f-0.01;}\n vec4 geLC(float x){return vec4(vec3(mix(mix(mix(mix(mix(mix(mix(mix(mix(mix(mix(mix(mix(mix(mix(vec3(0., 0., 0.),vec3(0., 0., 0.), smoothstep(0.0, 0.063, x)),vec3(0., 0., 0.), smoothstep(0.063, 0.125, x)),vec3(0.0, 0., 0.), smoothstep(0.125, 0.188, x)),vec3(0.188, 0.131, 0.116), smoothstep(0.188, 0.227, x)),vec3(0.31, 0.204, 0.537), smoothstep(0.227, 0.251, x)),vec3(0.192, 0.106, 0.286), smoothstep(0.251, 0.314, x)),vec3(0.102, 0.008, 0.341), smoothstep(0.314, 0.392, x)),vec3(0.086, 0.0, 0.141), smoothstep(0.392, 0.502, x)),vec3(1.0, 0.31, 0.0), smoothstep(0.502, 0.604, x)),vec3(.1, 0.1, 0.1), smoothstep(0.604, 0.643, x)),vec3(1.0, 0.929, 0.0), smoothstep(0.643, 0.761, x)),vec3(1.0, 0.086, 0.424), smoothstep(0.761, 0.847, x)),vec3(1.0, 0.49, 0.0), smoothstep(0.847, 0.89, x)),vec3(0.945, 0.275, 0.475), smoothstep(0.89, 0.941, x)),vec3(0.251, 0.275, 0.796), smoothstep(0.941, 1.0, x))),1.0);}\n float diTN(vec2 p){vec2 f = fract(p);f = (f * f) * (3.0 - (2.0 * f));float n = dot(floor(p), vec2(1.0, 157.0));vec4 a = fract(sin(vec4(n + 0.0, n + 1.0, n + 157.0, n + 158.0)) * 43758.5453123);return mix(mix(a.x, a.y, f.x), mix(a.z, a.w, f.x), f.y);}\n float fbm(vec2 p){const mat2 m = mat2(0.80, -0.60, 0.60, 0.80);float f = 0.0;f += 0.5000*diTN(p); p = m*p*2.02;f += 0.2500*diTN(p); p = m*p*2.03;f += 0.1250*diTN(p); p = m*p*2.01;f += 0.0625*diTN(p);return f/0.9375;}\n vec4 geLS(vec2 p){vec2 pp = (p - vec2(0.5)) * 2.0;float a = atan(pp.y, pp.x);vec4 cp = vec4(sin(a * 1.0), length(pp), sin(a * 13.0), sin(a * 53.0));float d = sin(clamp(pow(length(vec2(0.5) - p) * 0.5 + haloScale /2., 5.0), 0.0, 1.0) * 3.14159);vec3 c = vec3(d) * vec3(fbm(cp.xy * 16.0) * fbm(cp.zw * 9.0) * max(max(max(max(0.5, sin(a * 1.0)), sin(a * 3.0) * 0.8), sin(a * 7.0) * 0.8), sin(a * 9.0) * 10.6));c *= vec3(mix(2.0, (sin(length(pp.xy) * 256.0) * 0.5) + 0.5, sin((clamp((length(pp.xy) - 0.875) / 0.1, 0.0, 1.0) + 0.0) * 2.0 * 3.14159) * 1.5) + 0.5) * 0.3275;return vec4(vec3(c * 1.0), d);}\n vec4 geLD(vec2 p){p.xy += vec2(fbm(p.yx * 3.0), fbm(p.yx * 2.0)) * 0.0825;vec3 o = vec3(mix(0.125, 0.25, max(max(smoothstep(0.1, 0.0, length(p - vec2(0.25))),smoothstep(0.4, 0.0, length(p - vec2(0.75)))),smoothstep(0.8, 0.0, length(p - vec2(0.875, 0.125))))));o += vec3(max(fbm(p * 1.0) - 0.5, 0.0)) * 0.5;o += vec3(max(fbm(p * 2.0) - 0.5, 0.0)) * 0.5;o += vec3(max(fbm(p * 4.0) - 0.5, 0.0)) * 0.25;o += vec3(max(fbm(p * 8.0) - 0.75, 0.0)) * 1.0;o += vec3(max(fbm(p * 16.0) - 0.75, 0.0)) * 0.75;o += vec3(max(fbm(p * 64.0) - 0.75, 0.0)) * 0.5;return vec4(clamp(o, vec3(0.15), vec3(1.0)), 1.0);}\n vec4 txL(sampler2D tex, vec2 xtC){if(((xtC.x < 0.) || (xtC.y < 0.)) || ((xtC.x > 1.) || (xtC.y > 1.))){return vec4(0.0);}else{return texture(tex, xtC); }}\n vec4 txD(sampler2D tex, vec2 xtC, vec2 dir, vec3 ditn) {return vec4(txL(tex, (xtC + (dir * ditn.r))).r,txL(tex, (xtC + (dir * ditn.g))).g,txL(tex, (xtC + (dir * ditn.b))).b,1.0);}\n vec4 strB(){vec2 aspXtc = vec2(1.0) - (((vxtC - vec2(0.5)) * vec2(1.0)) + vec2(0.5)); vec2 xtC = vec2(1.0) - vxtC; vec2 ghvc = (vec2(0.5) - xtC) * 0.3 - lensPosition; vec2 ghNm = normalize(ghvc * vec2(1.0)) * vec2(1.0);vec2 haloVec = normalize(ghvc) * 0.6;vec2 hlNm = ghNm * 0.6;vec2 texelSize = vec2(1.0) / vec2(iResolution.xy);vec3 ditn = vec3(-(texelSize.x * 1.5), 0.2, texelSize.x * 1.5);vec4 c = vec4(0.0);for (int i = 0; i < 8; i++) {vec2 offset = xtC + (ghvc * float(i));c += txD(lensDirtTexture, offset, ghNm, ditn) * pow(max(0.0, 1.0 - (length(vec2(0.5) - offset) / length(vec2(0.5)))), 10.0);}vec2 uyTrz = xtC + hlNm; return (c * geLC((length(vec2(0.5) - aspXtc) / length(vec2(haloScale))))) +(txD(lensDirtTexture, uyTrz, ghNm, ditn) * pow(max(0.0, 1.0 - (length(vec2(0.5) - uyTrz) / length(vec2(0.5)))), 10.0));}\n void mainImage(vec4 v,vec2 r,out vec4 i){vec2 g=r-.5;g.y*=iResolution.y/iResolution.x;vec2 l=lensPosition*.5;l.y*=iResolution.y/iResolution.x;vec3 f=mLs(g,l)*20.*colorGain/256.;if(aditionalStreaks){vec3 o=vec3(.9,.2,.1),p=vec3(.3,.1,.9);for(float n=0.;n<10.;n++)f+=drC(g,pow(rnd(n*2e3)*2.8,.1)+1.41,0.,o+n,p+n,rnd(n*20.)*3.+.2-.5,lensPosition);}if(secondaryGhosts){vec3 n=vec3(0);n+=rHx(g,-lensPosition*.25,ghostScale*1.4,vec3(.25,.35,0));n+=rHx(g,lensPosition*.25,ghostScale*.5,vec3(1,.5,.5));n+=rHx(g,lensPosition*.1,ghostScale*1.6,vec3(1));n+=rHx(g,lensPosition*1.8,ghostScale*2.,vec3(0,.5,.75));n+=rHx(g,lensPosition*1.25,ghostScale*.8,vec3(1,1,.5));n+=rHx(g,-lensPosition*1.25,ghostScale*5.,vec3(.5,.5,.25));n+=fpow(1.-abs(distance(lensPosition*.8,g)-.7),.985)*colorGain/2100.;f+=n;}if(starBurst){vxtC=g+.5;vec4 n=geLD(g);float o=1.-clamp(0.5,0.,.5)*2.;n+=mix(n,pow(n*2.,vec4(2))*.5,o);float s=(g.x+g.y)*(1./6.);vec2 d=mat2(cos(s),-sin(s),sin(s),cos(s))*vxtC;n+=geLS(d)*2.;f+=clamp(n.xyz*strB().xyz,.01,1.);}i=enabled?vec4(mix(f,vec3(0),opacity)+v.xyz,v.w):vec4(v);}\n`,\n};\n\nexport class LensFlareEffect extends Effect {\n\tconstructor({\n\t\tblendFunction = BlendFunction.NORMAL,\n\t\tenabled = true,\n\t\tglareSize = 0.2,\n\t\tlensPosition = [0.01, 0.01],\n\t\tiResolution = [0, 0],\n\t\tstarPoints = 6,\n\t\tflareSize = 0.01,\n\t\tflareSpeed = 0.01,\n\t\tflareShape = 0.01,\n\t\tanimated = true,\n\t\tanamorphic = false,\n\t\tcolorGain = new Color(20, 20, 20),\n\t\tlensDirtTexture = null as Texture | null,\n\t\thaloScale = 0.5,\n\t\tsecondaryGhosts = true,\n\t\taditionalStreaks = true,\n\t\tghostScale = 0.0,\n\t\topacity = 1.0,\n\t\tstarBurst = false,\n\t} = {}) {\n\t\tsuper('LensFlareEffect', LensFlareShader.fragmentShader, {\n\t\t\tblendFunction,\n\t\t\tuniforms: new Map<string, Uniform>([\n\t\t\t\t['enabled', new Uniform(enabled)],\n\t\t\t\t['glareSize', new Uniform(glareSize)],\n\t\t\t\t['lensPosition', new Uniform(lensPosition)],\n\t\t\t\t['iTime', new Uniform(0)],\n\t\t\t\t['iResolution', new Uniform(iResolution)],\n\t\t\t\t['starPoints', new Uniform(starPoints)],\n\t\t\t\t['flareSize', new Uniform(flareSize)],\n\t\t\t\t['flareSpeed', new Uniform(flareSpeed)],\n\t\t\t\t['flareShape', new Uniform(flareShape)],\n\t\t\t\t['animated', new Uniform(animated)],\n\t\t\t\t['anamorphic', new Uniform(anamorphic)],\n\t\t\t\t['colorGain', new Uniform(colorGain)],\n\t\t\t\t['lensDirtTexture', new Uniform(lensDirtTexture)],\n\t\t\t\t['haloScale', new Uniform(haloScale)],\n\t\t\t\t['secondaryGhosts', new Uniform(secondaryGhosts)],\n\t\t\t\t['aditionalStreaks', new Uniform(aditionalStreaks)],\n\t\t\t\t['ghostScale', new Uniform(ghostScale)],\n\t\t\t\t['starBurst', new Uniform(starBurst)],\n\t\t\t\t['opacity', new Uniform(opacity)],\n\t\t\t]),\n\t\t});\n\t}\n\n\toverride update(_renderer: any, _inputBuffer: any, deltaTime: number) {\n\t\tconst iTime = this.uniforms.get('iTime');\n\t\tif (iTime) {\n\t\t\tiTime.value += deltaTime;\n\t\t}\n\t}\n}\n\nexport type LensFlareOptions = ConstructorParameters<typeof LensFlareEffect>[0] & {\n\tposition: Vector3;\n\tfollowMouse: boolean;\n\tsmoothTime: number;\n};\n\nconst defaultOptions: LensFlareOptions = {\n\tposition: new Vector3(-25, 6, -60),\n\tfollowMouse: false,\n\tsmoothTime: 0.7,\n};\n\n@Component({\n\tselector: 'ngtp-lens-flare',\n\tstandalone: true,\n\ttemplate: `\n\t\t<ngt-primitive *args=\"[effect()]\" [dispose]=\"null\" />\n\t`,\n\timports: [NgtArgs],\n\tschemas: [CUSTOM_ELEMENTS_SCHEMA],\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class NgtpLensFlare {\n\tprivate autoEffect = injectAutoEffect();\n\tprivate store = injectStore();\n\tprivate viewport = this.store.select('viewport');\n\tprivate raycaster = this.store.select('raycaster');\n\tprivate pointer = this.store.select('pointer');\n\n\teffectComposer = inject(NgtpEffectComposer);\n\n\toptions = input(defaultOptions, { transform: mergeInputs(defaultOptions) });\n\n\tprivate projectedPosition = new Vector3();\n\tprivate mouse2d = new Vector2();\n\n\teffect = computed(() => {\n\t\tconst { position: _, followMouse: __, smoothTime: ___, ...options } = this.options();\n\t\treturn new LensFlareEffect(options);\n\t});\n\n\tconstructor() {\n\t\tafterNextRender(() => {\n\t\t\tthis.autoEffect(() => {\n\t\t\t\tconst [effect, viewport] = [this.effect(), this.viewport()];\n\t\t\t\tconst iResolution = effect.uniforms.get('iResolution');\n\t\t\t\tif (iResolution) {\n\t\t\t\t\tiResolution.value.x = viewport.width;\n\t\t\t\t\tiResolution.value.y = viewport.height;\n\t\t\t\t}\n\t\t\t});\n\t\t});\n\n\t\tinjectBeforeRender(({ delta }) => {\n\t\t\tconst [effect] = [this.effect()];\n\t\t\tif (!effect) return;\n\n\t\t\tconst [{ followMouse, position, smoothTime }, pointer, camera, scene, raycaster] = [\n\t\t\t\tthis.options(),\n\t\t\t\tthis.pointer(),\n\t\t\t\tthis.effectComposer.camera(),\n\t\t\t\tthis.effectComposer.scene(),\n\t\t\t\tthis.raycaster(),\n\t\t\t];\n\n\t\t\tconst uLensPosition = effect.uniforms.get('lensPosition');\n\t\t\tconst uOpacity = effect.uniforms.get('opacity');\n\t\t\tif (!uLensPosition || !uOpacity) return;\n\n\t\t\tlet target = 1;\n\n\t\t\tif (followMouse) {\n\t\t\t\tuLensPosition.value.x = pointer.x;\n\t\t\t\tuLensPosition.value.y = pointer.y;\n\t\t\t\ttarget = 0;\n\t\t\t} else {\n\t\t\t\tthis.projectedPosition.copy(position).project(camera);\n\t\t\t\tif (this.projectedPosition.z > 1) return;\n\n\t\t\t\tuLensPosition.value.x = this.projectedPosition.x;\n\t\t\t\tuLensPosition.value.y = this.projectedPosition.y;\n\n\t\t\t\tthis.mouse2d.set(this.projectedPosition.x, this.projectedPosition.y);\n\t\t\t\traycaster.setFromCamera(this.mouse2d, camera);\n\t\t\t\tconst intersects = raycaster.intersectObjects(scene.children, true);\n\t\t\t\tconst { object } = intersects[0] ?? {};\n\t\t\t\tif (object) {\n\t\t\t\t\tif (object.userData?.['lensflare'] === 'no-occlusion') {\n\t\t\t\t\t\ttarget = 0;\n\t\t\t\t\t} else if (object instanceof Mesh) {\n\t\t\t\t\t\tif (object.material.uniforms?._transmission?.value > 0.2) {\n\t\t\t\t\t\t\t//Check for MeshTransmissionMaterial\n\t\t\t\t\t\t\ttarget = 0.2;\n\t\t\t\t\t\t} else if (object.material._transmission && object.material._transmission > 0.2) {\n\t\t\t\t\t\t\t//Check for MeshPhysicalMaterial with transmission setting\n\t\t\t\t\t\t\ttarget = 0.2;\n\t\t\t\t\t\t} else if (object.material.transparent) {\n\t\t\t\t\t\t\t// Check for OtherMaterials with transparent parameter\n\t\t\t\t\t\t\ttarget = object.material.opacity;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\teasing.damp(uOpacity, 'value', target, smoothTime, delta);\n\t\t});\n\t}\n}\n","import {\n\tCUSTOM_ELEMENTS_SCHEMA,\n\tChangeDetectionStrategy,\n\tComponent,\n\tafterNextRender,\n\tcomputed,\n\tinput,\n} from '@angular/core';\nimport { NgtArgs, injectStore, pick } from 'angular-three';\nimport { injectAutoEffect } from 'ngxtension/auto-effect';\nimport { BlendFunction, LUT3DEffect } from 'postprocessing';\nimport { Texture } from 'three';\n\nexport interface LUTOptions {\n\tlut: Texture;\n\tblendFunction?: BlendFunction;\n\ttetrahedralInterpolation?: boolean;\n}\n\n@Component({\n\tselector: 'ngtp-lut',\n\ttemplate: `\n\t\t<ngt-primitive *args=\"[effect()]\" [dispose]=\"null\" />\n\t`,\n\timports: [NgtArgs],\n\tstandalone: true,\n\tschemas: [CUSTOM_ELEMENTS_SCHEMA],\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class NgtpLUT {\n\tprivate autoEffect = injectAutoEffect();\n\tprivate store = injectStore();\n\tprivate invalidate = this.store.select('invalidate');\n\n\toptions = input({} as LUTOptions);\n\tprivate lut = pick(this.options, 'lut');\n\n\teffect = computed(() => {\n\t\tconst [lut, { lut: _, ...options }] = [this.lut(), this.options()];\n\t\treturn new LUT3DEffect(lut, options);\n\t});\n\n\tconstructor() {\n\t\tafterNextRender(() => {\n\t\t\tthis.autoEffect(() => {\n\t\t\t\tconst [effect, { lut, tetrahedralInterpolation }, invalidate] = [\n\t\t\t\t\tthis.effect(),\n\t\t\t\t\tthis.options(),\n\t\t\t\t\tthis.invalidate(),\n\t\t\t\t];\n\n\t\t\t\tif (tetrahedralInterpolation) effect.tetrahedralInterpolation = tetrahedralInterpolation;\n\t\t\t\tif (lut) effect.lut = lut;\n\t\t\t\tinvalidate();\n\t\t\t});\n\t\t});\n\t}\n}\n","import { CUSTOM_ELEMENTS_SCHEMA, ChangeDetectionStrategy, Component, inject, input } from '@angular/core';\nimport { NgtArgs, extend } from 'angular-three';\nimport { BlendFunction, NoiseEffect } from 'postprocessing';\nimport { NgtpEffect, NgtpEffectBlendMode, NgtpEffectHostDirective, provideDefaultEffectOptions } from '../effect';\n\nextend({ NoiseEffect });\n\nexport type NoiseEffectOptions = Partial<NonNullable<ConstructorParameters<typeof NoiseEffect>[0]>>;\n\n@Component({\n\tselector: 'ngtp-noise',\n\ttemplate: `\n\t\t<ngt-noise-effect *args=\"[options()]\" [camera]=\"effect.camera()\">\n\t\t\t<ngtp-effect-blend-mode />\n\t\t\t<ng-content />\n\t\t</ngt-noise-effect>\n\t`,\n\tstandalone: true,\n\tschemas: [CUSTOM_ELEMENTS_SCHEMA],\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n\timports: [NgtArgs, NgtpEffectBlendMode],\n\thostDirectives: [NgtpEffectHostDirective],\n\tproviders: [provideDefaultEffectOptions({ blendFunction: BlendFunction.COLOR_DODGE })],\n})\nexport class NgtpNoise {\n\teffect = inject(NgtpEffect, { host: true });\n\toptions = input({} as Omit<NoiseEffectOptions, 'blendFunction'>);\n}\n","import { CUSTOM_ELEMENTS_SCHEMA, ChangeDetectionStrategy, Component, computed, input } from '@angular/core';\nimport { NgtArgs, pick } from 'angular-three';\nimport { mergeInputs } from 'ngxtension/inject-inputs';\nimport { PixelationEffect } from 'postprocessing';\n\nexport interface PixelationOptions {\n\tgranularity: number;\n}\n@Component({\n\tselector: 'ngtp-pixelation',\n\ttemplate: `\n\t\t<ngt-primitive *args=\"[effect()]\" />\n\t`,\n\tstandalone: true,\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n\tschemas: [CUSTOM_ELEMENTS_SCHEMA],\n\timports: [NgtArgs],\n})\nexport class NgtpPixelation {\n\toptions = input({ granularity: 5 } as PixelationOptions, { transform: mergeInputs({ granularity: 5 }) });\n\tprivate granularity = pick(this.options, 'granularity');\n\n\teffect = computed(() => new PixelationEffect(this.granularity()));\n}\n","import { CUSTOM_ELEMENTS_SCHEMA, ChangeDetectionStrategy, Component, inject, input } from '@angular/core';\nimport { NgtArgs, extend } from 'angular-three';\nimport { mergeInputs } from 'ngxtension/inject-inputs';\nimport { BlendFunction, ScanlineEffect } from 'postprocessing';\nimport { NgtpEffect, NgtpEffectBlendMode, NgtpEffectHostDirective, provideDefaultEffectOptions } from '../effect';\n\nextend({ ScanlineEffect });\n\nexport type ScanlineEffectOptions = Partial<NonNullable<ConstructorParameters<typeof ScanlineEffect>[0]>>;\n\nconst defaultOptions: Omit<ScanlineEffectOptions, 'blendFunction'> = {\n\tdensity: 1.25,\n};\n\n@Component({\n\tselector: 'ngtp-scanline',\n\ttemplate: `\n\t\t<ngt-scanline-effect *args=\"[options()]\" [camera]=\"effect.camera()\">\n\t\t\t<ngtp-effect-blend-mode />\n\t\t\t<ng-content />\n\t\t</ngt-scanline-effect>\n\t`,\n\tstandalone: true,\n\tschemas: [CUSTOM_ELEMENTS_SCHEMA],\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n\timports: [NgtArgs, NgtpEffectBlendMode],\n\thostDirectives: [NgtpEffectHostDirective],\n\tproviders: [provideDefaultEffectOptions({ blendFunction: BlendFunction.OVERLAY })],\n})\nexport class NgtpScanline {\n\teffect = inject(NgtpEffect, { host: true });\n\toptions = input(defaultOptions, { transform: mergeInputs(defaultOptions) });\n}\n","import { CUSTOM_ELEMENTS_SCHEMA, ChangeDetectionStrategy, Component, inject, input } from '@angular/core';\nimport { NgtArgs, extend } from 'angular-three';\nimport { SepiaEffect } from 'postprocessing';\nimport { NgtpEffect, NgtpEffectBlendMode, NgtpEffectHostDirective } from '../effect';\n\nextend({ SepiaEffect });\n\nexport type SepiaEffectOptions = Partial<NonNullable<ConstructorParameters<typeof SepiaEffect>[0]>>;\n\n@Component({\n\tselector: 'ngtp-sepia',\n\ttemplate: `\n\t\t<ngt-sepia-effect *args=\"[options()]\" [camera]=\"effect.camera()\">\n\t\t\t<ngtp-effect-blend-mode />\n\t\t\t<ng-content />\n\t\t</ngt-sepia-effect>\n\t`,\n\tstandalone: true,\n\tschemas: [CUSTOM_ELEMENTS_SCHEMA],\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n\timports: [NgtArgs, NgtpEffectBlendMode],\n\thostDirectives: [NgtpEffectHostDirective],\n})\nexport class NgtpSepia {\n\teffect = inject(NgtpEffect, { host: true });\n\toptions = input({} as Omit<SepiaEffectOptions, 'blendFunction'>);\n}\n","import { CUSTOM_ELEMENTS_SCHEMA, ChangeDetectionStrategy, Component, inject, input } from '@angular/core';\nimport { NgtArgs, extend } from 'angular-three';\nimport { ShockWaveEffect } from 'postprocessing';\nimport { NgtpEffect, NgtpEffectBlendMode, NgtpEffectHostDirective } from '../effect';\n\nextend({ ShockWaveEffect });\n\nexport type ShockWaveEffectOptions = Partial<NonNullable<ConstructorParameters<typeof ShockWaveEffect>[0]>>;\n\n@Component({\n\tselector: 'ngtp-shock-wave',\n\ttemplate: `\n\t\t<ngt-shock-wave-effect *args=\"[options()]\" [camera]=\"effect.camera()\">\n\t\t\t<ngtp-effect-blend-mode />\n\t\t\t<ng-content />\n\t\t</ngt-shock-wave-effect>\n\t`,\n\tstandalone: true,\n\tschemas: [CUSTOM_ELEMENTS_SCHEMA],\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n\timports: [NgtArgs, NgtpEffectBlendMode],\n\thostDirectives: [NgtpEffectHostDirective],\n})\nexport class NgtpShockWave {\n\teffect = inject(NgtpEffect, { host: true });\n\toptions = input({} as Omit<ShockWaveEffectOptions, 'blendFunction'>);\n}\n","import { CUSTOM_ELEMENTS_SCHEMA, ChangeDetectionStrategy, Component, inject, input } from '@angular/core';\nimport { NgtArgs, extend } from 'angular-three';\nimport { SMAAEffect } from 'postprocessing';\nimport { NgtpEffect, NgtpEffectBlendMode, NgtpEffectHostDirective } from '../effect';\n\nextend({ SMAAEffect });\n\nexport type SMAAEffectOptions = Partial<NonNullable<ConstructorParameters<typeof SMAAEffect>[0]>>;\n\n@Component({\n\tselector: 'ngtp-smaa',\n\ttemplate: `\n\t\t<ngt-sMAA-effect *args=\"[options()]\" [camera]=\"effect.camera()\">\n\t\t\t<ngtp-effect-blend-mode />\n\t\t\t<ng-content />\n\t\t</ngt-sMAA-effect>\n\t`,\n\tstandalone: true,\n\tschemas: [CUSTOM_ELEMENTS_SCHEMA],\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n\timports: [NgtArgs, NgtpEffectBlendMode],\n\thostDirectives: [NgtpEffectHostDirective],\n})\nexport class NgtpSMAA {\n\teffect = inject(NgtpEffect, { host: true });\n\toptions = input({} as Omit<SMAAEffectOptions, 'blendFunction'>);\n}\n","import { CUSTOM_ELEMENTS_SCHEMA, ChangeDetectionStrategy, Component, inject, input } from '@angular/core';\nimport { NgtArgs, extend } from 'angular-three';\nimport { BlendFunction, TiltShiftEffect } from 'postprocessing';\nimport { NgtpEffect, NgtpEffectBlendMode, NgtpEffectHostDirective, provideDefaultEffectOptions } from '../effect';\n\nextend({ TiltShiftEffect });\n\nexport type TiltShiftEffectOptions = Partial<NonNullable<ConstructorParameters<typeof TiltShiftEffect>[0]>>;\n\n@Component({\n\tselector: 'ngtp-tilt-shift',\n\ttemplate: `\n\t\t<ngt-tilt-shift-effect *args=\"[options()]\" [camera]=\"effect.camera()\">\n\t\t\t<ngtp-effect-blend-mode />\n\t\t\t<ng-content />\n\t\t</ngt-tilt-shift-effect>\n\t`,\n\tstandalone: true,\n\tschemas: [CUSTOM_ELEMENTS_SCHEMA],\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n\timports: [NgtArgs, NgtpEffectBlendMode],\n\thostDirectives: [NgtpEffectHostDirective],\n\tproviders: [provideDefaultEffectOptions({ blendFunction: BlendFunction.ADD })],\n})\nexport class NgtpTiltShift {\n\teffect = inject(NgtpEffect, { host: true });\n\toptions = input({} as Omit<TiltShiftEffectOptions, 'blendFunction'>);\n}\n","import { CUSTOM_ELEMENTS_SCHEMA, ChangeDetectionStrategy, Component, inject, input } from '@angular/core';\nimport { NgtArgs, extend } from 'angular-three';\nimport { BlendFunction, Effect, EffectAttribute } from 'postprocessing';\nimport { Uniform } from 'three';\nimport { NgtpEffect, NgtpEffectBlendMode, NgtpEffectHostDirective, provideDefaultEffectOptions } from '../effect';\n\nconst TiltShiftShader = {\n\tfragmentShader: `\n\n // original shader by Evan Wallace\n\n #define MAX_ITERATIONS 100\n\n uniform float blur;\n uniform float taper;\n uniform vec2 start;\n uniform vec2 end;\n uniform vec2 direction;\n uniform int samples;\n\n float random(vec3 scale, float seed) {\n /* use the fragment position for a different seed per-pixel */\n return fract(sin(dot(gl_FragCoord.xyz + seed, scale)) * 43758.5453 + seed);\n }\n\n void mainImage(const in vec4 inputColor, const in vec2 uv, out vec4 outputColor) {\n vec4 color = vec4(0.0);\n float total = 0.0;\n vec2 startPixel = vec2(start.x * resolution.x, start.y * resolution.y);\n vec2 endPixel = vec2(end.x * resolution.x, end.y * resolution.y);\n float f_samples = float(samples);\n float half_samples = f_samples / 2.0;\n\n // use screen diagonal to normalize blur radii\n float maxScreenDistance = distance(vec2(0.0), resolution); // diagonal distance\n float gradientRadius = taper * (maxScreenDistance);\n float blurRadius = blur * (maxScreenDistance / 16.0);\n\n /* randomize the lookup values to hide the fixed number of samples */\n float offset = random(vec3(12.9898, 78.233, 151.7182), 0.0);\n vec2 normal = normalize(vec2(startPixel.y - endPixel.y, endPixel.x - startPixel.x));\n float radius = smoothstep(0.0, 1.0, abs(dot(uv * resolution - startPixel, normal)) / gradientRadius) * blurRadius;\n\n #pragma unroll_loop_start\n for (int i = 0; i <= MAX_ITERATIONS; i++) {\n if (i >= samples) { break; } // return early if over sample count\n float f_i = float(i);\n float s_i = -half_samples + f_i;\n float percent = (s_i + offset - 0.5) / half_samples;\n float weight = 1.0 - abs(percent);\n vec4 sample_i = texture2D(inputBuffer, uv + normalize(direction) / resolution * percent * radius);\n /* switch to pre-multiplied alpha to correctly blur transparent images */\n sample_i.rgb *= sample_i.a;\n color += sample_i * weight;\n total += weight;\n }\n #pragma unroll_loop_end\n\n outputColor = color / total;\n\n /* switch back from pre-multiplied alpha */\n outputColor.rgb /= outputColor.a + 0.00001;\n }\n `,\n};\n\nexport class TiltShift2Effect extends Effect {\n\tconstructor({\n\t\tblendFunction = BlendFunction.NORMAL,\n\t\tblur = 0.15, // [0, 1], can go beyond 1 for extra\n\t\ttaper = 0.5, // [0, 1], can go beyond 1 for extra\n\t\tstart = [0.5, 0.0], // [0,1] percentage x,y of screenspace\n\t\tend = [0.5, 1.0], // [0,1] percentage x,y of screenspace\n\t\tsamples = 10.0, // number of blur samples\n\t\tdirection = [1, 1], // direction of blur\n\t} = {}) {\n\t\tsuper('TiltShiftEffect', TiltShiftShader.fragmentShader, {\n\t\t\tblendFunction,\n\t\t\tattributes: EffectAttribute.CONVOLUTION,\n\t\t\tuniforms: new Map<string, Uniform<number | number[]>>([\n\t\t\t\t['blur', new Uniform(blur)],\n\t\t\t\t['taper', new Uniform(taper)],\n\t\t\t\t['start', new Uniform(start)],\n\t\t\t\t['end', new Uniform(end)],\n\t\t\t\t['samples', new Uniform(samples)],\n\t\t\t\t['direction', new Uniform(direction)],\n\t\t\t]),\n\t\t});\n\t}\n}\n\nexport type TiltShift2EffectOptions = Partial<NonNullable<ConstructorParameters<typeof TiltShift2Effect>[0]>>;\n\nextend({ TiltShift2Effect });\n\n@Component({\n\tselector: 'ngtp-tilt-shift2',\n\tstandalone: true,\n\ttemplate: `\n\t\t<ngt-tilt-shift2-effect *args=\"[options()]\" [camera]=\"effect.camera()\">\n\t\t\t<ngtp-effect-blend-mode />\n\t\t\t<ng-content />\n\t\t</ngt-tilt-shift2-effect>\n\t`,\n\tschemas: [CUSTOM_ELEMENTS_SCHEMA],\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n\timports: [NgtArgs, NgtpEffectBlendMode],\n\thostDirectives: [NgtpEffectHostDirective],\n\tproviders: [provideDefaultEffectOptions({ blendFunction: BlendFunction.NORMAL })],\n})\nexport class NgtpTiltShift2 {\n\teffect = inject(NgtpEffect, { host: true });\n\toptions = input({} as Omit<TiltShift2EffectOptions, 'blendFunction'>);\n}\n","import { CUSTOM_ELEMENTS_SCHEMA, ChangeDetectionStrategy, Component, inject, input } from '@angular/core';\nimport { NgtArgs, extend } from 'angular-three';\nimport { VignetteEffect } from 'postprocessing';\nimport { NgtpEffect, NgtpEffectBlendMode, NgtpEffectHostDirective } from '../effect';\n\nextend({ VignetteEffect });\n\nexport type VignetteEffectOptions = Partial<NonNullable<ConstructorParameters<typeof VignetteEffect>[0]>>;\n\n@Component({\n\tselector: 'ngtp-vignette',\n\ttemplate: `\n\t\t<ngt-vignette-effect *args=\"[options()]\" [camera]=\"effect.camera()\">\n\t\t\t<ngtp-effect-blend-mode />\n\t\t\t<ng-content />\n\t\t</ngt-vignette-effect>\n\t`,\n\tstandalone: true,\n\tschemas: [CUSTOM_ELEMENTS_SCHEMA],\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n\timports: [NgtArgs, NgtpEffectBlendMode],\n\thostDirectives: [NgtpEffectHostDirective],\n})\nexport class NgtpVignette {\n\teffect = inject(NgtpEffect, { host: true });\n\toptions = input({} as Omit<VignetteEffectOptions, 'blendFunction'>);\n}\n","import { CUSTOM_ELEMENTS_SCHEMA, ChangeDetectionStrategy, Component, inject, input } from '@angular/core';\nimport { NgtArgs, extend } from 'angular-three';\nimport { BlendFunction, Effect, EffectAttribute } from 'postprocessing';\nimport { Uniform } from 'three';\nimport { NgtpEffect, NgtpEffectBlendMode, NgtpEffectHostDirective, provideDefaultEffectOptions } from '../effect';\n\nconst WaterShader = {\n\tfragmentShader: `\n uniform float factor;\n void mainImage(const in vec4 inputColor, const in vec2 uv, out vec4 outputColor) {\n vec2 vUv = uv;\n float frequency = 6.0 * factor;\n float amplitude = 0.015 * factor;\n float x = vUv.y * frequency + time * .7;\n float y = vUv.x * frequency + time * .3;\n vUv.x += cos(x+y) * amplitude * cos(y);\n vUv.y += sin(x-y) * amplitude * cos(y);\n vec4 rgba = texture2D(inputBuffer, vUv);\n outputColor = rgba;\n }`,\n};\n\nexport class WaterEffect extends Effect {\n\tconstructor({ blendFunction = BlendFunction.NORMAL, factor = 0 } = {}) {\n\t\tsuper('WaterEffect', WaterShader.fragmentShader, {\n\t\t\tblendFunction,\n\t\t\tattributes: EffectAttribute.CONVOLUTION,\n\t\t\tuniforms: new Map<string, Uniform<number | number[]>>([['factor', new Uniform(factor)]]),\n\t\t});\n\t}\n}\n\nexport type WaterEffectOptions = Partial<NonNullable<ConstructorParameters<typeof WaterEffect>[0]>>;\n\nextend({ WaterEffect });\n\n@Component({\n\tselector: 'ngtp-water',\n\tstandalone: true,\n\ttemplate: `\n\t\t<ngt-water-effect *args=\"[options()]\" [camera]=\"effect.camera()\">\n\t\t\t<ngtp-effect-blend-mode />\n\t\t\t<ng-content />\n\t\t</ngt-water-effect>\n\t`,\n\tschemas: [CUSTOM_ELEMENTS_SCHEMA],\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n\timports: [NgtArgs, NgtpEffectBlendMode],\n\thostDirectives: [NgtpEffectHostDirective],\n\tproviders: [provideDefaultEffectOptions({ blendFunction: BlendFunction.NORMAL })],\n})\nexport class NgtpWater {\n\teffect = inject(NgtpEffect, { host: true });\n\toptions = input({} as Omit<WaterEffectOptions, 'blendFunction'>);\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["defaultOptions","i1.NgtpEffect"],"mappings":"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"}
1
+ {"version":3,"file":"angular-three-postprocessing.mjs","sources":["../../../../libs/postprocessing/src/lib/effect.ts","../../../../libs/postprocessing/src/lib/effect-composer.ts","../../../../libs/postprocessing/src/lib/effects/ascii.ts","../../../../libs/postprocessing/src/lib/effects/bloom.ts","../../../../libs/postprocessing/src/lib/effects/brightness-contrast.ts","../../../../libs/postprocessing/src/lib/effects/chromatic-abberation.ts","../../../../libs/postprocessing/src/lib/effects/color-average.ts","../../../../libs/postprocessing/src/lib/effects/color-depth.ts","../../../../libs/postprocessing/src/lib/effects/depth.ts","../../../../libs/postprocessing/src/lib/effects/depth-of-field.ts","../../../../libs/postprocessing/src/lib/effects/dot-screen.ts","../../../../libs/postprocessing/src/lib/effects/fxaa.ts","../../../../libs/postprocessing/src/lib/effects/glitch.ts","../../../../libs/postprocessing/src/lib/effects/god-rays.ts","../../../../libs/postprocessing/src/lib/effects/grid.ts","../../../../libs/postprocessing/src/lib/effects/hue-saturation.ts","../../../../libs/postprocessing/src/lib/effects/lens-flare.ts","../../../../libs/postprocessing/src/lib/effects/lut.ts","../../../../libs/postprocessing/src/lib/effects/noise.ts","../../../../libs/postprocessing/src/lib/effects/pixelation.ts","../../../../libs/postprocessing/src/lib/effects/scanline.ts","../../../../libs/postprocessing/src/lib/effects/sepia.ts","../../../../libs/postprocessing/src/lib/effects/shock-wave.ts","../../../../libs/postprocessing/src/lib/effects/smaa.ts","../../../../libs/postprocessing/src/lib/effects/tilt-shift.ts","../../../../libs/postprocessing/src/lib/effects/tilt-shift-2.ts","../../../../libs/postprocessing/src/lib/effects/vignette.ts","../../../../libs/postprocessing/src/lib/effects/water.ts","../../../../libs/postprocessing/src/angular-three-postprocessing.ts"],"sourcesContent":["import { CUSTOM_ELEMENTS_SCHEMA, ChangeDetectionStrategy, Component, Directive, inject, input } from '@angular/core';\nimport { injectStore } from 'angular-three';\nimport { createNoopInjectionToken } from 'ngxtension/create-injection-token';\nimport { BlendFunction } from 'postprocessing';\n\nexport const [injectDefaultEffectOptions, provideDefaultEffectOptions] = createNoopInjectionToken<{\n\tblendFunction?: BlendFunction;\n\topacity?: number;\n}>('Default Effect options');\n\n@Component({\n\tselector: 'ngtp-effect-blend-mode',\n\tstandalone: true,\n\ttemplate: `\n\t\t@if (effect) {\n\t\t\t<ngt-value [rawValue]=\"effect.blendFunction()\" attach=\"blendMode.blendFunction\" />\n\t\t\t<ngt-value [rawValue]=\"effect.opacity()\" attach=\"blendMode.opacity.value\" />\n\t\t}\n\t`,\n\tschemas: [CUSTOM_ELEMENTS_SCHEMA],\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class NgtpEffectBlendMode {\n\teffect = inject(NgtpEffect, { optional: true });\n}\n\n@Directive({ standalone: true })\nexport class NgtpEffect {\n\tdefaultEffectOptions = injectDefaultEffectOptions({ optional: true });\n\n\tblendFunction = input(this.defaultEffectOptions?.blendFunction);\n\topacity = input(this.defaultEffectOptions?.opacity);\n\n\tprivate store = injectStore();\n\tcamera = this.store.select('camera');\n\tinvalidate = this.store.select('invalidate');\n}\n\nexport const NgtpEffectHostDirective = { directive: NgtpEffect, inputs: ['blendFunction', 'opacity'] };\n","import {\n\tCUSTOM_ELEMENTS_SCHEMA,\n\tChangeDetectionStrategy,\n\tComponent,\n\tElementRef,\n\tInjector,\n\tafterNextRender,\n\tcomputed,\n\tinject,\n\tinput,\n\tviewChild,\n} from '@angular/core';\nimport { extend, getLocalState, injectBeforeRender, injectStore, pick } from 'angular-three';\nimport { injectAutoEffect } from 'ngxtension/auto-effect';\nimport { mergeInputs } from 'ngxtension/inject-inputs';\nimport {\n\tDepthDownsamplingPass,\n\tEffect,\n\tEffectAttribute,\n\tEffectComposer,\n\tEffectPass,\n\tNormalPass,\n\tPass,\n\tRenderPass,\n} from 'postprocessing';\nimport { Camera, Group, HalfFloatType, NoToneMapping, Scene, TextureDataType } from 'three';\nimport { isWebGL2Available } from 'three-stdlib';\n\nextend({ Group });\n\ninterface NgtpEffectComposerOptions {\n\tenabled: boolean;\n\tdepthBuffer?: boolean;\n\t/** Only used for SSGI currently, leave it disabled for everything else unless it's needed */\n\tenableNormalPass?: boolean;\n\tstencilBuffer?: boolean;\n\tautoClear: boolean;\n\tresolutionScale?: number;\n\tmultisampling: number;\n\tframeBufferType: TextureDataType;\n\trenderPriority: number;\n\tcamera?: Camera;\n\tscene?: Scene;\n}\n\nconst defaultOptions: NgtpEffectComposerOptions = {\n\tenabled: true,\n\trenderPriority: 1,\n\tautoClear: true,\n\tmultisampling: 8,\n\tframeBufferType: HalfFloatType,\n};\n\nfunction isConvolution(effect: Effect) {\n\treturn (effect.getAttributes() & EffectAttribute.CONVOLUTION) === EffectAttribute.CONVOLUTION;\n}\n\n@Component({\n\tselector: 'ngtp-effect-composer',\n\tstandalone: true,\n\ttemplate: `\n\t\t<ngt-group #group>\n\t\t\t<ng-content />\n\t\t</ngt-group>\n\t`,\n\tschemas: [CUSTOM_ELEMENTS_SCHEMA],\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class NgtpEffectComposer {\n\toptions = input(defaultOptions, { transform: mergeInputs(defaultOptions) });\n\n\tprivate injector = inject(Injector);\n\tprivate autoEffect = injectAutoEffect();\n\tprivate store = injectStore();\n\tprivate size = this.store.select('size');\n\tprivate gl = this.store.select('gl');\n\tprivate defaultScene = this.store.select('scene');\n\tprivate defaultCamera = this.store.select('camera');\n\n\tdepthBuffer = pick(this.options, 'depthBuffer');\n\tstencilBuffer = pick(this.options, 'stencilBuffer');\n\tmultisampling = pick(this.options, 'multisampling');\n\tframeBufferType = pick(this.options, 'frameBufferType');\n\tscene = computed(() => this.options().scene ?? this.defaultScene());\n\tcamera = computed(() => this.options().camera ?? this.defaultCamera());\n\tenableNormalPass = pick(this.options, 'enableNormalPass');\n\tresolutionScale = pick(this.options, 'resolutionScale');\n\n\tgroupRef = viewChild.required<ElementRef<Group>>('group');\n\n\tcomposerData = computed(() => {\n\t\tconst webGL2Available = isWebGL2Available();\n\t\tconst [\n\t\t\tgl,\n\t\t\tscene,\n\t\t\tcamera,\n\t\t\tdepthBuffer,\n\t\t\tstencilBuffer,\n\t\t\tmultisampling,\n\t\t\tframeBufferType,\n\t\t\tenableNormalPass,\n\t\t\tresolutionScale,\n\t\t] = [\n\t\t\tthis.gl(),\n\t\t\tthis.scene(),\n\t\t\tthis.camera(),\n\t\t\tthis.depthBuffer(),\n\t\t\tthis.stencilBuffer(),\n\t\t\tthis.multisampling(),\n\t\t\tthis.frameBufferType(),\n\t\t\tthis.enableNormalPass(),\n\t\t\tthis.resolutionScale(),\n\t\t];\n\n\t\t// initialize composer\n\t\tconst composer = new EffectComposer(gl, {\n\t\t\tdepthBuffer,\n\t\t\tstencilBuffer,\n\t\t\tmultisampling: multisampling > 0 && webGL2Available ? multisampling : 0,\n\t\t\tframeBufferType,\n\t\t});\n\n\t\t// add render pass\n\t\tcomposer.addPass(new RenderPass(scene, camera));\n\n\t\t// create normal pass\n\t\tlet downSamplingPass = null;\n\t\tlet normalPass = null;\n\t\tif (enableNormalPass) {\n\t\t\tnormalPass = new NormalPass(scene, camera);\n\t\t\tnormalPass.enabled = false;\n\t\t\tcomposer.addPass(normalPass);\n\t\t\tif (resolutionScale !== undefined && webGL2Available) {\n\t\t\t\tdownSamplingPass = new DepthDownsamplingPass({ normalBuffer: normalPass.texture, resolutionScale });\n\t\t\t\tdownSamplingPass.enabled = false;\n\t\t\t\tcomposer.addPass(downSamplingPass);\n\t\t\t}\n\t\t}\n\n\t\treturn { composer, normalPass, downSamplingPass };\n\t});\n\n\tconstructor() {\n\t\tafterNextRender(() => {\n\t\t\tthis.disableToneMapping();\n\t\t\tthis.setComposerSize();\n\t\t\tthis.updatePasses();\n\n\t\t\tinjectBeforeRender(\n\t\t\t\t({ delta }) => {\n\t\t\t\t\tconst [{ composer }, { enabled, autoClear, stencilBuffer }, gl] = [\n\t\t\t\t\t\tthis.composerData(),\n\t\t\t\t\t\tthis.options(),\n\t\t\t\t\t\tthis.gl(),\n\t\t\t\t\t];\n\n\t\t\t\t\tif (enabled) {\n\t\t\t\t\t\tconst currentAutoClear = gl.autoClear;\n\t\t\t\t\t\tgl.autoClear = autoClear;\n\t\t\t\t\t\tif (stencilBuffer && !autoClear) gl.clearStencil();\n\t\t\t\t\t\tcomposer.render(delta);\n\t\t\t\t\t\tgl.autoClear = currentAutoClear;\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\t{ injector: this.injector, priority: this.options().enabled ? this.options().renderPriority : 0 },\n\t\t\t);\n\t\t});\n\t}\n\n\t// NOTE: Disable tone mapping because threejs disallows tonemapping on render targets\n\tprivate disableToneMapping() {\n\t\tthis.autoEffect(() => {\n\t\t\tconst gl = this.gl();\n\t\t\tconst currentTonemapping = gl.toneMapping;\n\t\t\tgl.toneMapping = NoToneMapping;\n\t\t\treturn () => {\n\t\t\t\tgl.toneMapping = currentTonemapping;\n\t\t\t};\n\t\t});\n\t}\n\n\tprivate setComposerSize() {\n\t\tthis.autoEffect(() => {\n\t\t\tconst [{ composer }, { width, height }] = [this.composerData(), this.size()];\n\t\t\tif (composer) {\n\t\t\t\tcomposer.setSize(width, height);\n\t\t\t}\n\t\t});\n\t}\n\n\tprivate updatePasses() {\n\t\tthis.autoEffect(() => {\n\t\t\tconst [group, { composer, normalPass, downSamplingPass }, camera] = [\n\t\t\t\tthis.groupRef(),\n\t\t\t\tthis.composerData(),\n\t\t\t\tthis.camera(),\n\t\t\t];\n\n\t\t\tconst passes: Pass[] = [];\n\n\t\t\tif (group.nativeElement && composer) {\n\t\t\t\tconst localState = getLocalState(group.nativeElement);\n\t\t\t\tif (!localState) return;\n\n\t\t\t\tconst children = localState.nonObjects();\n\t\t\t\tfor (let i = 0; i < children.length; i++) {\n\t\t\t\t\tconst child = children[i];\n\t\t\t\t\tif (child instanceof Effect) {\n\t\t\t\t\t\tconst effects: Effect[] = [child];\n\n\t\t\t\t\t\tif (!isConvolution(child)) {\n\t\t\t\t\t\t\tlet next: unknown = null;\n\t\t\t\t\t\t\twhile ((next = children[i + 1]) instanceof Effect) {\n\t\t\t\t\t\t\t\tif (isConvolution(next)) break;\n\t\t\t\t\t\t\t\teffects.push(next as Effect);\n\t\t\t\t\t\t\t\ti++;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tconst pass = new EffectPass(camera, ...effects);\n\t\t\t\t\t\tpasses.push(pass);\n\t\t\t\t\t} else if (child instanceof Pass) {\n\t\t\t\t\t\tpasses.push(child);\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tfor (const pass of passes) {\n\t\t\t\t\tcomposer.addPass(pass);\n\t\t\t\t}\n\n\t\t\t\tif (normalPass) normalPass.enabled = true;\n\t\t\t\tif (downSamplingPass) downSamplingPass.enabled = true;\n\t\t\t}\n\n\t\t\treturn () => {\n\t\t\t\tfor (const pass of passes) composer?.removePass(pass);\n\t\t\t\tif (normalPass) normalPass.enabled = false;\n\t\t\t\tif (downSamplingPass) downSamplingPass.enabled = false;\n\t\t\t};\n\t\t});\n\t}\n}\n","import { CUSTOM_ELEMENTS_SCHEMA, ChangeDetectionStrategy, Component, computed, input } from '@angular/core';\nimport { NgtArgs } from 'angular-three';\nimport { mergeInputs } from 'ngxtension/inject-inputs';\nimport { Effect } from 'postprocessing';\nimport { CanvasTexture, Color, NearestFilter, RepeatWrapping, Texture, Uniform } from 'three';\n\nconst fragment = `\nuniform sampler2D uCharacters;\nuniform float uCharactersCount;\nuniform float uCellSize;\nuniform bool uInvert;\nuniform vec3 uColor;\n\nconst vec2 SIZE = vec2(16.);\n\nvec3 greyscale(vec3 color, float strength) {\n float g = dot(color, vec3(0.299, 0.587, 0.114));\n return mix(color, vec3(g), strength);\n}\n\nvec3 greyscale(vec3 color) {\n return greyscale(color, 1.0);\n}\n\nvoid mainImage(const in vec4 inputColor, const in vec2 uv, out vec4 outputColor) {\n vec2 cell = resolution / uCellSize;\n vec2 grid = 1.0 / cell;\n vec2 pixelizedUV = grid * (0.5 + floor(uv / grid));\n vec4 pixelized = texture2D(inputBuffer, pixelizedUV);\n float greyscaled = greyscale(pixelized.rgb).r;\n\n if (uInvert) {\n greyscaled = 1.0 - greyscaled;\n }\n\n float characterIndex = floor((uCharactersCount - 1.0) * greyscaled);\n vec2 characterPosition = vec2(mod(characterIndex, SIZE.x), floor(characterIndex / SIZE.y));\n vec2 offset = vec2(characterPosition.x, -characterPosition.y) / SIZE;\n vec2 charUV = mod(uv * (cell / SIZE), 1.0 / SIZE) - vec2(0., 1.0 / SIZE) + offset;\n vec4 asciiCharacter = texture2D(uCharacters, charUV);\n\n asciiCharacter.rgb = uColor * asciiCharacter.r;\n asciiCharacter.a = pixelized.a;\n outputColor = asciiCharacter;\n}\n`;\n\ninterface ASCIIEffectOptions {\n\tfont?: string;\n\tcharacters?: string;\n\tfontSize?: number;\n\tcellSize?: number;\n\tcolor?: string;\n\tinvert?: boolean;\n}\n\nexport class ASCIIEffect extends Effect {\n\tconstructor({\n\t\tfont = 'arial',\n\t\tcharacters = ` .:,'-^=*+?!|0#X%WM@`,\n\t\tfontSize = 54,\n\t\tcellSize = 16,\n\t\tcolor = '#ffffff',\n\t\tinvert = false,\n\t}: ASCIIEffectOptions = {}) {\n\t\tconst uniforms = new Map<string, Uniform>([\n\t\t\t['uCharacters', new Uniform(new Texture())],\n\t\t\t['uCellSize', new Uniform(cellSize)],\n\t\t\t['uCharactersCount', new Uniform(characters.length)],\n\t\t\t['uColor', new Uniform(new Color(color))],\n\t\t\t['uInvert', new Uniform(invert)],\n\t\t]);\n\n\t\tsuper('ASCIIEffect', fragment, { uniforms });\n\n\t\tconst charactersTextureUniform = this.uniforms.get('uCharacters');\n\n\t\tif (charactersTextureUniform) {\n\t\t\tcharactersTextureUniform.value = this.createCharactersTexture(characters, font, fontSize);\n\t\t}\n\t}\n\n\t/** Draws the characters on a Canvas and returns a texture */\n\tpublic createCharactersTexture(characters: string, font: string, fontSize: number): Texture {\n\t\tconst canvas = document.createElement('canvas');\n\t\tconst SIZE = 1024;\n\t\tconst MAX_PER_ROW = 16;\n\t\tconst CELL = SIZE / MAX_PER_ROW;\n\n\t\tcanvas.width = canvas.height = SIZE;\n\t\tconst texture = new CanvasTexture(canvas, undefined, RepeatWrapping, RepeatWrapping, NearestFilter, NearestFilter);\n\t\tconst context = canvas.getContext('2d');\n\n\t\tif (!context) {\n\t\t\tthrow new Error('Context not available');\n\t\t}\n\n\t\tcontext.clearRect(0, 0, SIZE, SIZE);\n\t\tcontext.font = `${fontSize}px ${font}`;\n\t\tcontext.textAlign = 'center';\n\t\tcontext.textBaseline = 'middle';\n\t\tcontext.fillStyle = '#fff';\n\n\t\tfor (let i = 0; i < characters.length; i++) {\n\t\t\tconst char = characters[i];\n\t\t\tconst x = i % MAX_PER_ROW;\n\t\t\tconst y = Math.floor(i / MAX_PER_ROW);\n\t\t\tcontext.fillText(char, x * CELL + CELL / 2, y * CELL + CELL / 2);\n\t\t}\n\n\t\ttexture.needsUpdate = true;\n\t\treturn texture;\n\t}\n}\n\nconst defaultOptions: ASCIIEffectOptions = {\n\tfont: 'arial',\n\tcharacters: ` .:,'-^=*+?!|0#X%WM@`,\n\tfontSize: 54,\n\tcellSize: 16,\n\tcolor: '#ffffff',\n\tinvert: false,\n};\n\n@Component({\n\tselector: 'ngtp-ascii',\n\tstandalone: true,\n\ttemplate: `\n\t\t<ngt-primitive *args=\"[effect()]\" />\n\t`,\n\timports: [NgtArgs],\n\tschemas: [CUSTOM_ELEMENTS_SCHEMA],\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class NgtpASCII {\n\toptions = input(defaultOptions, { transform: mergeInputs(defaultOptions) });\n\teffect = computed(() => new ASCIIEffect(this.options()));\n}\n","import { CUSTOM_ELEMENTS_SCHEMA, ChangeDetectionStrategy, Component, inject, input } from '@angular/core';\nimport { NgtArgs, extend } from 'angular-three';\nimport { BlendFunction, BloomEffect, BloomEffectOptions } from 'postprocessing';\nimport { NgtpEffect, NgtpEffectBlendMode, NgtpEffectHostDirective, provideDefaultEffectOptions } from '../effect';\n\nextend({ BloomEffect });\n\n@Component({\n\tselector: 'ngtp-bloom',\n\tstandalone: true,\n\ttemplate: `\n\t\t<ngt-bloom-effect *args=\"[options()]\" [camera]=\"effect.camera()\">\n\t\t\t<ngtp-effect-blend-mode />\n\t\t\t<ng-content />\n\t\t</ngt-bloom-effect>\n\t`,\n\timports: [NgtArgs, NgtpEffectBlendMode],\n\tschemas: [CUSTOM_ELEMENTS_SCHEMA],\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n\thostDirectives: [NgtpEffectHostDirective],\n\tproviders: [provideDefaultEffectOptions({ blendFunction: BlendFunction.ADD })],\n})\nexport class NgtpBloom {\n\teffect = inject(NgtpEffect, { host: true });\n\toptions = input({} as Omit<BloomEffectOptions, 'blendFunction'>);\n}\n","import { CUSTOM_ELEMENTS_SCHEMA, ChangeDetectionStrategy, Component, inject, input } from '@angular/core';\nimport { NgtArgs, extend } from 'angular-three';\nimport { BrightnessContrastEffect } from 'postprocessing';\nimport { NgtpEffect, NgtpEffectBlendMode, NgtpEffectHostDirective } from '../effect';\n\nextend({ BrightnessContrastEffect });\n\nexport type BrightnessEffectOptions = NonNullable<ConstructorParameters<typeof BrightnessContrastEffect>[0]>;\n\n@Component({\n\tselector: 'ngtp-brightness-contrast',\n\tstandalone: true,\n\ttemplate: `\n\t\t<ngt-brightness-contrast-effect *args=\"[options()]\" [camera]=\"effect.camera()\">\n\t\t\t<ngtp-effect-blend-mode />\n\t\t\t<ng-content />\n\t\t</ngt-brightness-contrast-effect>\n\t`,\n\timports: [NgtArgs, NgtpEffectBlendMode],\n\tschemas: [CUSTOM_ELEMENTS_SCHEMA],\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n\thostDirectives: [NgtpEffectHostDirective],\n})\nexport class NgtpBrightnessContrast {\n\teffect = inject(NgtpEffect, { host: true });\n\toptions = input({} as Omit<BrightnessEffectOptions, 'blendFunction'>);\n}\n","import { CUSTOM_ELEMENTS_SCHEMA, ChangeDetectionStrategy, Component, inject, input } from '@angular/core';\nimport { NgtArgs, extend } from 'angular-three';\nimport { ChromaticAberrationEffect } from 'postprocessing';\nimport { NgtpEffect, NgtpEffectBlendMode, NgtpEffectHostDirective } from '../effect';\n\nextend({ ChromaticAberrationEffect });\n\nexport type ChromaticAberrationEffectOptions = Partial<\n\tNonNullable<ConstructorParameters<typeof ChromaticAberrationEffect>[0]>\n>;\n\n@Component({\n\tselector: 'ngtp-chromatic-aberration',\n\ttemplate: `\n\t\t<ngt-chromatic-aberration-effect *args=\"[options()]\" [camera]=\"effect.camera()\">\n\t\t\t<ngtp-effect-blend-mode />\n\t\t\t<ng-content />\n\t\t</ngt-chromatic-aberration-effect>\n\t`,\n\tstandalone: true,\n\tschemas: [CUSTOM_ELEMENTS_SCHEMA],\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n\timports: [NgtArgs, NgtpEffectBlendMode],\n\thostDirectives: [NgtpEffectHostDirective],\n})\nexport class NgtpChromaticAberration {\n\teffect = inject(NgtpEffect, { host: true });\n\toptions = input({} as Omit<ChromaticAberrationEffectOptions, 'blendFunction'>);\n}\n","import { CUSTOM_ELEMENTS_SCHEMA, ChangeDetectionStrategy, Component, input } from '@angular/core';\nimport { NgtArgs, extend } from 'angular-three';\nimport { mergeInputs } from 'ngxtension/inject-inputs';\nimport { BlendFunction, ColorAverageEffect } from 'postprocessing';\n\nextend({ ColorAverageEffect });\n\n@Component({\n\tselector: 'ngtp-color-average',\n\tstandalone: true,\n\ttemplate: `\n\t\t<ngt-color-average-effect *args=\"[options().blendFunction]\">\n\t\t\t<ng-content />\n\t\t</ngt-color-average-effect>\n\t`,\n\timports: [NgtArgs],\n\tschemas: [CUSTOM_ELEMENTS_SCHEMA],\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class NgtpColorAverage {\n\toptions = input(\n\t\t{ blendFunction: BlendFunction.NORMAL },\n\t\t{ transform: mergeInputs({ blendFunction: BlendFunction.NORMAL }) },\n\t);\n}\n","import { CUSTOM_ELEMENTS_SCHEMA, ChangeDetectionStrategy, Component, inject, input } from '@angular/core';\nimport { NgtArgs, extend } from 'angular-three';\nimport { ColorDepthEffect } from 'postprocessing';\nimport { NgtpEffect, NgtpEffectBlendMode, NgtpEffectHostDirective } from '../effect';\n\nextend({ ColorDepthEffect });\n\nexport type ColorDepthEffectOptions = Partial<NonNullable<ConstructorParameters<typeof ColorDepthEffect>[0]>>;\n\n@Component({\n\tselector: 'ngtp-color-depth',\n\ttemplate: `\n\t\t<ngt-color-depth-effect *args=\"[options()]\" [camera]=\"effect.camera()\">\n\t\t\t<ngtp-effect-blend-mode />\n\t\t\t<ng-content />\n\t\t</ngt-color-depth-effect>\n\t`,\n\tstandalone: true,\n\tschemas: [CUSTOM_ELEMENTS_SCHEMA],\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n\timports: [NgtArgs, NgtpEffectBlendMode],\n\thostDirectives: [NgtpEffectHostDirective],\n})\nexport class NgtpColorDepth {\n\teffect = inject(NgtpEffect, { host: true });\n\toptions = input({} as Omit<ColorDepthEffectOptions, 'blendFunction'>);\n}\n","import { CUSTOM_ELEMENTS_SCHEMA, ChangeDetectionStrategy, Component, inject, input } from '@angular/core';\nimport { NgtArgs, extend } from 'angular-three';\nimport { DepthEffect } from 'postprocessing';\nimport { NgtpEffect, NgtpEffectBlendMode, NgtpEffectHostDirective } from '../effect';\n\nextend({ DepthEffect });\n\nexport type DepthEffectOptions = Partial<NonNullable<ConstructorParameters<typeof DepthEffect>[0]>>;\n\n@Component({\n\tselector: 'ngtp-depth',\n\ttemplate: `\n\t\t<ngt-depth-effect *args=\"[options()]\" [camera]=\"effect.camera()\">\n\t\t\t<ngtp-effect-blend-mode />\n\t\t\t<ng-content />\n\t\t</ngt-depth-effect>\n\t`,\n\tstandalone: true,\n\tschemas: [CUSTOM_ELEMENTS_SCHEMA],\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n\timports: [NgtArgs, NgtpEffectBlendMode],\n\thostDirectives: [NgtpEffectHostDirective],\n})\nexport class NgtpDepth {\n\teffect = inject(NgtpEffect, { host: true });\n\toptions = input({} as Omit<DepthEffectOptions, 'blendFunction'>);\n}\n","import {\n\tCUSTOM_ELEMENTS_SCHEMA,\n\tChangeDetectionStrategy,\n\tComponent,\n\tafterNextRender,\n\tcomputed,\n\tinject,\n\tinput,\n} from '@angular/core';\nimport { NgtAnyRecord, NgtArgs, NgtVector3 } from 'angular-three';\nimport { injectAutoEffect } from 'ngxtension/auto-effect';\nimport { DepthOfFieldEffect, MaskFunction } from 'postprocessing';\nimport { DepthPackingStrategies, Texture, Vector3 } from 'three';\nimport { NgtpEffectComposer } from '../effect-composer';\n\ntype DOFOptions = NonNullable<ConstructorParameters<typeof DepthOfFieldEffect>[1]> &\n\tPartial<{ target: NgtVector3; depthTexture: { texture: Texture; packing: DepthPackingStrategies } }>;\n\n@Component({\n\tselector: 'ngtp-depth-of-field',\n\tstandalone: true,\n\ttemplate: `\n\t\t<ngt-primitive *args=\"[effect()]\" />\n\t`,\n\timports: [NgtArgs],\n\tschemas: [CUSTOM_ELEMENTS_SCHEMA],\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class NgtpDepthOfField {\n\tprivate autoEffect = injectAutoEffect();\n\tprivate effectComposer = inject(NgtpEffectComposer);\n\n\toptions = input({} as DOFOptions);\n\n\tprivate autoFocus = computed(() => this.options().target != null);\n\n\teffect = computed(() => {\n\t\tconst [camera, options, autoFocus] = [this.effectComposer.camera(), this.options(), this.autoFocus()];\n\n\t\tconst effect = new DepthOfFieldEffect(camera, options);\n\n\t\t// Creating a target enables autofocus, R3F will set via props\n\t\tif (autoFocus) effect.target = new Vector3();\n\t\t// Depth texture for depth picking with optional packing strategy\n\t\tif (options.depthTexture) {\n\t\t\teffect.setDepthTexture(options.depthTexture.texture, options.depthTexture.packing as DepthPackingStrategies);\n\t\t}\n\t\t// Temporary fix that restores DOF 6.21.3 behavior, everything since then lets shapes leak through the blur\n\t\tconst maskPass = (effect as NgtAnyRecord)['maskPass'];\n\t\tmaskPass.maskFunction = MaskFunction.MULTIPLY_RGB_SET_ALPHA;\n\n\t\treturn effect;\n\t});\n\n\tconstructor() {\n\t\tafterNextRender(() => {\n\t\t\tthis.autoEffect(() => {\n\t\t\t\tconst effect = this.effect();\n\t\t\t\treturn () => {\n\t\t\t\t\teffect.dispose();\n\t\t\t\t};\n\t\t\t});\n\t\t});\n\t}\n}\n","import { CUSTOM_ELEMENTS_SCHEMA, ChangeDetectionStrategy, Component, inject, input } from '@angular/core';\nimport { NgtArgs, extend } from 'angular-three';\nimport { DotScreenEffect } from 'postprocessing';\nimport { NgtpEffect, NgtpEffectBlendMode, NgtpEffectHostDirective } from '../effect';\n\nextend({ DotScreenEffect });\n\nexport type DotScreenEffectOptions = Partial<NonNullable<ConstructorParameters<typeof DotScreenEffect>[0]>>;\n\n@Component({\n\tselector: 'ngtp-dot-screen',\n\ttemplate: `\n\t\t<ngt-dot-screen-effect *args=\"[options()]\" [camera]=\"effect.camera()\">\n\t\t\t<ngtp-effect-blend-mode />\n\t\t\t<ng-content />\n\t\t</ngt-dot-screen-effect>\n\t`,\n\tstandalone: true,\n\tschemas: [CUSTOM_ELEMENTS_SCHEMA],\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n\timports: [NgtArgs, NgtpEffectBlendMode],\n\thostDirectives: [NgtpEffectHostDirective],\n})\nexport class NgtpDotScreen {\n\teffect = inject(NgtpEffect, { host: true });\n\toptions = input({} as Omit<DotScreenEffectOptions, 'blendFunction'>);\n}\n","import { CUSTOM_ELEMENTS_SCHEMA, ChangeDetectionStrategy, Component, inject, input } from '@angular/core';\nimport { NgtArgs, extend } from 'angular-three';\nimport { FXAAEffect } from 'postprocessing';\nimport { NgtpEffect, NgtpEffectBlendMode, NgtpEffectHostDirective } from '../effect';\n\nextend({ FXAAEffect });\n\nexport type FXAAEffectOptions = Partial<NonNullable<ConstructorParameters<typeof FXAAEffect>[0]>>;\n\n@Component({\n\tselector: 'ngtp-fxaa',\n\ttemplate: `\n\t\t<ngt-fXAA-effect *args=\"[options()]\" [camera]=\"effect.camera()\">\n\t\t\t<ngtp-effect-blend-mode />\n\t\t\t<ng-content />\n\t\t</ngt-fXAA-effect>\n\t`,\n\tstandalone: true,\n\tschemas: [CUSTOM_ELEMENTS_SCHEMA],\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n\timports: [NgtArgs, NgtpEffectBlendMode],\n\thostDirectives: [NgtpEffectHostDirective],\n})\nexport class NgtpFXAA {\n\teffect = inject(NgtpEffect, { host: true });\n\toptions = input({} as Omit<FXAAEffectOptions, 'blendFunction'>);\n}\n","import {\n\tCUSTOM_ELEMENTS_SCHEMA,\n\tChangeDetectionStrategy,\n\tComponent,\n\tafterNextRender,\n\tcomputed,\n\tinput,\n} from '@angular/core';\nimport { NgtArgs, NgtVector2, injectStore, pick, vector2 } from 'angular-three';\nimport { injectAutoEffect } from 'ngxtension/auto-effect';\nimport { mergeInputs } from 'ngxtension/inject-inputs';\nimport { GlitchEffect, GlitchMode } from 'postprocessing';\n\nexport type GlitchOptions = NonNullable<ConstructorParameters<typeof GlitchEffect>[0]> &\n\tPartial<{\n\t\tmode: GlitchMode;\n\t\tactive: boolean;\n\t\tdelay: NgtVector2;\n\t\tduration: NgtVector2;\n\t\tchromaticAberrationOffset: NgtVector2;\n\t\tstrength: NgtVector2;\n\t}>;\n\n@Component({\n\tselector: 'ngtp-glitch',\n\tstandalone: true,\n\ttemplate: `\n\t\t<ngt-primitive *args=\"[effect()]\" />\n\t`,\n\timports: [NgtArgs],\n\tschemas: [CUSTOM_ELEMENTS_SCHEMA],\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class NgtpGlitch {\n\tprivate autoEffect = injectAutoEffect();\n\tprivate store = injectStore();\n\tprivate invalidate = this.store.select('invalidate');\n\n\toptions = input({ active: true } as GlitchOptions, { transform: mergeInputs({ active: true }) });\n\n\tprivate active = pick(this.options, 'active');\n\tprivate mode = pick(this.options, 'mode');\n\n\tprivate delay = vector2(this.options, 'delay');\n\tprivate duration = vector2(this.options, 'duration');\n\tprivate chromaticAberrationOffset = vector2(this.options, 'chromaticAberrationOffset');\n\tprivate strength = vector2(this.options, 'strength');\n\n\teffect = computed(() => {\n\t\tconst [\n\t\t\t{ ratio, dtSize, columns, blendFunction, perturbationMap },\n\t\t\tdelay,\n\t\t\tduration,\n\t\t\tchromaticAberrationOffset,\n\t\t\tstrength,\n\t\t] = [this.options(), this.delay(), this.duration(), this.chromaticAberrationOffset(), this.strength()];\n\t\treturn new GlitchEffect({\n\t\t\tratio,\n\t\t\tdtSize,\n\t\t\tcolumns,\n\t\t\tblendFunction,\n\t\t\tperturbationMap,\n\t\t\tdelay,\n\t\t\tduration,\n\t\t\tchromaticAberrationOffset,\n\t\t\tstrength,\n\t\t});\n\t});\n\n\tconstructor() {\n\t\tafterNextRender(() => {\n\t\t\tthis.autoEffect(() => {\n\t\t\t\tconst effect = this.effect();\n\t\t\t\treturn () => effect.dispose();\n\t\t\t});\n\n\t\t\tthis.autoEffect(() => {\n\t\t\t\tconst [effect, invalidate, mode, active] = [this.effect(), this.invalidate(), this.mode(), this.active()];\n\t\t\t\teffect.mode = active ? mode || GlitchMode.SPORADIC : GlitchMode.DISABLED;\n\t\t\t\tinvalidate();\n\t\t\t});\n\t\t});\n\t}\n}\n","import {\n\tCUSTOM_ELEMENTS_SCHEMA,\n\tChangeDetectionStrategy,\n\tComponent,\n\tElementRef,\n\tafterNextRender,\n\tcomputed,\n\tinject,\n\tinput,\n} from '@angular/core';\nimport { NgtArgs, is } from 'angular-three';\nimport { injectAutoEffect } from 'ngxtension/auto-effect';\nimport { GodRaysEffect } from 'postprocessing';\nimport { Mesh, Points } from 'three';\nimport { NgtpEffectComposer } from '../effect-composer';\n\ntype GodRaysOptions = ConstructorParameters<typeof GodRaysEffect>[2] & {\n\tsun: Mesh | Points | ElementRef<Mesh | Points>;\n};\n\n@Component({\n\tselector: 'ngtp-god-rays',\n\tstandalone: true,\n\ttemplate: `\n\t\t<ngt-primitive *args=\"[effect()]\" />\n\t`,\n\timports: [NgtArgs],\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n\tschemas: [CUSTOM_ELEMENTS_SCHEMA],\n})\nexport class NgtpGodRays {\n\tprivate autoEffect = injectAutoEffect();\n\tprivate effectComposer = inject(NgtpEffectComposer);\n\n\toptions = input({} as GodRaysOptions);\n\n\teffect = computed(() => {\n\t\tconst [camera, { sun, ...options }] = [this.effectComposer.camera(), this.options()];\n\t\treturn new GodRaysEffect(camera, is.ref(sun) ? sun.nativeElement : sun, options);\n\t});\n\n\tconstructor() {\n\t\tafterNextRender(() => {\n\t\t\tthis.autoEffect(() => {\n\t\t\t\tconst [sun, effect] = [this.options().sun, this.effect()];\n\t\t\t\teffect.lightSource = is.ref(sun) ? sun.nativeElement : sun;\n\t\t\t});\n\t\t});\n\t}\n}\n","import {\n\tCUSTOM_ELEMENTS_SCHEMA,\n\tChangeDetectionStrategy,\n\tComponent,\n\tafterNextRender,\n\tcomputed,\n\tinput,\n} from '@angular/core';\nimport { NgtArgs, pick } from 'angular-three';\nimport { injectAutoEffect } from 'ngxtension/auto-effect';\nimport { GridEffect } from 'postprocessing';\n\ntype GridOptions = NonNullable<ConstructorParameters<typeof GridEffect>[0]> &\n\tPartial<{ size: { width: number; height: number } }>;\n\n@Component({\n\tselector: 'ngtp-grid',\n\tstandalone: true,\n\ttemplate: `\n\t\t<ngt-primitive *args=\"[effect()]\" />\n\t`,\n\timports: [NgtArgs],\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n\tschemas: [CUSTOM_ELEMENTS_SCHEMA],\n})\nexport class NgtpGrid {\n\tprivate autoEffect = injectAutoEffect();\n\n\toptions = input({} as GridOptions);\n\tprivate size = pick(this.options, 'size');\n\n\teffect = computed(() => {\n\t\tconst { size: _, ...options } = this.options();\n\t\treturn new GridEffect(options);\n\t});\n\n\tconstructor() {\n\t\tafterNextRender(() => {\n\t\t\tthis.autoEffect(() => {\n\t\t\t\tconst [size, effect] = [this.size(), this.effect()];\n\t\t\t\tif (size) {\n\t\t\t\t\teffect.setSize(size.width, size.height);\n\t\t\t\t}\n\t\t\t});\n\t\t});\n\t}\n}\n","import { CUSTOM_ELEMENTS_SCHEMA, ChangeDetectionStrategy, Component, inject, input } from '@angular/core';\nimport { NgtArgs, extend } from 'angular-three';\nimport { HueSaturationEffect } from 'postprocessing';\nimport { NgtpEffect, NgtpEffectBlendMode, NgtpEffectHostDirective } from '../effect';\n\nextend({ HueSaturationEffect });\n\nexport type HueSaturationEffectOptions = Partial<NonNullable<ConstructorParameters<typeof HueSaturationEffect>[0]>>;\n\n@Component({\n\tselector: 'ngtp-hue-saturation',\n\ttemplate: `\n\t\t<ngt-hue-saturation-effect *args=\"[options()]\" [camera]=\"effect.camera()\">\n\t\t\t<ngtp-effect-blend-mode />\n\t\t\t<ng-content />\n\t\t</ngt-hue-saturation-effect>\n\t`,\n\tstandalone: true,\n\tschemas: [CUSTOM_ELEMENTS_SCHEMA],\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n\timports: [NgtArgs, NgtpEffectBlendMode],\n\thostDirectives: [NgtpEffectHostDirective],\n})\nexport class NgtpHueSaturation {\n\teffect = inject(NgtpEffect, { host: true });\n\toptions = input({} as Omit<HueSaturationEffectOptions, 'blendFunction'>);\n}\n","// Created by Anderson Mancini 2023\n// React Three Fiber Ultimate LensFlare\n\nimport {\n\tCUSTOM_ELEMENTS_SCHEMA,\n\tChangeDetectionStrategy,\n\tComponent,\n\tafterNextRender,\n\tcomputed,\n\tinject,\n\tinput,\n} from '@angular/core';\nimport { NgtArgs, injectBeforeRender, injectStore } from 'angular-three';\nimport { easing } from 'maath';\nimport { injectAutoEffect } from 'ngxtension/auto-effect';\nimport { mergeInputs } from 'ngxtension/inject-inputs';\nimport { BlendFunction, Effect } from 'postprocessing';\nimport { Color, Mesh, Texture, Uniform, Vector2, Vector3, WebGLRenderTarget, WebGLRenderer } from 'three';\nimport { NgtpEffectComposer } from '../effect-composer';\n\nconst LensFlareShader = {\n\tfragmentShader: /* language=glsl glsl */ `\n\n uniform float iTime;\n uniform vec2 lensPosition;\n uniform vec2 iResolution;\n uniform vec3 colorGain;\n uniform float starPoints;\n uniform float glareSize;\n uniform float flareSize;\n uniform float flareSpeed;\n uniform float flareShape;\n uniform float haloScale;\n uniform float opacity;\n uniform bool animated;\n uniform bool anamorphic;\n uniform bool enabled;\n uniform bool secondaryGhosts;\n uniform bool starBurst;\n uniform float ghostScale;\n uniform bool aditionalStreaks;\n uniform sampler2D lensDirtTexture;\n vec2 vxtC;\n\n float rndf(float n){return fract(sin(n) * 43758.5453123);}float niz(float p){float fl = floor(p);float fc = fract(p);return mix(rndf(fl),rndf(fl + 1.0), fc);}\n vec3 hsv2rgb(vec3 c){vec4 k = vec4(1.0, 2.0 / 3.0, 1.0 / 3.0, 3.0);vec3 p = abs(fract(c.xxx + k.xyz) * 6.0 - k.www);return c.z * mix(k.xxx, clamp(p - k.xxx, 0.0, 1.0), c.y);}\n float satU(float x){return clamp(x, 0.,1.);}vec2 rtU(vec2 naz, float rtn){return vec2(cos(rtn) * naz.x + sin(rtn) * naz.y,cos(rtn) * naz.y - sin(rtn) * naz.x);}\n vec3 drwF(vec2 p, float intensity, float rnd, float speed, int id){float flhos = (1. / 32.) * float(id) * 0.1;float lingrad = distance(vec2(0.), p);float expg = 1. / exp(lingrad * (fract(rnd) * 0.66 + 0.33));vec3 qzTg = hsv2rgb(vec3( fract( (expg * 8.) + speed * flareSpeed + flhos), pow(1.-abs(expg*2.-1.), 0.45), 20.0 * expg * intensity));float internalStarPoints;if(anamorphic){internalStarPoints = 1.0;} else{internalStarPoints = starPoints;}float ams = length(p * flareShape * sin(internalStarPoints * atan(p.x, p.y)));float kJhg = pow(1.-satU(ams), ( anamorphic ? 100. : 12.));kJhg += satU(expg-0.9) * 3.;kJhg = pow(kJhg * expg, 8. + (1.-intensity) * 5.);if(flareSpeed > 0.0){return vec3(kJhg) * qzTg;} else{return vec3(kJhg) * flareSize * 15.;}}\n float ams2(vec3 a, vec3 b) { return abs(a.x - b.x) + abs(a.y - b.y) + abs(a.z - b.z);}vec3 satU(vec3 x){return clamp(x, vec3(0.0), vec3(1.0));}\n float glR(vec2 naz, vec2 pos, float zsi){vec2 mni;if(animated){mni = rtU(naz-pos, iTime * 0.1);} else{mni = naz-pos;}float ang = atan(mni.y, mni.x) * (anamorphic ? 1.0 : starPoints);float ams2 = length(mni);ams2 = pow(ams2, .9);float f0 = 1.0/(length(naz-pos)*(1.0/zsi*16.0)+.2);return f0+f0*(sin((ang))*.2 +.3);}\n float sdHex(vec2 p){p = abs(p);vec2 q = vec2(p.x*2.0*0.5773503, p.y + p.x*0.5773503);return dot(step(q.xy,q.yx), 1.0-q.yx);}float fpow(float x, float k){return x > k ? pow((x-k)/(1.0-k),2.0) : 0.0;}\n vec3 rHx(vec2 naz, vec2 p, float s, vec3 col){naz -= p;if (abs(naz.x) < 0.2*s && abs(naz.y) < 0.2*s){return mix(vec3(0),mix(vec3(0),col,0.1 + fpow(length(naz/s),0.1)*10.0),smoothstep(0.0,0.1,sdHex(naz*20.0/s)));}return vec3(0);}\n vec3 mLs(vec2 naz, vec2 pos){vec2 mni = naz-pos;vec2 zxMp = naz*(length(naz));float ang = atan(mni.x,mni.y);float f0 = .3/(length(naz-pos)*16.0+1.0);f0 = f0*(sin(niz(sin(ang*3.9-(animated ? iTime : 0.0) * 0.3) * starPoints))*.2 );float f1 = max(0.01-pow(length(naz+1.2*pos),1.9),.0)*7.0;float f2 = max(.9/(10.0+32.0*pow(length(zxMp+0.99*pos),2.0)),.0)*0.35;float f22 = max(.9/(11.0+32.0*pow(length(zxMp+0.85*pos),2.0)),.0)*0.23;float f23 = max(.9/(12.0+32.0*pow(length(zxMp+0.95*pos),2.0)),.0)*0.6;vec2 ztX = mix(naz,zxMp, 0.1);float f4 = max(0.01-pow(length(ztX+0.4*pos),2.9),.0)*4.02;float f42 = max(0.0-pow(length(ztX+0.45*pos),2.9),.0)*4.1;float f43 = max(0.01-pow(length(ztX+0.5*pos),2.9),.0)*4.6;ztX = mix(naz,zxMp,-.4);float f5 = max(0.01-pow(length(ztX+0.1*pos),5.5),.0)*2.0;float f52 = max(0.01-pow(length(ztX+0.2*pos),5.5),.0)*2.0;float f53 = max(0.01-pow(length(ztX+0.1*pos),5.5),.0)*2.0;ztX = mix(naz,zxMp, 2.1);float f6 = max(0.01-pow(length(ztX-0.3*pos),1.61),.0)*3.159;float f62 = max(0.01-pow(length(ztX-0.325*pos),1.614),.0)*3.14;float f63 = max(0.01-pow(length(ztX-0.389*pos),1.623),.0)*3.12;vec3 c = vec3(glR(naz,pos, glareSize));vec2 prot;if(animated){prot = rtU(naz - pos, (iTime * 0.1));} else if(anamorphic){prot = rtU(naz - pos, 1.570796);} else {prot = naz - pos;}c += drwF(prot, (anamorphic ? flareSize * 10. : flareSize), 0.1, iTime, 1);c.r+=f1+f2+f4+f5+f6; c.g+=f1+f22+f42+f52+f62; c.b+=f1+f23+f43+f53+f63;c = c*1.3 * vec3(length(zxMp)+.09);c+=vec3(f0);return c;}\n vec3 cc(vec3 clr, float fct,float fct2){float w = clr.x+clr.y+clr.z;return mix(clr,vec3(w)*fct,w*fct2);}float rnd(vec2 p){float f = fract(sin(dot(p, vec2(12.1234, 72.8392) )*45123.2));return f;}float rnd(float w){float f = fract(sin(w)*1000.);return f;}\n float rShp(vec2 p, int N){float f;float a=atan(p.x,p.y)+.2;float b=6.28319/float(N);f=smoothstep(.5,.51, cos(floor(.5+a/b)*b-a)*length(p.xy)* 2.0 -ghostScale);return f;}\n vec3 drC(vec2 p, float zsi, float dCy, vec3 clr, vec3 clr2, float ams2, vec2 esom){float l = length(p + esom*(ams2*2.))+zsi/2.;float l2 = length(p + esom*(ams2*4.))+zsi/3.;float c = max(0.01-pow(length(p + esom*ams2), zsi*ghostScale), 0.0)*10.;float c1 = max(0.001-pow(l-0.3, 1./40.)+sin(l*20.), 0.0)*3.;float c2 = max(0.09/pow(length(p-esom*ams2/.5)*1., .95), 0.0)/20.;float s = max(0.02-pow(rShp(p*5. + esom*ams2*5. + dCy, 6) , 1.), 0.0)*1.5;clr = cos(vec3(0.44, .24, .2)*8. + ams2*4.)*0.5+.5;vec3 f = c*clr;f += c1*clr;f += c2*clr;f += s*clr;return f-0.01;}\n vec4 geLC(float x){return vec4(vec3(mix(mix(mix(mix(mix(mix(mix(mix(mix(mix(mix(mix(mix(mix(mix(vec3(0., 0., 0.),vec3(0., 0., 0.), smoothstep(0.0, 0.063, x)),vec3(0., 0., 0.), smoothstep(0.063, 0.125, x)),vec3(0.0, 0., 0.), smoothstep(0.125, 0.188, x)),vec3(0.188, 0.131, 0.116), smoothstep(0.188, 0.227, x)),vec3(0.31, 0.204, 0.537), smoothstep(0.227, 0.251, x)),vec3(0.192, 0.106, 0.286), smoothstep(0.251, 0.314, x)),vec3(0.102, 0.008, 0.341), smoothstep(0.314, 0.392, x)),vec3(0.086, 0.0, 0.141), smoothstep(0.392, 0.502, x)),vec3(1.0, 0.31, 0.0), smoothstep(0.502, 0.604, x)),vec3(.1, 0.1, 0.1), smoothstep(0.604, 0.643, x)),vec3(1.0, 0.929, 0.0), smoothstep(0.643, 0.761, x)),vec3(1.0, 0.086, 0.424), smoothstep(0.761, 0.847, x)),vec3(1.0, 0.49, 0.0), smoothstep(0.847, 0.89, x)),vec3(0.945, 0.275, 0.475), smoothstep(0.89, 0.941, x)),vec3(0.251, 0.275, 0.796), smoothstep(0.941, 1.0, x))),1.0);}\n float diTN(vec2 p){vec2 f = fract(p);f = (f * f) * (3.0 - (2.0 * f));float n = dot(floor(p), vec2(1.0, 157.0));vec4 a = fract(sin(vec4(n + 0.0, n + 1.0, n + 157.0, n + 158.0)) * 43758.5453123);return mix(mix(a.x, a.y, f.x), mix(a.z, a.w, f.x), f.y);}\n float fbm(vec2 p){const mat2 m = mat2(0.80, -0.60, 0.60, 0.80);float f = 0.0;f += 0.5000*diTN(p); p = m*p*2.02;f += 0.2500*diTN(p); p = m*p*2.03;f += 0.1250*diTN(p); p = m*p*2.01;f += 0.0625*diTN(p);return f/0.9375;}\n vec4 geLS(vec2 p){vec2 pp = (p - vec2(0.5)) * 2.0;float a = atan(pp.y, pp.x);vec4 cp = vec4(sin(a * 1.0), length(pp), sin(a * 13.0), sin(a * 53.0));float d = sin(clamp(pow(length(vec2(0.5) - p) * 0.5 + haloScale /2., 5.0), 0.0, 1.0) * 3.14159);vec3 c = vec3(d) * vec3(fbm(cp.xy * 16.0) * fbm(cp.zw * 9.0) * max(max(max(max(0.5, sin(a * 1.0)), sin(a * 3.0) * 0.8), sin(a * 7.0) * 0.8), sin(a * 9.0) * 10.6));c *= vec3(mix(2.0, (sin(length(pp.xy) * 256.0) * 0.5) + 0.5, sin((clamp((length(pp.xy) - 0.875) / 0.1, 0.0, 1.0) + 0.0) * 2.0 * 3.14159) * 1.5) + 0.5) * 0.3275;return vec4(vec3(c * 1.0), d);}\n vec4 geLD(vec2 p){p.xy += vec2(fbm(p.yx * 3.0), fbm(p.yx * 2.0)) * 0.0825;vec3 o = vec3(mix(0.125, 0.25, max(max(smoothstep(0.1, 0.0, length(p - vec2(0.25))),smoothstep(0.4, 0.0, length(p - vec2(0.75)))),smoothstep(0.8, 0.0, length(p - vec2(0.875, 0.125))))));o += vec3(max(fbm(p * 1.0) - 0.5, 0.0)) * 0.5;o += vec3(max(fbm(p * 2.0) - 0.5, 0.0)) * 0.5;o += vec3(max(fbm(p * 4.0) - 0.5, 0.0)) * 0.25;o += vec3(max(fbm(p * 8.0) - 0.75, 0.0)) * 1.0;o += vec3(max(fbm(p * 16.0) - 0.75, 0.0)) * 0.75;o += vec3(max(fbm(p * 64.0) - 0.75, 0.0)) * 0.5;return vec4(clamp(o, vec3(0.15), vec3(1.0)), 1.0);}\n vec4 txL(sampler2D tex, vec2 xtC){if(((xtC.x < 0.) || (xtC.y < 0.)) || ((xtC.x > 1.) || (xtC.y > 1.))){return vec4(0.0);}else{return texture(tex, xtC); }}\n vec4 txD(sampler2D tex, vec2 xtC, vec2 dir, vec3 ditn) {return vec4(txL(tex, (xtC + (dir * ditn.r))).r,txL(tex, (xtC + (dir * ditn.g))).g,txL(tex, (xtC + (dir * ditn.b))).b,1.0);}\n vec4 strB(){vec2 aspXtc = vec2(1.0) - (((vxtC - vec2(0.5)) * vec2(1.0)) + vec2(0.5)); vec2 xtC = vec2(1.0) - vxtC; vec2 ghvc = (vec2(0.5) - xtC) * 0.3 - lensPosition; vec2 ghNm = normalize(ghvc * vec2(1.0)) * vec2(1.0);vec2 haloVec = normalize(ghvc) * 0.6;vec2 hlNm = ghNm * 0.6;vec2 texelSize = vec2(1.0) / vec2(iResolution.xy);vec3 ditn = vec3(-(texelSize.x * 1.5), 0.2, texelSize.x * 1.5);vec4 c = vec4(0.0);for (int i = 0; i < 8; i++) {vec2 offset = xtC + (ghvc * float(i));c += txD(lensDirtTexture, offset, ghNm, ditn) * pow(max(0.0, 1.0 - (length(vec2(0.5) - offset) / length(vec2(0.5)))), 10.0);}vec2 uyTrz = xtC + hlNm; return (c * geLC((length(vec2(0.5) - aspXtc) / length(vec2(haloScale))))) +(txD(lensDirtTexture, uyTrz, ghNm, ditn) * pow(max(0.0, 1.0 - (length(vec2(0.5) - uyTrz) / length(vec2(0.5)))), 10.0));}\n void mainImage(vec4 v,vec2 r,out vec4 i){vec2 g=r-.5;g.y*=iResolution.y/iResolution.x;vec2 l=lensPosition*.5;l.y*=iResolution.y/iResolution.x;vec3 f=mLs(g,l)*20.*colorGain/256.;if(aditionalStreaks){vec3 o=vec3(.9,.2,.1),p=vec3(.3,.1,.9);for(float n=0.;n<10.;n++)f+=drC(g,pow(rnd(n*2e3)*2.8,.1)+1.41,0.,o+n,p+n,rnd(n*20.)*3.+.2-.5,lensPosition);}if(secondaryGhosts){vec3 n=vec3(0);n+=rHx(g,-lensPosition*.25,ghostScale*1.4,vec3(.25,.35,0));n+=rHx(g,lensPosition*.25,ghostScale*.5,vec3(1,.5,.5));n+=rHx(g,lensPosition*.1,ghostScale*1.6,vec3(1));n+=rHx(g,lensPosition*1.8,ghostScale*2.,vec3(0,.5,.75));n+=rHx(g,lensPosition*1.25,ghostScale*.8,vec3(1,1,.5));n+=rHx(g,-lensPosition*1.25,ghostScale*5.,vec3(.5,.5,.25));n+=fpow(1.-abs(distance(lensPosition*.8,g)-.7),.985)*colorGain/2100.;f+=n;}if(starBurst){vxtC=g+.5;vec4 n=geLD(g);float o=1.-clamp(0.5,0.,.5)*2.;n+=mix(n,pow(n*2.,vec4(2))*.5,o);float s=(g.x+g.y)*(1./6.);vec2 d=mat2(cos(s),-sin(s),sin(s),cos(s))*vxtC;n+=geLS(d)*2.;f+=clamp(n.xyz*strB().xyz,.01,1.);}i=enabled?vec4(mix(f,vec3(0),opacity)+v.xyz,v.w):vec4(v);}\n`,\n};\n\nexport class LensFlareEffect extends Effect {\n\tconstructor({\n\t\tblendFunction = BlendFunction.NORMAL,\n\t\tenabled = true,\n\t\tglareSize = 0.2,\n\t\tlensPosition = [0.01, 0.01],\n\t\tiResolution = [0, 0],\n\t\tstarPoints = 6,\n\t\tflareSize = 0.01,\n\t\tflareSpeed = 0.01,\n\t\tflareShape = 0.01,\n\t\tanimated = true,\n\t\tanamorphic = false,\n\t\tcolorGain = new Color(20, 20, 20),\n\t\tlensDirtTexture = null as Texture | null,\n\t\thaloScale = 0.5,\n\t\tsecondaryGhosts = true,\n\t\taditionalStreaks = true,\n\t\tghostScale = 0.0,\n\t\topacity = 1.0,\n\t\tstarBurst = false,\n\t} = {}) {\n\t\tsuper('LensFlareEffect', LensFlareShader.fragmentShader, {\n\t\t\tblendFunction,\n\t\t\tuniforms: new Map<string, Uniform>([\n\t\t\t\t['enabled', new Uniform(enabled)],\n\t\t\t\t['glareSize', new Uniform(glareSize)],\n\t\t\t\t['lensPosition', new Uniform(lensPosition)],\n\t\t\t\t['iTime', new Uniform(0)],\n\t\t\t\t['iResolution', new Uniform(iResolution)],\n\t\t\t\t['starPoints', new Uniform(starPoints)],\n\t\t\t\t['flareSize', new Uniform(flareSize)],\n\t\t\t\t['flareSpeed', new Uniform(flareSpeed)],\n\t\t\t\t['flareShape', new Uniform(flareShape)],\n\t\t\t\t['animated', new Uniform(animated)],\n\t\t\t\t['anamorphic', new Uniform(anamorphic)],\n\t\t\t\t['colorGain', new Uniform(colorGain)],\n\t\t\t\t['lensDirtTexture', new Uniform(lensDirtTexture)],\n\t\t\t\t['haloScale', new Uniform(haloScale)],\n\t\t\t\t['secondaryGhosts', new Uniform(secondaryGhosts)],\n\t\t\t\t['aditionalStreaks', new Uniform(aditionalStreaks)],\n\t\t\t\t['ghostScale', new Uniform(ghostScale)],\n\t\t\t\t['starBurst', new Uniform(starBurst)],\n\t\t\t\t['opacity', new Uniform(opacity)],\n\t\t\t]),\n\t\t});\n\t}\n\n\toverride update(_renderer: WebGLRenderer, _inputBuffer: WebGLRenderTarget, deltaTime: number) {\n\t\tconst iTime = this.uniforms.get('iTime');\n\t\tif (iTime) {\n\t\t\tiTime.value += deltaTime;\n\t\t}\n\t}\n}\n\nexport type LensFlareOptions = ConstructorParameters<typeof LensFlareEffect>[0] & {\n\tposition: Vector3;\n\tfollowMouse: boolean;\n\tsmoothTime: number;\n};\n\nconst defaultOptions: LensFlareOptions = {\n\tposition: new Vector3(-25, 6, -60),\n\tfollowMouse: false,\n\tsmoothTime: 0.7,\n};\n\n@Component({\n\tselector: 'ngtp-lens-flare',\n\tstandalone: true,\n\ttemplate: `\n\t\t<ngt-primitive *args=\"[effect()]\" [parameters]=\"{ dispose: null }\" />\n\t`,\n\timports: [NgtArgs],\n\tschemas: [CUSTOM_ELEMENTS_SCHEMA],\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class NgtpLensFlare {\n\tprivate autoEffect = injectAutoEffect();\n\tprivate store = injectStore();\n\tprivate viewport = this.store.select('viewport');\n\tprivate raycaster = this.store.select('raycaster');\n\tprivate pointer = this.store.select('pointer');\n\n\teffectComposer = inject(NgtpEffectComposer);\n\n\toptions = input(defaultOptions, { transform: mergeInputs(defaultOptions) });\n\n\tprivate projectedPosition = new Vector3();\n\tprivate mouse2d = new Vector2();\n\n\teffect = computed(() => {\n\t\tconst { position: _, followMouse: __, smoothTime: ___, ...options } = this.options();\n\t\treturn new LensFlareEffect(options);\n\t});\n\n\tconstructor() {\n\t\tafterNextRender(() => {\n\t\t\tthis.autoEffect(() => {\n\t\t\t\tconst [effect, viewport] = [this.effect(), this.viewport()];\n\t\t\t\tconst iResolution = effect.uniforms.get('iResolution');\n\t\t\t\tif (iResolution) {\n\t\t\t\t\tiResolution.value.x = viewport.width;\n\t\t\t\t\tiResolution.value.y = viewport.height;\n\t\t\t\t}\n\t\t\t});\n\t\t});\n\n\t\tinjectBeforeRender(({ delta }) => {\n\t\t\tconst [effect] = [this.effect()];\n\t\t\tif (!effect) return;\n\n\t\t\tconst [{ followMouse, position, smoothTime }, pointer, camera, scene, raycaster] = [\n\t\t\t\tthis.options(),\n\t\t\t\tthis.pointer(),\n\t\t\t\tthis.effectComposer.camera(),\n\t\t\t\tthis.effectComposer.scene(),\n\t\t\t\tthis.raycaster(),\n\t\t\t];\n\n\t\t\tconst uLensPosition = effect.uniforms.get('lensPosition');\n\t\t\tconst uOpacity = effect.uniforms.get('opacity');\n\t\t\tif (!uLensPosition || !uOpacity) return;\n\n\t\t\tlet target = 1;\n\n\t\t\tif (followMouse) {\n\t\t\t\tuLensPosition.value.x = pointer.x;\n\t\t\t\tuLensPosition.value.y = pointer.y;\n\t\t\t\ttarget = 0;\n\t\t\t} else {\n\t\t\t\tthis.projectedPosition.copy(position).project(camera);\n\t\t\t\tif (this.projectedPosition.z > 1) return;\n\n\t\t\t\tuLensPosition.value.x = this.projectedPosition.x;\n\t\t\t\tuLensPosition.value.y = this.projectedPosition.y;\n\n\t\t\t\tthis.mouse2d.set(this.projectedPosition.x, this.projectedPosition.y);\n\t\t\t\traycaster.setFromCamera(this.mouse2d, camera);\n\t\t\t\tconst intersects = raycaster.intersectObjects(scene.children, true);\n\t\t\t\tconst { object } = intersects[0] ?? {};\n\t\t\t\tif (object) {\n\t\t\t\t\tif (object.userData?.['lensflare'] === 'no-occlusion') {\n\t\t\t\t\t\ttarget = 0;\n\t\t\t\t\t} else if (object instanceof Mesh) {\n\t\t\t\t\t\tif (object.material.uniforms?._transmission?.value > 0.2) {\n\t\t\t\t\t\t\t//Check for MeshTransmissionMaterial\n\t\t\t\t\t\t\ttarget = 0.2;\n\t\t\t\t\t\t} else if (object.material._transmission && object.material._transmission > 0.2) {\n\t\t\t\t\t\t\t//Check for MeshPhysicalMaterial with transmission setting\n\t\t\t\t\t\t\ttarget = 0.2;\n\t\t\t\t\t\t} else if (object.material.transparent) {\n\t\t\t\t\t\t\t// Check for OtherMaterials with transparent parameter\n\t\t\t\t\t\t\ttarget = object.material.opacity;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\teasing.damp(uOpacity, 'value', target, smoothTime, delta);\n\t\t});\n\t}\n}\n","import {\n\tCUSTOM_ELEMENTS_SCHEMA,\n\tChangeDetectionStrategy,\n\tComponent,\n\tafterNextRender,\n\tcomputed,\n\tinput,\n} from '@angular/core';\nimport { NgtArgs, injectStore, pick } from 'angular-three';\nimport { injectAutoEffect } from 'ngxtension/auto-effect';\nimport { BlendFunction, LUT3DEffect } from 'postprocessing';\nimport { Texture } from 'three';\n\nexport interface LUTOptions {\n\tlut: Texture;\n\tblendFunction?: BlendFunction;\n\ttetrahedralInterpolation?: boolean;\n}\n\n@Component({\n\tselector: 'ngtp-lut',\n\ttemplate: `\n\t\t<ngt-primitive *args=\"[effect()]\" [dispose]=\"null\" />\n\t`,\n\timports: [NgtArgs],\n\tstandalone: true,\n\tschemas: [CUSTOM_ELEMENTS_SCHEMA],\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class NgtpLUT {\n\tprivate autoEffect = injectAutoEffect();\n\tprivate store = injectStore();\n\tprivate invalidate = this.store.select('invalidate');\n\n\toptions = input({} as LUTOptions);\n\tprivate lut = pick(this.options, 'lut');\n\n\teffect = computed(() => {\n\t\tconst [lut, { lut: _, ...options }] = [this.lut(), this.options()];\n\t\treturn new LUT3DEffect(lut, options);\n\t});\n\n\tconstructor() {\n\t\tafterNextRender(() => {\n\t\t\tthis.autoEffect(() => {\n\t\t\t\tconst [effect, { lut, tetrahedralInterpolation }, invalidate] = [\n\t\t\t\t\tthis.effect(),\n\t\t\t\t\tthis.options(),\n\t\t\t\t\tthis.invalidate(),\n\t\t\t\t];\n\n\t\t\t\tif (tetrahedralInterpolation) effect.tetrahedralInterpolation = tetrahedralInterpolation;\n\t\t\t\tif (lut) effect.lut = lut;\n\t\t\t\tinvalidate();\n\t\t\t});\n\t\t});\n\t}\n}\n","import { CUSTOM_ELEMENTS_SCHEMA, ChangeDetectionStrategy, Component, inject, input } from '@angular/core';\nimport { NgtArgs, extend } from 'angular-three';\nimport { BlendFunction, NoiseEffect } from 'postprocessing';\nimport { NgtpEffect, NgtpEffectBlendMode, NgtpEffectHostDirective, provideDefaultEffectOptions } from '../effect';\n\nextend({ NoiseEffect });\n\nexport type NoiseEffectOptions = Partial<NonNullable<ConstructorParameters<typeof NoiseEffect>[0]>>;\n\n@Component({\n\tselector: 'ngtp-noise',\n\ttemplate: `\n\t\t<ngt-noise-effect *args=\"[options()]\" [camera]=\"effect.camera()\">\n\t\t\t<ngtp-effect-blend-mode />\n\t\t\t<ng-content />\n\t\t</ngt-noise-effect>\n\t`,\n\tstandalone: true,\n\tschemas: [CUSTOM_ELEMENTS_SCHEMA],\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n\timports: [NgtArgs, NgtpEffectBlendMode],\n\thostDirectives: [NgtpEffectHostDirective],\n\tproviders: [provideDefaultEffectOptions({ blendFunction: BlendFunction.COLOR_DODGE })],\n})\nexport class NgtpNoise {\n\teffect = inject(NgtpEffect, { host: true });\n\toptions = input({} as Omit<NoiseEffectOptions, 'blendFunction'>);\n}\n","import { CUSTOM_ELEMENTS_SCHEMA, ChangeDetectionStrategy, Component, computed, input } from '@angular/core';\nimport { NgtArgs, pick } from 'angular-three';\nimport { mergeInputs } from 'ngxtension/inject-inputs';\nimport { PixelationEffect } from 'postprocessing';\n\nexport interface PixelationOptions {\n\tgranularity: number;\n}\n@Component({\n\tselector: 'ngtp-pixelation',\n\ttemplate: `\n\t\t<ngt-primitive *args=\"[effect()]\" />\n\t`,\n\tstandalone: true,\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n\tschemas: [CUSTOM_ELEMENTS_SCHEMA],\n\timports: [NgtArgs],\n})\nexport class NgtpPixelation {\n\toptions = input({ granularity: 5 } as PixelationOptions, { transform: mergeInputs({ granularity: 5 }) });\n\tprivate granularity = pick(this.options, 'granularity');\n\n\teffect = computed(() => new PixelationEffect(this.granularity()));\n}\n","import { CUSTOM_ELEMENTS_SCHEMA, ChangeDetectionStrategy, Component, inject, input } from '@angular/core';\nimport { NgtArgs, extend } from 'angular-three';\nimport { mergeInputs } from 'ngxtension/inject-inputs';\nimport { BlendFunction, ScanlineEffect } from 'postprocessing';\nimport { NgtpEffect, NgtpEffectBlendMode, NgtpEffectHostDirective, provideDefaultEffectOptions } from '../effect';\n\nextend({ ScanlineEffect });\n\nexport type ScanlineEffectOptions = Partial<NonNullable<ConstructorParameters<typeof ScanlineEffect>[0]>>;\n\nconst defaultOptions: Omit<ScanlineEffectOptions, 'blendFunction'> = {\n\tdensity: 1.25,\n};\n\n@Component({\n\tselector: 'ngtp-scanline',\n\ttemplate: `\n\t\t<ngt-scanline-effect *args=\"[options()]\" [camera]=\"effect.camera()\">\n\t\t\t<ngtp-effect-blend-mode />\n\t\t\t<ng-content />\n\t\t</ngt-scanline-effect>\n\t`,\n\tstandalone: true,\n\tschemas: [CUSTOM_ELEMENTS_SCHEMA],\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n\timports: [NgtArgs, NgtpEffectBlendMode],\n\thostDirectives: [NgtpEffectHostDirective],\n\tproviders: [provideDefaultEffectOptions({ blendFunction: BlendFunction.OVERLAY })],\n})\nexport class NgtpScanline {\n\teffect = inject(NgtpEffect, { host: true });\n\toptions = input(defaultOptions, { transform: mergeInputs(defaultOptions) });\n}\n","import { CUSTOM_ELEMENTS_SCHEMA, ChangeDetectionStrategy, Component, inject, input } from '@angular/core';\nimport { NgtArgs, extend } from 'angular-three';\nimport { SepiaEffect } from 'postprocessing';\nimport { NgtpEffect, NgtpEffectBlendMode, NgtpEffectHostDirective } from '../effect';\n\nextend({ SepiaEffect });\n\nexport type SepiaEffectOptions = Partial<NonNullable<ConstructorParameters<typeof SepiaEffect>[0]>>;\n\n@Component({\n\tselector: 'ngtp-sepia',\n\ttemplate: `\n\t\t<ngt-sepia-effect *args=\"[options()]\" [camera]=\"effect.camera()\">\n\t\t\t<ngtp-effect-blend-mode />\n\t\t\t<ng-content />\n\t\t</ngt-sepia-effect>\n\t`,\n\tstandalone: true,\n\tschemas: [CUSTOM_ELEMENTS_SCHEMA],\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n\timports: [NgtArgs, NgtpEffectBlendMode],\n\thostDirectives: [NgtpEffectHostDirective],\n})\nexport class NgtpSepia {\n\teffect = inject(NgtpEffect, { host: true });\n\toptions = input({} as Omit<SepiaEffectOptions, 'blendFunction'>);\n}\n","import { CUSTOM_ELEMENTS_SCHEMA, ChangeDetectionStrategy, Component, inject, input } from '@angular/core';\nimport { NgtArgs, extend } from 'angular-three';\nimport { ShockWaveEffect } from 'postprocessing';\nimport { NgtpEffect, NgtpEffectBlendMode, NgtpEffectHostDirective } from '../effect';\n\nextend({ ShockWaveEffect });\n\nexport type ShockWaveEffectOptions = Partial<NonNullable<ConstructorParameters<typeof ShockWaveEffect>[0]>>;\n\n@Component({\n\tselector: 'ngtp-shock-wave',\n\ttemplate: `\n\t\t<ngt-shock-wave-effect *args=\"[options()]\" [camera]=\"effect.camera()\">\n\t\t\t<ngtp-effect-blend-mode />\n\t\t\t<ng-content />\n\t\t</ngt-shock-wave-effect>\n\t`,\n\tstandalone: true,\n\tschemas: [CUSTOM_ELEMENTS_SCHEMA],\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n\timports: [NgtArgs, NgtpEffectBlendMode],\n\thostDirectives: [NgtpEffectHostDirective],\n})\nexport class NgtpShockWave {\n\teffect = inject(NgtpEffect, { host: true });\n\toptions = input({} as Omit<ShockWaveEffectOptions, 'blendFunction'>);\n}\n","import { CUSTOM_ELEMENTS_SCHEMA, ChangeDetectionStrategy, Component, inject, input } from '@angular/core';\nimport { NgtArgs, extend } from 'angular-three';\nimport { SMAAEffect } from 'postprocessing';\nimport { NgtpEffect, NgtpEffectBlendMode, NgtpEffectHostDirective } from '../effect';\n\nextend({ SMAAEffect });\n\nexport type SMAAEffectOptions = Partial<NonNullable<ConstructorParameters<typeof SMAAEffect>[0]>>;\n\n@Component({\n\tselector: 'ngtp-smaa',\n\ttemplate: `\n\t\t<ngt-sMAA-effect *args=\"[options()]\" [camera]=\"effect.camera()\">\n\t\t\t<ngtp-effect-blend-mode />\n\t\t\t<ng-content />\n\t\t</ngt-sMAA-effect>\n\t`,\n\tstandalone: true,\n\tschemas: [CUSTOM_ELEMENTS_SCHEMA],\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n\timports: [NgtArgs, NgtpEffectBlendMode],\n\thostDirectives: [NgtpEffectHostDirective],\n})\nexport class NgtpSMAA {\n\teffect = inject(NgtpEffect, { host: true });\n\toptions = input({} as Omit<SMAAEffectOptions, 'blendFunction'>);\n}\n","import { CUSTOM_ELEMENTS_SCHEMA, ChangeDetectionStrategy, Component, inject, input } from '@angular/core';\nimport { NgtArgs, extend } from 'angular-three';\nimport { BlendFunction, TiltShiftEffect } from 'postprocessing';\nimport { NgtpEffect, NgtpEffectBlendMode, NgtpEffectHostDirective, provideDefaultEffectOptions } from '../effect';\n\nextend({ TiltShiftEffect });\n\nexport type TiltShiftEffectOptions = Partial<NonNullable<ConstructorParameters<typeof TiltShiftEffect>[0]>>;\n\n@Component({\n\tselector: 'ngtp-tilt-shift',\n\ttemplate: `\n\t\t<ngt-tilt-shift-effect *args=\"[options()]\" [camera]=\"effect.camera()\">\n\t\t\t<ngtp-effect-blend-mode />\n\t\t\t<ng-content />\n\t\t</ngt-tilt-shift-effect>\n\t`,\n\tstandalone: true,\n\tschemas: [CUSTOM_ELEMENTS_SCHEMA],\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n\timports: [NgtArgs, NgtpEffectBlendMode],\n\thostDirectives: [NgtpEffectHostDirective],\n\tproviders: [provideDefaultEffectOptions({ blendFunction: BlendFunction.ADD })],\n})\nexport class NgtpTiltShift {\n\teffect = inject(NgtpEffect, { host: true });\n\toptions = input({} as Omit<TiltShiftEffectOptions, 'blendFunction'>);\n}\n","import { CUSTOM_ELEMENTS_SCHEMA, ChangeDetectionStrategy, Component, inject, input } from '@angular/core';\nimport { NgtArgs, extend } from 'angular-three';\nimport { BlendFunction, Effect, EffectAttribute } from 'postprocessing';\nimport { Uniform } from 'three';\nimport { NgtpEffect, NgtpEffectBlendMode, NgtpEffectHostDirective, provideDefaultEffectOptions } from '../effect';\n\nconst TiltShiftShader = {\n\tfragmentShader: `\n\n // original shader by Evan Wallace\n\n #define MAX_ITERATIONS 100\n\n uniform float blur;\n uniform float taper;\n uniform vec2 start;\n uniform vec2 end;\n uniform vec2 direction;\n uniform int samples;\n\n float random(vec3 scale, float seed) {\n /* use the fragment position for a different seed per-pixel */\n return fract(sin(dot(gl_FragCoord.xyz + seed, scale)) * 43758.5453 + seed);\n }\n\n void mainImage(const in vec4 inputColor, const in vec2 uv, out vec4 outputColor) {\n vec4 color = vec4(0.0);\n float total = 0.0;\n vec2 startPixel = vec2(start.x * resolution.x, start.y * resolution.y);\n vec2 endPixel = vec2(end.x * resolution.x, end.y * resolution.y);\n float f_samples = float(samples);\n float half_samples = f_samples / 2.0;\n\n // use screen diagonal to normalize blur radii\n float maxScreenDistance = distance(vec2(0.0), resolution); // diagonal distance\n float gradientRadius = taper * (maxScreenDistance);\n float blurRadius = blur * (maxScreenDistance / 16.0);\n\n /* randomize the lookup values to hide the fixed number of samples */\n float offset = random(vec3(12.9898, 78.233, 151.7182), 0.0);\n vec2 normal = normalize(vec2(startPixel.y - endPixel.y, endPixel.x - startPixel.x));\n float radius = smoothstep(0.0, 1.0, abs(dot(uv * resolution - startPixel, normal)) / gradientRadius) * blurRadius;\n\n #pragma unroll_loop_start\n for (int i = 0; i <= MAX_ITERATIONS; i++) {\n if (i >= samples) { break; } // return early if over sample count\n float f_i = float(i);\n float s_i = -half_samples + f_i;\n float percent = (s_i + offset - 0.5) / half_samples;\n float weight = 1.0 - abs(percent);\n vec4 sample_i = texture2D(inputBuffer, uv + normalize(direction) / resolution * percent * radius);\n /* switch to pre-multiplied alpha to correctly blur transparent images */\n sample_i.rgb *= sample_i.a;\n color += sample_i * weight;\n total += weight;\n }\n #pragma unroll_loop_end\n\n outputColor = color / total;\n\n /* switch back from pre-multiplied alpha */\n outputColor.rgb /= outputColor.a + 0.00001;\n }\n `,\n};\n\nexport class TiltShift2Effect extends Effect {\n\tconstructor({\n\t\tblendFunction = BlendFunction.NORMAL,\n\t\tblur = 0.15, // [0, 1], can go beyond 1 for extra\n\t\ttaper = 0.5, // [0, 1], can go beyond 1 for extra\n\t\tstart = [0.5, 0.0], // [0,1] percentage x,y of screenspace\n\t\tend = [0.5, 1.0], // [0,1] percentage x,y of screenspace\n\t\tsamples = 10.0, // number of blur samples\n\t\tdirection = [1, 1], // direction of blur\n\t} = {}) {\n\t\tsuper('TiltShiftEffect', TiltShiftShader.fragmentShader, {\n\t\t\tblendFunction,\n\t\t\tattributes: EffectAttribute.CONVOLUTION,\n\t\t\tuniforms: new Map<string, Uniform<number | number[]>>([\n\t\t\t\t['blur', new Uniform(blur)],\n\t\t\t\t['taper', new Uniform(taper)],\n\t\t\t\t['start', new Uniform(start)],\n\t\t\t\t['end', new Uniform(end)],\n\t\t\t\t['samples', new Uniform(samples)],\n\t\t\t\t['direction', new Uniform(direction)],\n\t\t\t]),\n\t\t});\n\t}\n}\n\nexport type TiltShift2EffectOptions = Partial<NonNullable<ConstructorParameters<typeof TiltShift2Effect>[0]>>;\n\nextend({ TiltShift2Effect });\n\n@Component({\n\tselector: 'ngtp-tilt-shift2',\n\tstandalone: true,\n\ttemplate: `\n\t\t<ngt-tilt-shift2-effect *args=\"[options()]\" [camera]=\"effect.camera()\">\n\t\t\t<ngtp-effect-blend-mode />\n\t\t\t<ng-content />\n\t\t</ngt-tilt-shift2-effect>\n\t`,\n\tschemas: [CUSTOM_ELEMENTS_SCHEMA],\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n\timports: [NgtArgs, NgtpEffectBlendMode],\n\thostDirectives: [NgtpEffectHostDirective],\n\tproviders: [provideDefaultEffectOptions({ blendFunction: BlendFunction.NORMAL })],\n})\nexport class NgtpTiltShift2 {\n\teffect = inject(NgtpEffect, { host: true });\n\toptions = input({} as Omit<TiltShift2EffectOptions, 'blendFunction'>);\n}\n","import { CUSTOM_ELEMENTS_SCHEMA, ChangeDetectionStrategy, Component, inject, input } from '@angular/core';\nimport { NgtArgs, extend } from 'angular-three';\nimport { VignetteEffect } from 'postprocessing';\nimport { NgtpEffect, NgtpEffectBlendMode, NgtpEffectHostDirective } from '../effect';\n\nextend({ VignetteEffect });\n\nexport type VignetteEffectOptions = Partial<NonNullable<ConstructorParameters<typeof VignetteEffect>[0]>>;\n\n@Component({\n\tselector: 'ngtp-vignette',\n\ttemplate: `\n\t\t<ngt-vignette-effect *args=\"[options()]\" [camera]=\"effect.camera()\">\n\t\t\t<ngtp-effect-blend-mode />\n\t\t\t<ng-content />\n\t\t</ngt-vignette-effect>\n\t`,\n\tstandalone: true,\n\tschemas: [CUSTOM_ELEMENTS_SCHEMA],\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n\timports: [NgtArgs, NgtpEffectBlendMode],\n\thostDirectives: [NgtpEffectHostDirective],\n})\nexport class NgtpVignette {\n\teffect = inject(NgtpEffect, { host: true });\n\toptions = input({} as Omit<VignetteEffectOptions, 'blendFunction'>);\n}\n","import { CUSTOM_ELEMENTS_SCHEMA, ChangeDetectionStrategy, Component, inject, input } from '@angular/core';\nimport { NgtArgs, extend } from 'angular-three';\nimport { BlendFunction, Effect, EffectAttribute } from 'postprocessing';\nimport { Uniform } from 'three';\nimport { NgtpEffect, NgtpEffectBlendMode, NgtpEffectHostDirective, provideDefaultEffectOptions } from '../effect';\n\nconst WaterShader = {\n\tfragmentShader: `\n uniform float factor;\n void mainImage(const in vec4 inputColor, const in vec2 uv, out vec4 outputColor) {\n vec2 vUv = uv;\n float frequency = 6.0 * factor;\n float amplitude = 0.015 * factor;\n float x = vUv.y * frequency + time * .7;\n float y = vUv.x * frequency + time * .3;\n vUv.x += cos(x+y) * amplitude * cos(y);\n vUv.y += sin(x-y) * amplitude * cos(y);\n vec4 rgba = texture2D(inputBuffer, vUv);\n outputColor = rgba;\n }`,\n};\n\nexport class WaterEffect extends Effect {\n\tconstructor({ blendFunction = BlendFunction.NORMAL, factor = 0 } = {}) {\n\t\tsuper('WaterEffect', WaterShader.fragmentShader, {\n\t\t\tblendFunction,\n\t\t\tattributes: EffectAttribute.CONVOLUTION,\n\t\t\tuniforms: new Map<string, Uniform<number | number[]>>([['factor', new Uniform(factor)]]),\n\t\t});\n\t}\n}\n\nexport type WaterEffectOptions = Partial<NonNullable<ConstructorParameters<typeof WaterEffect>[0]>>;\n\nextend({ WaterEffect });\n\n@Component({\n\tselector: 'ngtp-water',\n\tstandalone: true,\n\ttemplate: `\n\t\t<ngt-water-effect *args=\"[options()]\" [camera]=\"effect.camera()\">\n\t\t\t<ngtp-effect-blend-mode />\n\t\t\t<ng-content />\n\t\t</ngt-water-effect>\n\t`,\n\tschemas: [CUSTOM_ELEMENTS_SCHEMA],\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n\timports: [NgtArgs, NgtpEffectBlendMode],\n\thostDirectives: [NgtpEffectHostDirective],\n\tproviders: [provideDefaultEffectOptions({ blendFunction: BlendFunction.NORMAL })],\n})\nexport class NgtpWater {\n\teffect = inject(NgtpEffect, { host: true });\n\toptions = input({} as Omit<WaterEffectOptions, 'blendFunction'>);\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["defaultOptions","i1.NgtpEffect"],"mappings":"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"}
@@ -1,12 +1,12 @@
1
1
  import { NgtVector3 } from 'angular-three';
2
2
  import { DepthOfFieldEffect } from 'postprocessing';
3
- import { Texture } from 'three';
3
+ import { DepthPackingStrategies, Texture } from 'three';
4
4
  import * as i0 from "@angular/core";
5
5
  type DOFOptions = NonNullable<ConstructorParameters<typeof DepthOfFieldEffect>[1]> & Partial<{
6
6
  target: NgtVector3;
7
7
  depthTexture: {
8
8
  texture: Texture;
9
- packing: number;
9
+ packing: DepthPackingStrategies;
10
10
  };
11
11
  }>;
12
12
  export declare class NgtpDepthOfField {
@@ -8,8 +8,6 @@ type GridOptions = NonNullable<ConstructorParameters<typeof GridEffect>[0]> & Pa
8
8
  }>;
9
9
  export declare class NgtpGrid {
10
10
  private autoEffect;
11
- private store;
12
- private invalidate;
13
11
  options: import("@angular/core").InputSignal<GridOptions>;
14
12
  private size;
15
13
  effect: import("@angular/core").Signal<GridEffect>;
@@ -1,5 +1,5 @@
1
1
  import { BlendFunction, Effect } from 'postprocessing';
2
- import { Color, Texture, Vector3 } from 'three';
2
+ import { Color, Texture, Vector3, WebGLRenderTarget, WebGLRenderer } from 'three';
3
3
  import { NgtpEffectComposer } from '../effect-composer';
4
4
  import * as i0 from "@angular/core";
5
5
  export declare class LensFlareEffect extends Effect {
@@ -24,7 +24,7 @@ export declare class LensFlareEffect extends Effect {
24
24
  opacity?: number | undefined;
25
25
  starBurst?: boolean | undefined;
26
26
  });
27
- update(_renderer: any, _inputBuffer: any, deltaTime: number): void;
27
+ update(_renderer: WebGLRenderer, _inputBuffer: WebGLRenderTarget, deltaTime: number): void;
28
28
  }
29
29
  export type LensFlareOptions = ConstructorParameters<typeof LensFlareEffect>[0] & {
30
30
  position: Vector3;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "angular-three-postprocessing",
3
- "version": "2.0.0-beta.284",
3
+ "version": "2.0.0-beta.286",
4
4
  "publishConfig": {
5
5
  "access": "public"
6
6
  },
@@ -22,11 +22,11 @@
22
22
  ],
23
23
  "license": "MIT",
24
24
  "peerDependencies": {
25
- "@angular/common": ">=18.0.0",
26
- "@angular/core": ">=18.0.0",
27
- "maath": "^0.10.0",
25
+ "@angular/common": ">=18.0.0 <19.0.0",
26
+ "@angular/core": ">=18.0.0 <19.0.0",
27
+ "maath": ">=0.10.0 <0.11.0",
28
28
  "postprocessing": "^6.0.0",
29
- "three": ">=0.148.0",
29
+ "three": ">=0.148.0 <0.168.0",
30
30
  "three-stdlib": "^2.0.0"
31
31
  },
32
32
  "dependencies": {