UNPKG

@rx-angular/cdk

Version:

@rx-angular/cdk is a Component Development Kit for ergonomic and highly performant angular applications. It helps to to build Large scale applications, UI libs, state management, rendering systems and much more. Furthermore the unique way of mixing reacti

1 lines 71.6 kB
{"version":3,"file":"cdk-render-strategies.mjs","sources":["../tmp-esm2022/render-strategies/lib/concurrent-strategies.js","../tmp-esm2022/render-strategies/lib/native-strategies.js","../tmp-esm2022/render-strategies/lib/config.js","../tmp-esm2022/render-strategies/lib/onStrategy.js","../tmp-esm2022/render-strategies/lib/strategy-handling.js","../tmp-esm2022/render-strategies/lib/strategy-provider.service.js","../tmp-esm2022/render-strategies/cdk-render-strategies.js"],"sourcesContent":["import { coalescingManager } from '@rx-angular/cdk/coalescing';\nimport { cancelCallback, forceFrameRate, scheduleCallback, } from '@rx-angular/cdk/internals/scheduler';\nimport { Observable } from 'rxjs';\nimport { filter, mapTo, switchMap } from 'rxjs/operators';\n// set default to 60fps\nforceFrameRate(60);\nconst immediateStrategy = {\n name: 'immediate',\n work: (cdRef) => cdRef.detectChanges(),\n behavior: ({ work, scope, ngZone }) => {\n return (o$) => o$.pipe(scheduleOnQueue(work, {\n ngZone,\n priority: 1 /* PriorityLevel.ImmediatePriority */,\n scope,\n }));\n },\n};\nconst userBlockingStrategy = {\n name: 'userBlocking',\n work: (cdRef) => cdRef.detectChanges(),\n behavior: ({ work, scope, ngZone }) => {\n return (o$) => o$.pipe(scheduleOnQueue(work, {\n ngZone,\n priority: 2 /* PriorityLevel.UserBlockingPriority */,\n scope,\n }));\n },\n};\nconst normalStrategy = {\n name: 'normal',\n work: (cdRef) => cdRef.detectChanges(),\n behavior: ({ work, scope, ngZone }) => {\n return (o$) => o$.pipe(scheduleOnQueue(work, {\n ngZone,\n priority: 3 /* PriorityLevel.NormalPriority */,\n scope,\n }));\n },\n};\nconst lowStrategy = {\n name: 'low',\n work: (cdRef) => cdRef.detectChanges(),\n behavior: ({ work, scope, ngZone }) => {\n return (o$) => o$.pipe(scheduleOnQueue(work, {\n ngZone,\n priority: 4 /* PriorityLevel.LowPriority */,\n scope,\n }));\n },\n};\nconst idleStrategy = {\n name: 'idle',\n work: (cdRef) => cdRef.detectChanges(),\n behavior: ({ work, scope, ngZone }) => {\n return (o$) => o$.pipe(scheduleOnQueue(work, {\n ngZone,\n priority: 5 /* PriorityLevel.IdlePriority */,\n scope,\n }));\n },\n};\nfunction scheduleOnQueue(work, options) {\n const scope = options.scope || {};\n return (o$) => o$.pipe(filter(() => !coalescingManager.isCoalescing(scope)), switchMap((v) => new Observable((subscriber) => {\n coalescingManager.add(scope);\n const task = scheduleCallback(options.priority, () => {\n work();\n coalescingManager.remove(scope);\n subscriber.next(v);\n }, { delay: options.delay, ngZone: options.ngZone });\n return () => {\n coalescingManager.remove(scope);\n cancelCallback(task);\n };\n }).pipe(mapTo(v))));\n}\nexport const RX_CONCURRENT_STRATEGIES = {\n immediate: immediateStrategy,\n userBlocking: userBlockingStrategy,\n normal: normalStrategy,\n low: lowStrategy,\n idle: idleStrategy,\n};\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uY3VycmVudC1zdHJhdGVnaWVzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jZGsvcmVuZGVyLXN0cmF0ZWdpZXMvc3JjL2xpYi9jb25jdXJyZW50LXN0cmF0ZWdpZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLGlCQUFpQixFQUFpQixNQUFNLDRCQUE0QixDQUFDO0FBQzlFLE9BQU8sRUFDTCxjQUFjLEVBQ2QsY0FBYyxFQUVkLGdCQUFnQixHQUNqQixNQUFNLHFDQUFxQyxDQUFDO0FBQzdDLE9BQU8sRUFBNEIsVUFBVSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQzVELE9BQU8sRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBTzFELHVCQUF1QjtBQUN2QixjQUFjLENBQUMsRUFBRSxDQUFDLENBQUM7QUFFbkIsTUFBTSxpQkFBaUIsR0FBMEI7SUFDL0MsSUFBSSxFQUFFLFdBQVc7SUFDakIsSUFBSSxFQUFFLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxLQUFLLENBQUMsYUFBYSxFQUFFO0lBQ3RDLFFBQVEsRUFBRSxDQUFDLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsRUFBRSxFQUFFO1FBQ3BDLE9BQU8sQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUNaLEVBQUUsQ0FBQyxJQUFJLENBQ0wsZUFBZSxDQUFDLElBQUksRUFBRTtZQUNwQixNQUFNO1lBQ04sUUFBUSx5Q0FBaUM7WUFDekMsS0FBSztTQUNOLENBQUMsQ0FDSCxDQUFDO0lBQ04sQ0FBQztDQUNGLENBQUM7QUFFRixNQUFNLG9CQUFvQixHQUEwQjtJQUNsRCxJQUFJLEVBQUUsY0FBYztJQUNwQixJQUFJLEVBQUUsQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLEtBQUssQ0FBQyxhQUFhLEVBQUU7SUFDdEMsUUFBUSxFQUFFLENBQUMsRUFBRSxJQUFJ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LEtBQUssQ0FBQyxDQUFDO1lBQ2hDLGNBQWMsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUN2QixDQUFDLENBQUM7SUFDSixDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQ2xCLENBQ0YsQ0FBQztBQUNOLENBQUM7QUFJRCxNQUFNLENBQUMsTUFBTSx3QkFBd0IsR0FBMkI7SUFDOUQsU0FBUyxFQUFFLGlCQUFpQjtJQUM1QixZQUFZLEVBQUUsb0JBQW9CO0lBQ2xDLE1BQU0sRUFBRSxjQUFjO0lBQ3RCLEdBQUcsRUFBRSxXQUFXO0lBQ2hCLElBQUksRUFBRSxZQUFZO0NBQ25CLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBOZ1pvbmUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IGNvYWxlc2NpbmdNYW5hZ2VyLCBjb2FsZXNjaW5nT2JqIH0gZnJvbSAnQHJ4LWFuZ3VsYXIvY2RrL2NvYWxlc2NpbmcnO1xuaW1wb3J0IHtcbiAgY2FuY2VsQ2FsbGJhY2ssXG4gIGZvcmNlRnJhbWVSYXRlLFxuICBQcmlvcml0eUxldmVsLFxuICBzY2hlZHVsZUNhbGxiYWNrLFxufSBmcm9tICdAcngtYW5ndWxhci9jZGsvaW50ZXJuYWxzL3NjaGVkdWxlcic7XG5pbXBvcnQgeyBNb25vVHlwZU9wZXJhdG9yRnVuY3Rpb24sIE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IGZpbHRlciwgbWFwVG8sIHN3aXRjaE1hcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7XG4gIFJ4Q29uY3VycmVudFN0cmF0ZWd5TmFtZXMsXG4gIFJ4Q3VzdG9tU3RyYXRlZ3lDcmVkZW50aWFscyxcbiAgUnhTdHJhdGVneUNyZWRlbnRpYWxzLFxufSBmcm9tICcuL21vZGVsJztcblxuLy8gc2V0IGRlZmF1bHQgdG8gNjBmcHNcbmZvcmNlRnJhbWVSYXRlKDYwKTtcblxuY29uc3QgaW1tZWRpYXRlU3RyYXRlZ3k6IFJ4U3RyYXRlZ3lDcmVkZW50aWFscyA9IHtcbiAgbmFtZTogJ2ltbWVkaWF0ZScsXG4gIHdvcms6IChjZFJlZikgPT4gY2RSZWYuZGV0ZWN0Q2hhbmdlcygpLFxuICBiZWhhdmlvcjogKHsgd29yaywgc2NvcGUsIG5nWm9uZSB9KSA9PiB7XG4gICAgcmV0dXJuIChvJCkgPT5cbiAgICAgIG8kLnBpcGUoXG4gICAgICAgIHNjaGVkdWxlT25RdWV1ZSh3b3JrLCB7XG4gICAgICAgICAgbmdab25lLFxuICAgICAgICAgIHByaW9yaXR5OiBQcmlvcml0eUxldmVsLkltbWVkaWF0ZVByaW9yaXR5LFxuICAgICAgICAgIHNjb3BlLFxuICAgICAgICB9KVxuICAgICAgKTtcbiAgfSxcbn07XG5cbmNvbnN0IHVzZXJCbG9ja2luZ1N0cmF0ZWd5OiBSeFN0cmF0ZWd5Q3JlZGVudGlhbHMgPSB7XG4gIG5hbWU6ICd1c2VyQmxvY2tpbmcnLFxuICB3b3JrOiAoY2RSZWYpID0+IGNkUmVmLmRldGVjdENoYW5nZXMoKSxcbiAgYmVoYXZpb3I6ICh7IHdvcmssIHNjb3BlLCBuZ1pvbmUgfSkgPT4ge1xuICAgIHJldHVybiAobyQpID0+XG4gICAgICBvJC5waXBlKFxuICAgICAgICBzY2hlZHVsZU9uUXVldWUod29yaywge1xuICAgICAgICAgIG5nWm9uZSxcbiAgICAgICAgICBwcmlvcml0eTogUHJpb3JpdHlMZXZlbC5Vc2VyQmxvY2tpbmdQcmlvcml0eSxcbiAgICAgICAgICBzY29wZSxcbiAgICAgICAgfSlcbiAgICAgICk7XG4gIH0sXG59O1xuXG5jb25zdCBub3JtYWxTdHJhdGVneTogUnhTdHJhdGVneUNyZWRlbnRpYWxzID0ge1xuICBuYW1lOiAnbm9ybWFsJyxcbiAgd29yazogKGNkUmVmKSA9PiBjZFJlZi5kZXRlY3RDaGFuZ2VzKCksXG4gIGJlaGF2aW9yOiAoeyB3b3JrLCBzY29wZSwgbmdab25lIH0pID0+IHtcbiAgICByZXR1cm4gKG8kKSA9PlxuICAgICAgbyQucGlwZShcbiAgICAgICAgc2NoZWR1bGVPblF1ZXVlKHdvcmssIHtcbiAgICAgICAgICBuZ1pvbmUsXG4gICAgICAgICAgcHJpb3JpdHk6IFByaW9yaXR5TGV2ZWwuTm9ybWFsUHJpb3JpdHksXG4gICAgICAgICAgc2NvcGUsXG4gICAgICAgIH0pXG4gICAgICApO1xuICB9LFxufTtcblxuY29uc3QgbG93U3RyYXRlZ3k6IFJ4U3RyYXRlZ3lDcmVkZW50aWFscyA9IHtcbiAgbmFtZTogJ2xvdycsXG4gIHdvcms6IChjZFJlZikgPT4gY2RSZWYuZGV0ZWN0Q2hhbmdlcygpLFxuICBiZWhhdmlvcjogKHsgd29yaywgc2NvcGUsIG5nWm9uZSB9KSA9PiB7XG4gICAgcmV0dXJuIChvJCkgPT5cbiAgICAgIG8kLnBpcGUoXG4gICAgICAgIHNjaGVkdWxlT25RdWV1ZSh3b3JrLCB7XG4gICAgICAgICAgbmdab25lLFxuICAgICAgICAgIHByaW9yaXR5OiBQcmlvcml0eUxldmVsLkxvd1ByaW9yaXR5LFxuICAgICAgICAgIHNjb3BlLFxuICAgICAgICB9KVxuICAgICAgKTtcbiAgfSxcbn07XG5cbmNvbnN0IGlkbGVTdHJhdGVneTogUnhTdHJhdGVneUNyZWRlbnRpYWxzID0ge1xuICBuYW1lOiAnaWRsZScsXG4gIHdvcms6IChjZFJlZikgPT4gY2RSZWYuZGV0ZWN0Q2hhbmdlcygpLFxuICBiZWhhdmlvcjogKHsgd29yaywgc2NvcGUsIG5nWm9uZSB9KSA9PiB7XG4gICAgcmV0dXJuIChvJCkgPT5cbiAgICAgIG8kLnBpcGUoXG4gICAgICAgIHNjaGVkdWxlT25RdWV1ZSh3b3JrLCB7XG4gICAgICAgICAgbmdab25lLFxuICAgICAgICAgIHByaW9yaXR5OiBQcmlvcml0eUxldmVsLklkbGVQcmlvcml0eSxcbiAgICAgICAgICBzY29wZSxcbiAgICAgICAgfSlcbiAgICAgICk7XG4gIH0sXG59O1xuXG5mdW5jdGlvbiBzY2hlZHVsZU9uUXVldWU8VD4oXG4gIHdvcms6ICguLi5hcmdzOiBhbnlbXSkgPT4gdm9pZCxcbiAgb3B0aW9uczoge1xuICAgIHByaW9yaXR5OiBQcmlvcml0eUxldmVsO1xuICAgIHNjb3BlOiBjb2FsZXNjaW5nT2JqO1xuICAgIGRlbGF5PzogbnVtYmVyO1xuICAgIG5nWm9uZTogTmdab25lO1xuICB9XG4pOiBNb25vVHlwZU9wZXJhdG9yRnVuY3Rpb248VD4ge1xuICBjb25zdCBzY29wZSA9IChvcHRpb25zLnNjb3BlIGFzIFJlY29yZDxzdHJpbmcsIHVua25vd24+KSB8fCB7fTtcbiAgcmV0dXJuIChvJDogT2JzZXJ2YWJsZTxUPik6IE9ic2VydmFibGU8VD4gPT5cbiAgICBvJC5waXBlKFxuICAgICAgZmlsdGVyKCgpID0+ICFjb2FsZXNjaW5nTWFuYWdlci5pc0NvYWxlc2Npbmcoc2NvcGUpKSxcbiAgICAgIHN3aXRjaE1hcCgodikgPT5cbiAgICAgICAgbmV3IE9ic2VydmFibGU8VD4oKHN1YnNjcmliZXIpID0+IHtcbiAgICAgICAgICBjb2FsZXNjaW5nTWFuYWdlci5hZGQoc2NvcGUpO1xuICAgICAgICAgIGNvbnN0IHRhc2sgPSBzY2hlZHVsZUNhbGxiYWNrKFxuICAgICAgICAgICAgb3B0aW9ucy5wcmlvcml0eSxcbiAgICAgICAgICAgICgpID0+IHtcbiAgICAgICAgICAgICAgd29yaygpO1xuICAgICAgICAgICAgICBjb2FsZXNjaW5nTWFuYWdlci5yZW1vdmUoc2NvcGUpO1xuICAgICAgICAgICAgICBzdWJzY3JpYmVyLm5leHQodik7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgeyBkZWxheTogb3B0aW9ucy5kZWxheSwgbmdab25lOiBvcHRpb25zLm5nWm9uZSB9XG4gICAgICAgICAgKTtcbiAgICAgICAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgICAgICAgY29hbGVzY2luZ01hbmFnZXIucmVtb3ZlKHNjb3BlKTtcbiAgICAgICAgICAgIGNhbmNlbENhbGxiYWNrKHRhc2spO1xuICAgICAgICAgIH07XG4gICAgICAgIH0pLnBpcGUobWFwVG8odikpXG4gICAgICApXG4gICAgKTtcbn1cblxuZXhwb3J0IHR5cGUgUnhDb25jdXJyZW50U3RyYXRlZ2llcyA9XG4gIFJ4Q3VzdG9tU3RyYXRlZ3lDcmVkZW50aWFsczxSeENvbmN1cnJlbnRTdHJhdGVneU5hbWVzPjtcbmV4cG9ydCBjb25zdCBSWF9DT05DVVJSRU5UX1NUUkFURUdJRVM6IFJ4Q29uY3VycmVudFN0cmF0ZWdpZXMgPSB7XG4gIGltbWVkaWF0ZTogaW1tZWRpYXRlU3RyYXRlZ3ksXG4gIHVzZXJCbG9ja2luZzogdXNlckJsb2NraW5nU3RyYXRlZ3ksXG4gIG5vcm1hbDogbm9ybWFsU3RyYXRlZ3ksXG4gIGxvdzogbG93U3RyYXRlZ3ksXG4gIGlkbGU6IGlkbGVTdHJhdGVneSxcbn07XG4iXX0=","import { NgZone } from '@angular/core';\nimport { coalesceWith } from '@rx-angular/cdk/coalescing';\nimport { getZoneUnPatchedApi } from '@rx-angular/cdk/internals/core';\nimport { Observable } from 'rxjs';\nimport { tap } from 'rxjs/operators';\nconst animationFrameTick = () => new Observable((subscriber) => {\n // use the unpatched API no avoid zone interference\n const id = getZoneUnPatchedApi('requestAnimationFrame')(() => {\n subscriber.next(0);\n subscriber.complete();\n });\n return () => {\n // use the unpatched API no avoid zone interference\n getZoneUnPatchedApi('cancelAnimationFrame')(id);\n };\n});\nconst localCredentials = {\n name: 'local',\n work: (cdRef, _, notification) => {\n cdRef.detectChanges();\n },\n behavior: ({ work, scope, ngZone }) => (o$) => o$.pipe(coalesceWith(animationFrameTick(), scope), tap(() => (ngZone ? ngZone.run(() => work()) : work()))),\n};\nconst noopCredentials = {\n name: 'noop',\n work: () => void 0,\n behavior: () => (o$) => o$,\n};\nconst nativeCredentials = {\n name: 'native',\n work: (cdRef) => cdRef.markForCheck(),\n behavior: ({ work, ngZone }) => (o$) => o$.pipe(tap(() => ngZone && !NgZone.isInAngularZone()\n ? ngZone.run(() => work())\n : work())),\n};\nexport const RX_NATIVE_STRATEGIES = {\n native: nativeCredentials,\n noop: noopCredentials,\n local: localCredentials,\n};\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmF0aXZlLXN0cmF0ZWdpZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL2Nkay9yZW5kZXItc3RyYXRlZ2llcy9zcmMvbGliL25hdGl2ZS1zdHJhdGVnaWVzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDdkMsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQzFELE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQ3JFLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDbEMsT0FBTyxFQUFFLEdBQUcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBT3JDLE1BQU0sa0JBQWtCLEdBQUcsR0FBRyxFQUFFLENBQzlCLElBQUksVUFBVSxDQUFTLENBQUMsVUFBVSxFQUFFLEVBQUU7SUFDcEMsbURBQW1EO0lBQ25ELE1BQU0sRUFBRSxHQUFHLG1CQUFtQixDQUFDLHVCQUF1QixDQUFDLENBQUMsR0FBRyxFQUFFO1FBQzNELFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDbkIsVUFBVSxDQUFDLFFBQVEsRUFBRSxDQUFDO0lBQ3hCLENBQUMsQ0FBQyxDQUFDO0lBQ0gsT0FBTyxHQUFHLEVBQUU7UUFDVixtREFBbUQ7UUFDbkQsbUJBQW1CLENBQUMsc0JBQXNCLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUNsRCxDQUFDLENBQUM7QUFDSixDQUFDLENBQUMsQ0FBQztBQUVMLE1BQU0sZ0JBQWdCLEdBQTBCO0lBQzlDLElBQUksRUFBRSxPQUFPO0lBQ2IsSUFBSSxFQUFFLENBQUMsS0FBSyxFQUFFLENBQUMsRUFBRSxZQUFZLEVBQUUsRUFBRTtRQUMvQixLQUFLLENBQUMsYUFBYSxFQUFFLENBQUM7SUFDeEIsQ0FBQztJQUNELFFBQVEsRUFDTixDQUFDLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsRUFBRSxFQUFFLENBQzVCLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FDTCxFQUFFLENBQUMsSUFBSSxDQUNMLFlBQVksQ0FBQyxrQkFBa0IsRUFBRSxFQUFFLEtBQWdDLENBQUMsRUFDcEUsR0FBRyxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsQ0FDeEQ7Q0FDTixDQUFDO0FBRUYsTUFBTSxlQUFlLEdBQTBCO0lBQzdDLElBQUksRUFBRSxNQUFNO0lBQ1osSUFBSSxFQUFFLEdBQUcsRUFBRSxDQUFDLEtBQUssQ0FBQztJQUNsQixRQUFRLEVBQUUsR0FBRyxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLEVBQUU7Q0FDM0IsQ0FBQztBQUVGLE1BQU0saUJBQWlCLEdBQTBCO0lBQy9DLElBQUksRUFBRSxRQUFRO0lBQ2QsSUFBSSxFQUFFLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxLQUFLLENBQUMsWUFBWSxFQUFFO0lBQ3JDLFFBQVEsRUFDTixDQUFDLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxFQUFFLEVBQUUsQ0FDckIsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUNMLEVBQUUsQ0FBQyxJQUFJLENBQ0wsR0FBRyxDQUFDLEdBQUcsRUFBRSxDQUNQLE1BQU0sSUFBSSxDQUFDLE1BQU0sQ0FBQyxlQUFlLEVBQUU7UUFDakMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDMUIsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUNYLENBQ0Y7Q0FDTixDQUFDO0FBSUYsTUFBTSxDQUFDLE1BQU0sb0JBQW9CLEdBQXVCO0lBQ3RELE1BQU0sRUFBRSxpQkFBaUI7SUFDekIsSUFBSSxFQUFFLGVBQWU7SUFDckIsS0FBSyxFQUFFLGdCQUFnQjtDQUN4QixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTmdab25lIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBjb2FsZXNjZVdpdGggfSBmcm9tICdAcngtYW5ndWxhci9jZGsvY29hbGVzY2luZyc7XG5pbXBvcnQgeyBnZXRab25lVW5QYXRjaGVkQXBpIH0gZnJvbSAnQHJ4LWFuZ3VsYXIvY2RrL2ludGVybmFscy9jb3JlJztcbmltcG9ydCB7IE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IHRhcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7XG4gIFJ4Q3VzdG9tU3RyYXRlZ3lDcmVkZW50aWFscyxcbiAgUnhOYXRpdmVTdHJhdGVneU5hbWVzLFxuICBSeFN0cmF0ZWd5Q3JlZGVudGlhbHMsXG59IGZyb20gJy4vbW9kZWwnO1xuXG5jb25zdCBhbmltYXRpb25GcmFtZVRpY2sgPSAoKSA9PlxuICBuZXcgT2JzZXJ2YWJsZTxudW1iZXI+KChzdWJzY3JpYmVyKSA9PiB7XG4gICAgLy8gdXNlIHRoZSB1bnBhdGNoZWQgQVBJIG5vIGF2b2lkIHpvbmUgaW50ZXJmZXJlbmNlXG4gICAgY29uc3QgaWQgPSBnZXRab25lVW5QYXRjaGVkQXBpKCdyZXF1ZXN0QW5pbWF0aW9uRnJhbWUnKSgoKSA9PiB7XG4gICAgICBzdWJzY3JpYmVyLm5leHQoMCk7XG4gICAgICBzdWJzY3JpYmVyLmNvbXBsZXRlKCk7XG4gICAgfSk7XG4gICAgcmV0dXJuICgpID0+IHtcbiAgICAgIC8vIHVzZSB0aGUgdW5wYXRjaGVkIEFQSSBubyBhdm9pZCB6b25lIGludGVyZmVyZW5jZVxuICAgICAgZ2V0Wm9uZVVuUGF0Y2hlZEFwaSgnY2FuY2VsQW5pbWF0aW9uRnJhbWUnKShpZCk7XG4gICAgfTtcbiAgfSk7XG5cbmNvbnN0IGxvY2FsQ3JlZGVudGlhbHM6IFJ4U3RyYXRlZ3lDcmVkZW50aWFscyA9IHtcbiAgbmFtZTogJ2xvY2FsJyxcbiAgd29yazogKGNkUmVmLCBfLCBub3RpZmljYXRpb24pID0+IHtcbiAgICBjZFJlZi5kZXRlY3RDaGFuZ2VzKCk7XG4gIH0sXG4gIGJlaGF2aW9yOlxuICAgICh7IHdvcmssIHNjb3BlLCBuZ1pvbmUgfSkgPT5cbiAgICAobyQpID0+XG4gICAgICBvJC5waXBlKFxuICAgICAgICBjb2FsZXNjZVdpdGgoYW5pbWF0aW9uRnJhbWVUaWNrKCksIHNjb3BlIGFzIFJlY29yZDxzdHJpbmcsIHVua25vd24+KSxcbiAgICAgICAgdGFwKCgpID0+IChuZ1pvbmUgPyBuZ1pvbmUucnVuKCgpID0+IHdvcmsoKSkgOiB3b3JrKCkpKVxuICAgICAgKSxcbn07XG5cbmNvbnN0IG5vb3BDcmVkZW50aWFsczogUnhTdHJhdGVneUNyZWRlbnRpYWxzID0ge1xuICBuYW1lOiAnbm9vcCcsXG4gIHdvcms6ICgpID0+IHZvaWQgMCxcbiAgYmVoYXZpb3I6ICgpID0+IChvJCkgPT4gbyQsXG59O1xuXG5jb25zdCBuYXRpdmVDcmVkZW50aWFsczogUnhTdHJhdGVneUNyZWRlbnRpYWxzID0ge1xuICBuYW1lOiAnbmF0aXZlJyxcbiAgd29yazogKGNkUmVmKSA9PiBjZFJlZi5tYXJrRm9yQ2hlY2soKSxcbiAgYmVoYXZpb3I6XG4gICAgKHsgd29yaywgbmdab25lIH0pID0+XG4gICAgKG8kKSA9PlxuICAgICAgbyQucGlwZShcbiAgICAgICAgdGFwKCgpID0+XG4gICAgICAgICAgbmdab25lICYmICFOZ1pvbmUuaXNJbkFuZ3VsYXJab25lKClcbiAgICAgICAgICAgID8gbmdab25lLnJ1bigoKSA9PiB3b3JrKCkpXG4gICAgICAgICAgICA6IHdvcmsoKVxuICAgICAgICApXG4gICAgICApLFxufTtcblxuZXhwb3J0IHR5cGUgUnhOYXRpdmVTdHJhdGVnaWVzID1cbiAgUnhDdXN0b21TdHJhdGVneUNyZWRlbnRpYWxzPFJ4TmF0aXZlU3RyYXRlZ3lOYW1lcz47XG5leHBvcnQgY29uc3QgUlhfTkFUSVZFX1NUUkFURUdJRVM6IFJ4TmF0aXZlU3RyYXRlZ2llcyA9IHtcbiAgbmF0aXZlOiBuYXRpdmVDcmVkZW50aWFscyxcbiAgbm9vcDogbm9vcENyZWRlbnRpYWxzLFxuICBsb2NhbDogbG9jYWxDcmVkZW50aWFscyxcbn07XG4iXX0=","import { InjectionToken } from '@angular/core';\nimport { RX_CONCURRENT_STRATEGIES } from './concurrent-strategies';\nimport { RX_NATIVE_STRATEGIES } from './native-strategies';\nexport const RX_RENDER_STRATEGIES_CONFIG = new InjectionToken('rxa-render-strategies-config');\nexport const RX_RENDER_STRATEGIES_DEFAULTS = {\n primaryStrategy: 'normal',\n customStrategies: {\n ...RX_NATIVE_STRATEGIES,\n ...RX_CONCURRENT_STRATEGIES,\n },\n patchZone: true,\n parent: false,\n};\nexport function mergeDefaultConfig(cfg) {\n const custom = cfg\n ? cfg\n : { customStrategies: {} };\n return {\n ...RX_RENDER_STRATEGIES_DEFAULTS,\n ...custom,\n customStrategies: {\n ...custom.customStrategies,\n ...RX_RENDER_STRATEGIES_DEFAULTS.customStrategies,\n },\n };\n}\n/**\n * @description\n * Can be used to set the default render strategy or create custom render strategies.\n *\n * With this function you can customize the behavior of:\n * - `rxLet` directive\n * - `rxFor` directive\n * - `rxIf` directive\n * - `rxVirtualFor` directive\n * - `rxVirtualView` directive\n * - `RxStrategyProvider` service.\n *\n * @example\n * import { provideRxRenderStrategies } from '@rx-angular/cdk/render-strategies';\n *\n * const appConfig: ApplicationConfig = {\n * providers: [\n * provideRxRenderStrategies({\n * primaryStrategy: 'sync',\n * customStrategies: {\n * sync: {\n * name: 'sync',\n * work: (cdRef) => { cdRef.detectChanges(); },\n * behavior: ({ work }) => (o$) => o$.pipe(tap(() => work()))\n * },\n * asap: {\n * name: 'asap',\n * work: (cdRef) => { cdRef.detectChanges(); },\n * behavior: ({ work }) => (o$) => o$.pipe(delay(0, asapScheduler), tap(() => work()))\n * },\n * }),\n * ],\n * };\n *\n * @param config - The configuration object.\n * @returns A provider that can be used to set the default render strategy or create custom render strategies.\n */\nexport function provideRxRenderStrategies(config) {\n if (typeof config === 'function') {\n return {\n provide: RX_RENDER_STRATEGIES_CONFIG,\n useFactory: () => mergeDefaultConfig(config()),\n };\n }\n return {\n provide: RX_RENDER_STRATEGIES_CONFIG,\n useValue: mergeDefaultConfig(config),\n };\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZmlnLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jZGsvcmVuZGVyLXN0cmF0ZWdpZXMvc3JjL2xpYi9jb25maWcudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGNBQWMsRUFBWSxNQUFNLGVBQWUsQ0FBQztBQUN6RCxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQU1uRSxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQVkzRCxNQUFNLENBQUMsTUFBTSwyQkFBMkIsR0FBRyxJQUFJLGNBQWMsQ0FFM0QsOEJBQThCLENBQUMsQ0FBQztBQUVsQyxNQUFNLENBQUMsTUFBTSw2QkFBNkIsR0FFdEM7SUFDRixlQUFlLEVBQUUsUUFBUTtJQUN6QixnQkFBZ0IsRUFBRTtRQUNoQixHQUFHLG9CQUFvQjtRQUN2QixHQUFHLHdCQUF3QjtLQUM1QjtJQUNELFNBQVMsRUFBRSxJQUFJO0lBQ2YsTUFBTSxFQUFFLEtBQUs7Q0FDTCxDQUFDO0FBRVgsTUFBTSxVQUFVLGtCQUFrQixDQUNoQyxHQUFpQztJQUVqQyxNQUFNLE1BQU0sR0FBZ0MsR0FBRztRQUM3QyxDQUFDLENBQUMsR0FBRztRQUNMLENBQUMsQ0FBRSxFQUFFLGdCQUFnQixFQUFFLEVBQUUsRUFBVSxDQUFDO0lBQ3RDLE9BQU87UUFDTCxHQUFHLDZCQUE2QjtRQUNoQyxHQUFHLE1BQU07UUFDVCxnQkFBZ0IsRUFBRTtZQUNoQixHQUFHLE1BQU0sQ0FBQyxnQkFBZ0I7WUFDMUIsR0FBRyw2QkFBNkIsQ0FBQyxnQkFBZ0I7U0FDbEQ7S0FDRixDQUFDO0FBQ0osQ0FBQztBQUVEOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FvQ0c7QUFDSCxNQUFNLFVBQVUseUJBQXlCLENBQ3ZDLE1BRTRDO0lBRTVDLElBQUksT0FBTyxNQUFNLEtBQUssVUFBVSxFQUFFLENBQUM7UUFDakMsT0FBTztZQUNMLE9BQU8sRUFBRSwyQkFBMkI7WUFDcEMsVUFBVSxFQUFFLEdBQUcsRUFBRSxDQUFDLGtCQUFrQixDQUFDLE1BQU0sRUFBRSxDQUFDO1NBQzVCLENBQUM7SUFDdkIsQ0FBQztJQUVELE9BQU87UUFDTCxPQUFPLEVBQUUsMkJBQTJCO1FBQ3BDLFFBQVEsRUFBRSxrQkFBa0IsQ0FBQyxNQUFNLENBQUM7S0FDbEIsQ0FBQztBQUN2QixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0aW9uVG9rZW4sIFByb3ZpZGVyIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBSWF9DT05DVVJSRU5UX1NUUkFURUdJRVMgfSBmcm9tICcuL2NvbmN1cnJlbnQtc3RyYXRlZ2llcyc7XG5pbXBvcnQge1xuICBSeEN1c3RvbVN0cmF0ZWd5Q3JlZGVudGlhbHMsXG4gIFJ4RGVmYXVsdFN0cmF0ZWd5TmFtZXMsXG4gIFJ4U3RyYXRlZ3lOYW1lcyxcbn0gZnJvbSAnLi9tb2RlbCc7XG5pbXBvcnQgeyBSWF9OQVRJVkVfU1RSQVRFR0lFUyB9IGZyb20gJy4vbmF0aXZlLXN0cmF0ZWdpZXMnO1xuXG5leHBvcnQgaW50ZXJmYWNlIFJ4UmVuZGVyU3RyYXRlZ2llc0NvbmZpZzxUIGV4dGVuZHMgc3RyaW5nPiB7XG4gIHByaW1hcnlTdHJhdGVneT86IFJ4U3RyYXRlZ3lOYW1lczxUPjtcbiAgY3VzdG9tU3RyYXRlZ2llcz86IFJ4Q3VzdG9tU3RyYXRlZ3lDcmVkZW50aWFsczxUPjtcbiAgcGF0Y2hab25lPzogYm9vbGVhbjtcbiAgLyoqXG4gICAqICBAZGVwcmVjYXRlZCBUaGlzIGZsYWcgd2lsbCBiZSBkcm9wcGVkIHNvb24sIGFzIGl0IGlzIG5vIGxvbmdlciByZXF1aXJlZCB3aGVuIHVzaW5nIHNpZ25hbCBiYXNlZCB2aWV3ICYgY29udGVudCBxdWVyaWVzXG4gICAqL1xuICBwYXJlbnQ/OiBib29sZWFuO1xufVxuXG5leHBvcnQgY29uc3QgUlhfUkVOREVSX1NUUkFURUdJRVNfQ09ORklHID0gbmV3IEluamVjdGlvblRva2VuPFxuICBSeFJlbmRlclN0cmF0ZWdpZXNDb25maWc8c3RyaW5nPlxuPigncnhhLXJlbmRlci1zdHJhdGVnaWVzLWNvbmZpZycpO1xuXG5leHBvcnQgY29uc3QgUlhfUkVOREVSX1NUUkFURUdJRVNfREVGQVVMVFM6IFJlcXVpcmVkPFxuICBSeFJlbmRlclN0cmF0ZWdpZXNDb25maWc8UnhEZWZhdWx0U3RyYXRlZ3lOYW1lcz5cbj4gPSB7XG4gIHByaW1hcnlTdHJhdGVneTogJ25vcm1hbCcsXG4gIGN1c3RvbVN0cmF0ZWdpZXM6IHtcbiAgICAuLi5SWF9OQVRJVkVfU1RSQVRFR0lFUyxcbiAgICAuLi5SWF9DT05DVVJSRU5UX1NUUkFURUdJRVMsXG4gIH0sXG4gIHBhdGNoWm9uZTogdHJ1ZSxcbiAgcGFyZW50OiBmYWxzZSxcbn0gYXMgY29uc3Q7XG5cbmV4cG9ydCBmdW5jdGlvbiBtZXJnZURlZmF1bHRDb25maWc8VCBleHRlbmRzIHN0cmluZz4oXG4gIGNmZz86IFJ4UmVuZGVyU3RyYXRlZ2llc0NvbmZpZzxUPixcbik6IFJlcXVpcmVkPFJ4UmVuZGVyU3RyYXRlZ2llc0NvbmZpZzxUIHwgUnhEZWZhdWx0U3RyYXRlZ3lOYW1lcz4+IHtcbiAgY29uc3QgY3VzdG9tOiBSeFJlbmRlclN0cmF0ZWdpZXNDb25maWc8VD4gPSBjZmdcbiAgICA/IGNmZ1xuICAgIDogKHsgY3VzdG9tU3RyYXRlZ2llczoge30gfSBhcyBhbnkpO1xuICByZXR1cm4ge1xuICAgIC4uLlJYX1JFTkRFUl9TVFJBVEVHSUVTX0RFRkFVTFRTLFxuICAgIC4uLmN1c3RvbSxcbiAgICBjdXN0b21TdHJhdGVnaWVzOiB7XG4gICAgICAuLi5jdXN0b20uY3VzdG9tU3RyYXRlZ2llcyxcbiAgICAgIC4uLlJYX1JFTkRFUl9TVFJBVEVHSUVTX0RFRkFVTFRTLmN1c3RvbVN0cmF0ZWdpZXMsXG4gICAgfSxcbiAgfTtcbn1cblxuLyoqXG4gKiBAZGVzY3JpcHRpb25cbiAqIENhbiBiZSB1c2VkIHRvIHNldCB0aGUgZGVmYXVsdCByZW5kZXIgc3RyYXRlZ3kgb3IgY3JlYXRlIGN1c3RvbSByZW5kZXIgc3RyYXRlZ2llcy5cbiAqXG4gKiBXaXRoIHRoaXMgZnVuY3Rpb24geW91IGNhbiBjdXN0b21pemUgdGhlIGJlaGF2aW9yIG9mOlxuICogLSBgcnhMZXRgIGRpcmVjdGl2ZVxuICogLSBgcnhGb3JgIGRpcmVjdGl2ZVxuICogLSBgcnhJZmAgZGlyZWN0aXZlXG4gKiAtIGByeFZpcnR1YWxGb3JgIGRpcmVjdGl2ZVxuICogLSBgcnhWaXJ0dWFsVmlld2AgZGlyZWN0aXZlXG4gKiAtIGBSeFN0cmF0ZWd5UHJvdmlkZXJgIHNlcnZpY2UuXG4gKlxuICogQGV4YW1wbGVcbiAqIGltcG9ydCB7IHByb3ZpZGVSeFJlbmRlclN0cmF0ZWdpZXMgfSBmcm9tICdAcngtYW5ndWxhci9jZGsvcmVuZGVyLXN0cmF0ZWdpZXMnO1xuICpcbiAqIGNvbnN0IGFwcENvbmZpZzogQXBwbGljYXRpb25Db25maWcgPSB7XG4gKiAgIHByb3ZpZGVyczogW1xuICogICAgIHByb3ZpZGVSeFJlbmRlclN0cmF0ZWdpZXMoe1xuICogICAgICAgcHJpbWFyeVN0cmF0ZWd5OiAnc3luYycsXG4gKiAgICAgICBjdXN0b21TdHJhdGVnaWVzOiB7XG4gKiAgICAgICAgIHN5bmM6IHtcbiAqICAgICAgICAgICBuYW1lOiAnc3luYycsXG4gKiAgICAgICAgICAgd29yazogKGNkUmVmKSA9PiB7IGNkUmVmLmRldGVjdENoYW5nZXMoKTsgfSxcbiAqICAgICAgICAgICBiZWhhdmlvcjogKHsgd29yayB9KSA9PiAobyQpID0+IG8kLnBpcGUodGFwKCgpID0+IHdvcmsoKSkpXG4gKiAgICAgICAgICB9LFxuICogICAgICAgICBhc2FwOiB7XG4gKiAgICAgICAgICAgbmFtZTogJ2FzYXAnLFxuICogICAgICAgICAgIHdvcms6IChjZFJlZikgPT4geyBjZFJlZi5kZXRlY3RDaGFuZ2VzKCk7IH0sXG4gKiAgICAgICAgICAgYmVoYXZpb3I6ICh7IHdvcmsgfSkgPT4gKG8kKSA9PiBvJC5waXBlKGRlbGF5KDAsIGFzYXBTY2hlZHVsZXIpLCB0YXAoKCkgPT4gd29yaygpKSlcbiAqICAgICAgICB9LFxuICogICAgIH0pLFxuICogICBdLFxuICogfTtcbiAqXG4gKiBAcGFyYW0gY29uZmlnIC0gVGhlIGNvbmZpZ3VyYXRpb24gb2JqZWN0LlxuICogQHJldHVybnMgQSBwcm92aWRlciB0aGF0IGNhbiBiZSB1c2VkIHRvIHNldCB0aGUgZGVmYXVsdCByZW5kZXIgc3RyYXRlZ3kgb3IgY3JlYXRlIGN1c3RvbSByZW5kZXIgc3RyYXRlZ2llcy5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHByb3ZpZGVSeFJlbmRlclN0cmF0ZWdpZXMoXG4gIGNvbmZpZzpcbiAgICB8IFJ4UmVuZGVyU3RyYXRlZ2llc0NvbmZpZzxzdHJpbmc+XG4gICAgfCAoKCkgPT4gUnhSZW5kZXJTdHJhdGVnaWVzQ29uZmlnPHN0cmluZz4pLFxuKTogUHJvdmlkZXIge1xuICBpZiAodHlwZW9mIGNvbmZpZyA9PT0gJ2Z1bmN0aW9uJykge1xuICAgIHJldHVybiB7XG4gICAgICBwcm92aWRlOiBSWF9SRU5ERVJfU1RSQVRFR0lFU19DT05GSUcsXG4gICAgICB1c2VGYWN0b3J5OiAoKSA9PiBtZXJnZURlZmF1bHRDb25maWcoY29uZmlnKCkpLFxuICAgIH0gc2F0aXNmaWVzIFByb3ZpZGVyO1xuICB9XG5cbiAgcmV0dXJuIHtcbiAgICBwcm92aWRlOiBSWF9SRU5ERVJfU1RSQVRFR0lFU19DT05GSUcsXG4gICAgdXNlVmFsdWU6IG1lcmdlRGVmYXVsdENvbmZpZyhjb25maWcpLFxuICB9IHNhdGlzZmllcyBQcm92aWRlcjtcbn1cbiJdfQ==","import { Observable, throwError } from 'rxjs';\nimport { catchError, map, take } from 'rxjs/operators';\n/**\n * @internal\n *\n * @param value\n * @param strategy\n * @param workFactory\n * @param options\n */\nexport function onStrategy(value, strategy, workFactory, options = {}) {\n return new Observable((subscriber) => {\n subscriber.next(value);\n }).pipe(strategy.behavior({\n work: () => workFactory(value, strategy.work, options),\n scope: options.scope || {},\n ngZone: options.ngZone,\n }), catchError((error) => throwError(() => [error, value])), map(() => value), take(1));\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib25TdHJhdGVneS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY2RrL3JlbmRlci1zdHJhdGVnaWVzL3NyYy9saWIvb25TdHJhdGVneS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQSxPQUFPLEVBQUUsVUFBVSxFQUFFLFVBQVUsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUM5QyxPQUFPLEVBQUUsVUFBVSxFQUFFLEdBQUcsRUFBRSxJQUFJLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUd2RDs7Ozs7OztHQU9HO0FBQ0gsTUFBTSxVQUFVLFVBQVUsQ0FDeEIsS0FBUSxFQUNSLFFBQStCLEVBQy9CLFdBSVMsRUFDVCxVQUFxRCxFQUFFO0lBRXZELE9BQU8sSUFBSSxVQUFVLENBQUksQ0FBQyxVQUFVLEVBQUUsRUFBRTtRQUN0QyxVQUFVLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ3pCLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FDTCxRQUFRLENBQUMsUUFBUSxDQUFDO1FBQ2hCLElBQUksRUFBRSxHQUFHLEVBQUUsQ0FBQyxXQUFXLENBQUMsS0FBSyxFQUFFLFFBQVEsQ0FBQyxJQUFJLEVBQUUsT0FBTyxDQUFDO1FBQ3RELEtBQUssRUFBRyxPQUFPLENBQUMsS0FBaUMsSUFBSSxFQUFFO1FBQ3ZELE1BQU0sRUFBRSxPQUFPLENBQUMsTUFBTTtLQUN2QixDQUFDLEVBQ0YsVUFBVSxDQUFDLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxVQUFVLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxLQUFLLEVBQUUsS0FBSyxDQUFDLENBQUMsQ0FBQyxFQUN2RCxHQUFHLENBQUMsR0FBRyxFQUFFLENBQUMsS0FBSyxDQUFDLEVBQ2hCLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FDUixDQUFDO0FBQ0osQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE5nWm9uZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgUnhDb2FsZXNjaW5nT3B0aW9ucyB9IGZyb20gJ0ByeC1hbmd1bGFyL2Nkay9jb2FsZXNjaW5nJztcbmltcG9ydCB7IE9ic2VydmFibGUsIHRocm93RXJyb3IgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IGNhdGNoRXJyb3IsIG1hcCwgdGFrZSB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IFJ4UmVuZGVyV29yaywgUnhTdHJhdGVneUNyZWRlbnRpYWxzIH0gZnJvbSAnLi9tb2RlbCc7XG5cbi8qKlxuICogQGludGVybmFsXG4gKlxuICogQHBhcmFtIHZhbHVlXG4gKiBAcGFyYW0gc3RyYXRlZ3lcbiAqIEBwYXJhbSB3b3JrRmFjdG9yeVxuICogQHBhcmFtIG9wdGlvbnNcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIG9uU3RyYXRlZ3k8VD4oXG4gIHZhbHVlOiBULFxuICBzdHJhdGVneTogUnhTdHJhdGVneUNyZWRlbnRpYWxzLFxuICB3b3JrRmFjdG9yeTogKFxuICAgIHZhbHVlOiBULFxuICAgIHdvcms6IFJ4UmVuZGVyV29yayxcbiAgICBvcHRpb25zOiBSeENvYWxlc2NpbmdPcHRpb25zXG4gICkgPT4gdm9pZCxcbiAgb3B0aW9uczogUnhDb2FsZXNjaW5nT3B0aW9ucyAmIHsgbmdab25lPzogTmdab25lIH0gPSB7fVxuKTogT2JzZXJ2YWJsZTxUPiB7XG4gIHJldHVybiBuZXcgT2JzZXJ2YWJsZTxUPigoc3Vic2NyaWJlcikgPT4ge1xuICAgIHN1YnNjcmliZXIubmV4dCh2YWx1ZSk7XG4gIH0pLnBpcGUoXG4gICAgc3RyYXRlZ3kuYmVoYXZpb3Ioe1xuICAgICAgd29yazogKCkgPT4gd29ya0ZhY3RvcnkodmFsdWUsIHN0cmF0ZWd5LndvcmssIG9wdGlvbnMpLFxuICAgICAgc2NvcGU6IChvcHRpb25zLnNjb3BlIGFzIFJlY29yZDxzdHJpbmcsIHVua25vd24+KSB8fCB7fSxcbiAgICAgIG5nWm9uZTogb3B0aW9ucy5uZ1pvbmUsXG4gICAgfSksXG4gICAgY2F0Y2hFcnJvcigoZXJyb3IpID0+IHRocm93RXJyb3IoKCkgPT4gW2Vycm9yLCB2YWx1ZV0pKSxcbiAgICBtYXAoKCkgPT4gdmFsdWUpLFxuICAgIHRha2UoMSlcbiAgKTtcbn1cbiJdfQ==","import { coerceAllFactory } from '@rx-angular/cdk/coercing';\nimport { ReplaySubject } from 'rxjs';\nimport { map, share, startWith, switchAll } from 'rxjs/operators';\n/**\n * @internal\n *\n * A factory function returning an object to handle the process of turning strategy names into `RxStrategyCredentials`\n * You can next a strategy name as Observable or string and get an Observable of `RxStrategyCredentials`\n *\n * @param defaultStrategyName\n * @param strategies\n */\nexport function strategyHandling(defaultStrategyName, strategies) {\n const hotFlattened = coerceAllFactory(() => new ReplaySubject(1), switchAll());\n return {\n strategy$: hotFlattened.values$.pipe(startWith(defaultStrategyName), nameToStrategyCredentials(strategies, defaultStrategyName), share()),\n next(name) {\n hotFlattened.next(name);\n },\n };\n}\n/**\n * @internal\n */\nfunction nameToStrategyCredentials(strategies, defaultStrategyName) {\n return (o$) => o$.pipe(map((name) => name && Object.keys(strategies).includes(name)\n ? strategies[name]\n : strategies[defaultStrategyName]));\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RyYXRlZ3ktaGFuZGxpbmcuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL2Nkay9yZW5kZXItc3RyYXRlZ2llcy9zcmMvbGliL3N0cmF0ZWd5LWhhbmRsaW5nLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQzVELE9BQU8sRUFBYyxhQUFhLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDakQsT0FBTyxFQUFFLEdBQUcsRUFBRSxLQUFLLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBWWxFOzs7Ozs7OztHQVFHO0FBQ0gsTUFBTSxVQUFVLGdCQUFnQixDQUM5QixtQkFBMkIsRUFDM0IsVUFBK0M7SUFFL0MsTUFBTSxZQUFZLEdBQUcsZ0JBQWdCLENBQ25DLEdBQUcsRUFBRSxDQUFDLElBQUksYUFBYSxDQUFnRCxDQUFDLENBQUMsRUFDekUsU0FBUyxFQUFFLENBQ1osQ0FBQztJQUNGLE9BQU87UUFDTCxTQUFTLEVBQUUsWUFBWSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQ2xDLFNBQVMsQ0FBQyxtQkFBbUIsQ0FBQyxFQUM5Qix5QkFBeUIsQ0FBQyxVQUFVLEVBQUUsbUJBQW1CLENBQUMsRUFDMUQsS0FBSyxFQUFFLENBQzZCO1FBQ3RDLElBQUksQ0FBQyxJQUFtRDtZQUN0RCxZQUFZLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQzFCLENBQUM7S0FDRixDQUFDO0FBQ0osQ0FBQztBQUVEOztHQUVHO0FBQ0gsU0FBUyx5QkFBeUIsQ0FDaEMsVUFBK0MsRUFDL0MsbUJBQTJCO0lBRTNCLE9BQU8sQ0FDTCxFQUF5QyxFQUNOLEVBQUUsQ0FDckMsRUFBRSxDQUFDLElBQUksQ0FDTCxHQUFHLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUNYLElBQUksSUFBSSxNQUFNLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUM7UUFDNUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUM7UUFDbEIsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxtQkFBbUIsQ0FBQyxDQUNwQyxDQUNGLENBQUM7QUFDTixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgY29lcmNlQWxsRmFjdG9yeSB9IGZyb20gJ0ByeC1hbmd1bGFyL2Nkay9jb2VyY2luZyc7XG5pbXBvcnQgeyBPYnNlcnZhYmxlLCBSZXBsYXlTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBtYXAsIHNoYXJlLCBzdGFydFdpdGgsIHN3aXRjaEFsbCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7XG4gIFJ4Q3VzdG9tU3RyYXRlZ3lDcmVkZW50aWFscyxcbiAgUnhTdHJhdGVneUNyZWRlbnRpYWxzLFxuICBSeFN0cmF0ZWd5TmFtZXMsXG59IGZyb20gJy4vbW9kZWwnO1xuXG5leHBvcnQgaW50ZXJmYWNlIFJ4U3RyYXRlZ3lIYW5kbGVyIHtcbiAgc3RyYXRlZ3kkOiBPYnNlcnZhYmxlPFJ4U3RyYXRlZ3lDcmVkZW50aWFscz47XG4gIG5leHQobmFtZTogUnhTdHJhdGVneU5hbWVzIHwgT2JzZXJ2YWJsZTxSeFN0cmF0ZWd5TmFtZXM+KTogdm9pZDtcbn1cblxuLyoqXG4gKiBAaW50ZXJuYWxcbiAqXG4gKiBBIGZhY3RvcnkgZnVuY3Rpb24gcmV0dXJuaW5nIGFuIG9iamVjdCB0byBoYW5kbGUgdGhlIHByb2Nlc3Mgb2YgdHVybmluZyBzdHJhdGVneSBuYW1lcyBpbnRvIGBSeFN0cmF0ZWd5Q3JlZGVudGlhbHNgXG4gKiBZb3UgY2FuIG5leHQgYSBzdHJhdGVneSBuYW1lIGFzIE9ic2VydmFibGUgb3Igc3RyaW5nIGFuZCBnZXQgYW4gT2JzZXJ2YWJsZSBvZiBgUnhTdHJhdGVneUNyZWRlbnRpYWxzYFxuICpcbiAqIEBwYXJhbSBkZWZhdWx0U3RyYXRlZ3lOYW1lXG4gKiBAcGFyYW0gc3RyYXRlZ2llc1xuICovXG5leHBvcnQgZnVuY3Rpb24gc3RyYXRlZ3lIYW5kbGluZyhcbiAgZGVmYXVsdFN0cmF0ZWd5TmFtZTogc3RyaW5nLFxuICBzdHJhdGVnaWVzOiBSeEN1c3RvbVN0cmF0ZWd5Q3JlZGVudGlhbHM8c3RyaW5nPlxuKTogUnhTdHJhdGVneUhhbmRsZXIge1xuICBjb25zdCBob3RGbGF0dGVuZWQgPSBjb2VyY2VBbGxGYWN0b3J5PHN0cmluZz4oXG4gICAgKCkgPT4gbmV3IFJlcGxheVN1YmplY3Q8UnhTdHJhdGVneU5hbWVzIHwgT2JzZXJ2YWJsZTxSeFN0cmF0ZWd5TmFtZXM+PigxKSxcbiAgICBzd2l0Y2hBbGwoKVxuICApO1xuICByZXR1cm4ge1xuICAgIHN0cmF0ZWd5JDogaG90RmxhdHRlbmVkLnZhbHVlcyQucGlwZShcbiAgICAgIHN0YXJ0V2l0aChkZWZhdWx0U3RyYXRlZ3lOYW1lKSxcbiAgICAgIG5hbWVUb1N0cmF0ZWd5Q3JlZGVudGlhbHMoc3RyYXRlZ2llcywgZGVmYXVsdFN0cmF0ZWd5TmFtZSksXG4gICAgICBzaGFyZSgpXG4gICAgKSBhcyBPYnNlcnZhYmxlPFJ4U3RyYXRlZ3lDcmVkZW50aWFscz4sXG4gICAgbmV4dChuYW1lOiBSeFN0cmF0ZWd5TmFtZXMgfCBPYnNlcnZhYmxlPFJ4U3RyYXRlZ3lOYW1lcz4pIHtcbiAgICAgIGhvdEZsYXR0ZW5lZC5uZXh0KG5hbWUpO1xuICAgIH0sXG4gIH07XG59XG5cbi8qKlxuICogQGludGVybmFsXG4gKi9cbmZ1bmN0aW9uIG5hbWVUb1N0cmF0ZWd5Q3JlZGVudGlhbHMoXG4gIHN0cmF0ZWdpZXM6IFJ4Q3VzdG9tU3RyYXRlZ3lDcmVkZW50aWFsczxzdHJpbmc+LFxuICBkZWZhdWx0U3RyYXRlZ3lOYW1lOiBzdHJpbmdcbikge1xuICByZXR1cm4gKFxuICAgIG8kOiBPYnNlcnZhYmxlPHN0cmluZyB8IG51bGwgfCB1bmRlZmluZWQ+XG4gICk6IE9ic2VydmFibGU8UnhTdHJhdGVneUNyZWRlbnRpYWxzPiA9PlxuICAgIG8kLnBpcGUoXG4gICAgICBtYXAoKG5hbWUpID0+XG4gICAgICAgIG5hbWUgJiYgT2JqZWN0LmtleXMoc3RyYXRlZ2llcykuaW5jbHVkZXMobmFtZSlcbiAgICAgICAgICA/IHN0cmF0ZWdpZXNbbmFtZV1cbiAgICAgICAgICA6IHN0cmF0ZWdpZXNbZGVmYXVsdFN0cmF0ZWd5TmFtZV1cbiAgICAgIClcbiAgICApO1xufVxuIl19","import { Inject, Injectable, Optional, } from '@angular/core';\nimport { BehaviorSubject, fromEvent, } from 'rxjs';\nimport { map, shareReplay, switchMap, takeUntil } from 'rxjs/operators';\nimport { mergeDefaultConfig, RX_RENDER_STRATEGIES_CONFIG, } from './config';\nimport { onStrategy } from './onStrategy';\nimport * as i0 from \"@angular/core\";\n/**\n * @description\n * RxStrategyProvider is a wrapper service that you can use to consume strategies and schedule your code execution.\n *\n * @example\n * Component({\n * selector: 'app-service-communicator',\n * template: ``\n * });\n * export class ServiceCommunicationComponent {\n * private currentUserSettings;\n *\n * constructor(\n * private strategyProvider: RxStrategyProvider,\n * private userService: UserService,\n * private backgroundSync: BackgroundSyncService\n * ) {\n * this.userService.fetchCurrentUserSettings\n * .pipe(\n * tap(settings => (this.currentUserSettings = settings)),\n * this.strategyProvider.scheduleWith(\n * settings => this.backgroundSync.openConnection(settings),\n * { strategy: 'idle' }\n * )\n * )\n * .subscribe();\n * }\n * }\n *\n * @docsCategory RxStrategyProvider\n * @docsPage RxStrategyProvider\n */\nexport class RxStrategyProvider {\n /**\n * @description\n * Returns current `RxAngularConfig` used in the service.\n * Config includes:\n * - strategy that currently in use - `primaryStrategy`\n * - array of custom user defined strategies - `customStrategies`\n * - setting that is responsible for running in our outside of the zone.js - `patchZone`\n */\n get config() {\n return this._cfg;\n }\n /**\n * @description\n * Returns object that contains key-value pairs of strategy names and their credentials (settings) that are available in the service.\n */\n get strategies() {\n return this._strategies$.getValue();\n }\n /**\n * @description\n * Returns an array of strategy names available in the service.\n */\n get strategyNames() {\n return Object.values(this.strategies).map((s) => s.name);\n }\n /**\n * @description\n * Returns current strategy of the service.\n */\n get primaryStrategy() {\n return this._primaryStrategy$.getValue().name;\n }\n /**\n * @description\n * Set's the strategy that will be used by the service.\n */\n set primaryStrategy(strategyName) {\n this._primaryStrategy$.next(this.strategies[strategyName]);\n }\n /**\n * @internal\n */\n constructor(cfg) {\n this._strategies$ = new BehaviorSubject(undefined);\n this._primaryStrategy$ = new BehaviorSubject(undefined);\n /**\n * @description\n * Current strategy of the service as an observable.\n */\n this.primaryStrategy$ = this._primaryStrategy$.asObservable();\n /**\n * @description\n * Returns observable of an object that contains key-value pairs of strategy names and their credentials (settings) that are available in the service.\n */\n this.strategies$ = this._strategies$.asObservable();\n /**\n * @description\n * Returns an observable of an array of strategy names available in the service.\n */\n this.strategyNames$ = this.strategies$.pipe(map((strategies) => Object.values(strategies).map((s) => s.name)), shareReplay({ bufferSize: 1, refCount: true }));\n this._cfg = mergeDefaultConfig(cfg);\n this._strategies$.next(this._cfg.customStrategies);\n this.primaryStrategy = this.config.primaryStrategy;\n }\n /**\n * @description\n * Allows to schedule a work inside rxjs `pipe`. Accepts the work and configuration options object.\n * - work is any function that should be executed\n * - (optional) options includes strategy, patchZone and scope\n *\n * Scope is by default a subscription but you can also pass `this` and then the scope will be current component.\n * Scope setup is useful if your work is some of the methods of `ChangeDetectorRef`. Only one change detection will be triggered if you have multiple schedules of change detection methods and scope is set to `this`.\n *\n * @example\n * myObservable$.pipe(\n * this.strategyProvider.scheduleWith(() => myWork(), {strategy: 'idle', patchZone: false})\n * ).subscribe();\n *\n * @return MonoTypeOperatorFunction<R>\n */\n scheduleWith(work, options) {\n const strategy = this.strategies[options?.strategy || this.primaryStrategy];\n const scope = options?.scope || {};\n const _work = getWork(work, options?.patchZone);\n const ngZone = options?.patchZone || undefined;\n return (o$) => o$.pipe(switchMap((v) => onStrategy(v, strategy, (_v) => {\n _work(_v);\n }, { scope, ngZone })));\n }\n /**\n * @description\n * Allows to schedule a work as an observable. Accepts the work and configuration options object.\n * - work is any function that should be executed\n * - (optional) options includes strategy, patchZone and scope\n *\n * Scope is by default a subscription but you can also pass `this` and then the scope will be current component.\n * Scope setup is especially useful if you provide work that will trigger a change detection.\n *\n * @example\n * this.strategyProvider.schedule(() => myWork(), {strategy: 'idle', patchZone: false}).subscribe();\n *\n * @return Observable<R>\n */\n schedule(work, options) {\n const strategy = this.strategies[options?.strategy || this.primaryStrategy];\n const scope = options?.scope || {};\n const _work = getWork(work, options?.patchZone);\n const ngZone = options?.patchZone || undefined;\n let returnVal;\n return onStrategy(null, strategy, () => {\n returnVal = _work();\n }, { scope, ngZone }).pipe(map(() => returnVal));\n }\n /**\n * @description\n * Allows to schedule a change detection cycle. Accepts the ChangeDetectorRef and configuration options object.\n * Options include:\n * - afterCD which is the work that should be executed after change detection cycle.\n * - abortCtrl is an AbortController that you can use to cancel the scheduled cycle.\n *\n * @example\n * this.strategyProvider.scheduleCd(this.changeDetectorRef, {afterCD: myWork()});\n *\n * @return AbortController\n */\n scheduleCD(cdRef, options) {\n const strategy = this.strategies[options?.strategy || this.primaryStrategy];\n const scope = options?.scope || cdRef;\n const abC = options?.abortCtrl || new AbortController();\n const ngZone = options?.patchZone || undefined;\n const work = getWork(() => {\n strategy.work(cdRef, scope);\n if (options?.afterCD) {\n options.afterCD();\n }\n }, options.patchZone);\n onStrategy(null, strategy, () => {\n work();\n }, { scope, ngZone })\n .pipe(takeUntil(fromEvent(abC.signal, 'abort')))\n .subscribe();\n return abC;\n }\n /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.2.4\", ngImport: i0, type: RxStrategyProvider, deps: [{ token: RX_RENDER_STRATEGIES_CONFIG, optional: true }], target: i0.ɵɵFactoryTarget.Injectable }); }\n /** @nocollapse */ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.2.4\", ngImport: i0, type: RxStrategyProvider, providedIn: 'root' }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.2.4\", ngImport: i0, type: RxStrategyProvider, decorators: [{\n type: Injectable,\n args: [{ providedIn: 'root' }]\n }], ctorParameters: () => [{ type: undefined, decorators: [{\n type: Optional\n }, {\n type: Inject,\n args: [RX_RENDER_STRATEGIES_CONFIG]\n }] }] });\nfunction getWork(work, patchZone) {\n let _work = work;\n if (patchZone) {\n _work = (args) => patchZone.run(() => work(args));\n }\n return _work;\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RyYXRlZ3ktcHJvdmlkZXIuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY2RrL3JlbmRlci1zdHJhdGVnaWVzL3NyYy9saWIvc3RyYXRlZ3ktcHJvdmlkZXIuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBRUwsTUFBTSxFQUNOLFVBQVUsRUFFVixRQUFRLEdBQ1QsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUNMLGVBQWUsRUFDZixTQUFTLEdBR1YsTUFBTSxNQUFNLENBQUM7QUFDZCxPQUFPLEVBQUUsR0FBRyxFQUFFLFdBQVcsRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDeEUsT0FBTyxFQUNMLGtCQUFrQixFQUNsQiwyQkFBMkIsR0FFNUIsTUFBTSxVQUFVLENBQUM7QUFPbEIsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGNBQWMsQ0FBQzs7QUFFMUM7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0ErQkc7QUFFSCxNQUFNLE9BQU8sa0JBQWtCO0lBUTdCOzs7Ozs7O09BT0c7SUFDSCxJQUFJLE1BQU07UUFDUixPQUFPLElBQUksQ0FBQyxJQUFJLENBQUM7SUFDbkIsQ0FBQztJQUVEOzs7T0FHRztJQUNILElBQUksVUFBVTtRQUNaLE9BQU8sSUFBSSxDQUFDLFlBQVksQ0FBQyxRQUFRLEVBQUUsQ0FBQztJQUN0QyxDQUFDO0lBRUQ7OztPQUdHO0lBQ0gsSUFBSSxhQUFhO1FBQ2YsT0FBTyxNQUFNLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUMzRCxDQUFDO0lBRUQ7OztPQUdHO0lBQ0gsSUFBSSxlQUFlO1FBQ2pCLE9BQU8sSUFBSSxDQUFDLGlCQUFpQixDQUFDLFFBQVEsRUFBRSxDQUFDLElBQUksQ0FBQztJQUNoRCxDQUFDO0lBRUQ7OztPQUdHO0lBQ0gsSUFBSSxlQUFlLENBQUMsWUFBZ0M7UUFDbEQsSUFBSSxDQUFDLGlCQUFpQixDQUFDLElBQUksQ0FDa0IsSUFBSSxDQUFDLFVBQVUsQ0FBQyxZQUFZLENBQUMsQ0FDekUsQ0FBQztJQUNKLENBQUM7SUF3QkQ7O09BRUc7SUFDSCxZQUdFLEdBQWdDO1FBakYxQixpQkFBWSxHQUFHLElBQUksZUFBZSxDQUFrQixTQUFTLENBQUMsQ0FBQztRQUMvRCxzQkFBaUIsR0FBRyxJQUFJLGVBQWUsQ0FFN0MsU0FBUyxDQUFDLENBQUM7UUFrRGI7OztXQUdHO1FBQ00scUJBQWdCLEdBQ3ZCLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxZQUFZLEVBQUUsQ0FBQztRQUV4Qzs7O1dBR0c7UUFDTSxnQkFBVyxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUMsWUFBWSxFQUFFLENBQUM7UUFFeEQ7OztXQUdHO1FBQ00sbUJBQWMsR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FDN0MsR0FBRyxDQUFDLENBQUMsVUFBVSxFQUFFLEVBQUUsQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLEVBQ2pFLFdBQVcsQ0FBQyxFQUFFLFVBQVUsRUFBRSxDQUFDLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRSxDQUFDLENBQy9DLENBQUM7UUFVQSxJQUFJLENBQUMsSUFBSSxHQUFHLGtCQUFrQixDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQ3BDLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsZ0JBQXVCLENBQUMsQ0FBQztRQUMxRCxJQUFJLENBQUMsZUFBZSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsZUFBZSxDQUFDO0lBQ3JELENBQUM7SUFFRDs7Ozs7Ozs7Ozs7Ozs7O09BZUc7SUFDSCxZQUFZLENBQ1YsSUFBcUIsRUFDckIsT0FBbUM7UUFFbkMsTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxPQUFPLEVBQUUsUUFBUSxJQUFJLElBQUksQ0FBQyxlQUFlLENBQUMsQ0FBQztRQUM1RSxNQUFNLEtBQUssR0FBRyxPQUFPLEVBQUUsS0FBSyxJQUFJLEVBQUUsQ0FBQztRQUNuQyxNQUFNLEtBQUssR0FBRyxPQUFPLENBQUMsSUFBSSxFQUFFLE9BQU8sRUFBRSxTQUFTLENBQUMsQ0FBQztRQUNoRCxNQUFNLE1BQU0sR0FBRyxPQUFPLEVBQUUsU0FBUyxJQUFJLFNBQVMsQ0FBQztRQUMvQyxPQUFPLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FDWixFQUFFLENBQUMsSUFBSSxDQUNMLFNBQVMsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQ2QsVUFBVSxDQUNSLENBQUMsRUFDRCxRQUFRLEVBQ1IsQ0FBQyxFQUFFLEVBQUUsRUFBRTtZQUNMLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUNaLENBQUMsRUFDRCxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsQ0FDbEIsQ0FDRixDQUNGLENBQUM7SUFDTixDQUFDO0lBRUQ7Ozs7Ozs7Ozs7Ozs7T0FhRztJQUNILFFBQVEsQ0FDTixJQUFhLEVBQ2IsT0FBbUM7UUFFbkMsTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxPQUFPLEVBQUUsUUFBUSxJQUFJLElBQUksQ0FBQyxlQUFlLENBQUMsQ0FBQztRQUM1RSxNQUFNLEtBQUssR0FBRyxPQUFPLEVBQUUsS0FBSyxJQUFJLEVBQUUsQ0FBQztRQUNuQyxNQUFNLEtBQUssR0FBRyxPQUFPLENBQUMsSUFBSSxFQUFFLE9BQU8sRUFBRSxTQUFTLENBQUMsQ0FBQztRQUNoRCxNQUFNLE1BQU0sR0FBRyxPQUFPLEVBQUUsU0FBUyxJQUFJLFNBQVMsQ0FBQztRQUMvQyxJQUFJLFNBQVksQ0FBQztRQUNqQixPQUFPLFVBQVUsQ0FDZixJQUFJLEVBQ0osUUFBUSxFQUNSLEdBQUcsRUFBRTtZQUNILFNBQVMsR0FBRyxLQUFLLEVBQUUsQ0FBQztRQUN0QixDQUFDLEVBQ0QsRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLENBQ2xCLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDO0lBQy9CLENBQUM7SUFFRDs7Ozs7Ozs7Ozs7T0FXRztJQUNILFVBQVUsQ0FDUixLQUF3QixFQUN4QixPQUdDO1FBRUQsTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxPQUFPLEVBQUUsUUFBUSxJQUFJLElBQUksQ0FBQyxlQUFlLENBQUMsQ0FBQztRQUM1RSxNQUFNLEtBQUssR0FBRyxPQUFPLEVBQUUsS0FBSyxJQUFJLEtBQUssQ0FBQztRQUN0QyxNQUFNLEdBQUcsR0FBRyxPQUFPLEVBQUUsU0FBUyxJQUFJLElBQUksZUFBZSxFQUFFLENBQUM7UUFDeEQsTUFBTSxNQUFNLEdBQUcsT0FBTyxFQUFFLFNBQVMsSUFBSSxTQUFTLENBQUM7UUFDL0MsTUFBTSxJQUFJLEdBQUcsT0FBTyxDQUFDLEdBQUcsRUFBRTtZQUN4QixRQUFRLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRSxLQUFLLENBQUMsQ0FBQztZQUM1QixJQUFJLE9BQU8sRUFBRSxPQUFPLEVBQUUsQ0FBQztnQkFDckIsT0FBTyxDQUFDLE9BQU8sRUFBRSxDQUFDO1lBQ3BCLENBQUM7UUFDSCxDQUFDLEVBQUUsT0FBTyxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBQ3RCLFVBQVUsQ0FDUixJQUFJLEVBQ0osUUFBUSxFQUNSLEdBQUcsRUFBRTtZQUNILElBQUksRUFBRSxDQUFDO1FBQ1QsQ0FBQyxFQUNELEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxDQUNsQjthQUNFLElBQUksQ0FBQyxTQUFTLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxNQUFNLEVBQUUsT0FBTyxDQUFDLENBQUMsQ0FBQzthQUMvQyxTQUFTLEVBQUUsQ0FBQztRQUNmLE9BQU8sR0FBRyxDQUFDO0lBQ2IsQ0FBQztpSUF6TVUsa0JBQWtCLGtCQWlGbkIsMkJBQTJCO3FJQWpGMUIsa0JBQWtCLGNBREwsTUFBTTs7MkZBQ25CLGtCQUFrQjtrQkFEOUIsVUFBVTttQkFBQyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUU7OzBCQWlGN0IsUUFBUTs7MEJBQ1IsTUFBTTsyQkFBQywyQkFBMkI7O0FBMkh2QyxTQUFTLE9BQU8sQ0FDZCxJQUF1QixFQUN2QixTQUEwQjtJQUUxQixJQUFJLEtBQUssR0FBRyxJQUFJLENBQUM7SUFDakIsSUFBSSxTQUFTLEVBQUUsQ0FBQztRQUNkLEtBQUssR0FBRyxDQUFDLElBQVUsRUFBRSxFQUFFLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztJQUMxRCxDQUFDO0lBQ0QsT0FBTyxLQUFLLENBQUM7QUFDZixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gIEluamVjdCxcbiAgSW5qZWN0YWJsZSxcbiAgTmdab25lLFxuICBPcHRpb25hbCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1xuICBCZWhhdmlvclN1YmplY3QsXG4gIGZyb21FdmVudCxcbiAgTW9ub1R5cGVPcGVyYXRvckZ1bmN0aW9uLFxuICBPYnNlcnZhYmxlLFxufSBmcm9tICdyeGpzJztcbmltcG9ydCB7IG1hcCwgc2hhcmVSZXBsYXksIHN3aXRjaE1hcCwgdGFrZVVudGlsIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHtcbiAgbWVyZ2VEZWZhdWx0Q29uZmlnLFxuICBSWF9SRU5ERVJfU1RSQVRFR0lFU19DT05GSUcsXG4gIFJ4UmVuZGVyU3RyYXRlZ2llc0NvbmZpZyxcbn0gZnJvbSAnLi9jb25maWcnO1xuaW1wb3J0IHtcbiAgUnhTdHJhdGVnaWVzLFxuICBSeFN0cmF0ZWd5Q3JlZGVudGlhbHMsXG4gIFJ4U3RyYXRlZ3lOYW1lcyxcbiAgU2NoZWR1bGVPblN0cmF0ZWd5T3B0aW9ucyxcbn0gZnJvbSAnLi9tb2RlbCc7XG5pbXBvcnQgeyBvblN0cmF0ZWd5IH0gZnJvbSAnLi9vblN0cmF0ZWd5JztcblxuLyoqXG4gKiBAZGVzY3JpcHRpb25cbiAqIFJ4U3RyYXRlZ3lQcm92aWRlciBpcyBhIHdyYXBwZXIgc2VydmljZSB0aGF0IHlvdSBjYW4gdXNlIHRvIGNvbnN1bWUgc3RyYXRlZ2llcyBhbmQgc2NoZWR1bGUgeW91ciBjb2RlIGV4ZWN1dGlvbi5cbiAqXG4gKiBAZXhhbXBsZVxuICogQ29tcG9uZW50KHtcbiAqICAgc2VsZWN0b3I6ICdhcHAtc2