*` Ju |):8,u)'Fv,#`Od +"TO&F!Ђa&2ذ O~ϬJ6 ?tπDCs %hB 1AF.(zBvPX橹2-B7hNone!64ADF72F4BBCE0644F7AF999C9F05930uʈkyj@QQ\g7"m$s@­}o\XK++UE4+Release-4.26XK++UE4+Release-4.268̖g* 7h Audio Oscilloscope?8/Game/NiagaraAudioVisualization/Effects/NS_DansingSmokewE/Game/NiagaraAudioVisualization/Effects/Scripts/NMS_AudioSpectrumVis.OI/Game/NiagaraAudioVisualization/Effects/Scripts/NMS_ColorByAudioSpectrum[-/Niagara/DefaultAssets/DefaultSpriteMaterialR-,/Niagara/Enums/ENiagara_EmitterStateOptions -/Niagara/Enums/ENiagara_InfiniteLoopDurationE'/Niagara/Enums/ENiagaraCoordinateSpace(/Niagara/Enums/ENiagaraCurlNoiseQualitya,/Niagara/Enums/ENiagaraEmitterLifeCycleModeo6/Niagara/Enums/ENiagaraEmitterScalabilityMode_Limitedy$/Niagara/Enums/ENiagaraInactiveMode&/Niagara/Enums/ENiagaraRandomnessModeen*/Niagara/Enums/ENiagaraSystemInactiveMode/b-/Niagara/Enums/ENiagaraTorusDistributionModeh!/Niagara/Enums/ENiagaraTorusModec0{1/Niagara/Functions/Localspace/SimulationPositionx&/Niagara/Modules/Emitter/EmitterStateka#/Niagara/Modules/Emitter/SpawnRatelb0/Niagara/Modules/Solvers/SolveForcesAndVelocitydet9/Niagara/Modules/Spawn/Initialization/InitializeParticle"o./Niagara/Modules/Spawn/Location/TorusLocationv^֥$/Niagara/Modules/System/SystemStateH!./Niagara/Modules/Update/Forces/CurlNoiseForce!L$/Niagara/Modules/Update/Forces/Drag|U`4/Niagara/Modules/Update/Forces/PointAttractionForce)U+/Niagara/Modules/Update/Forces/VortexForceUi;//Niagara/Modules/Update/Lifetime/ParticleStateɾ&*/Niagara/VectorFields/Assets/TilingCurl32Ȅr/Script/CoreUObjectI->/Script/Engine@I/Script/NiagaraGZ`/Script/NiagaraEditorpo!4C54C0CD475F2745CD6CB7A441CB2485!g>_Audio_OscilloscopeAmDAcceleration LimitnBLAdd(AdditionalDefinesAdvancedPinDisplay~AgecAgeAdvancement?Align Torus With AxisA/9Alive- AmplitudeArrayPropertyIiAssetImportDataQTAssignmentDefaultValuesmhAssignmentTargets#Attraction Radius 'AttractionStrengthF7zPAttractorPosition:<3 AttributesAudio Spectrum%Audio Spectrum001Audio_Spectrume5^AudioSpectrumqImBKOBaseIdKBaseScriptCompileHash)bBindingExistsOnSourcewv bCanAutoBind bCompleteOnInactiveuBegin DefaultsDQbExperimentalu bExposed,nbExposeToLibrary3 bFixedBounds RjobHidden~I bInterpolatedSpawn厵bInterpolatedSpawningp bIsEnabledgeUbIsPlaceholderp bIsValidA bLocalSpaceͳbMemberFunction BoolPropertyBox^7dbPNGCompressed75 bRequired#@/bRequiresContext?"bRequiresExecPin2*bRequiresPersistentIDsdbSoftDeprecatedFunctiong3 bSupportsCPU { bSupportsGPU@bTileXbTileY5­bTileZCbUseLegacyNameStringbUserSetEnabledStateHbWriteFunctionSZ ByteCodew BytePropertyN-CachedChangeIdeoCachedDefaultDataInterfaces`_#/ CachedNamespacelessVariableNamevCachedScriptVM':CachedScriptVMId&CachedUsageInfo*ث!CalledVMExternalFunctionsbޠCallSortPriorityԥ Category~ ChangeId7T ChannelIndex[^Clamp VelocityV/"ClasstwxClassStructOrEnum3gColoreg ColorBinding@h)ColorByAudioSpectrum. Audio Oscilloscope'$ColorByAudioSpectrum.Audio Spectrum{ ColorByAudioSpectrum_Emitter>'#ColorByAudioSpectrum_Emitter_Func_EH! ColorCurves?X CompileHashdCompileHashFromGraphvjCompilerVersionID]CompressionNoAlphaAConstants.DansingSmoke.CurlNoiseForce.Curl Noise Cone Mask Anglesr8IConstants.DansingSmoke.CurlNoiseForce.Curl Noise Cone Mask Falloff Angle"6Constants.DansingSmoke.CurlNoiseForce.Noise Frequency/E5Constants.DansingSmoke.CurlNoiseForce.Noise Strengthz6Constants.DansingSmoke.CurlNoiseForce.Pan Noise FieldZ2Constants.DansingSmoke.CurlNoiseForce.Random Seed nDConstants.DansingSmoke.CurlNoiseForce001.Curl Noise Cone Mask AngleCtLConstants.DansingSmoke.CurlNoiseForce001.Curl Noise Cone Mask Falloff Anglew9Constants.DansingSmoke.CurlNoiseForce001.Noise Frequency;8Constants.DansingSmoke.CurlNoiseForce001.Noise Strengthk9Constants.DansingSmoke.CurlNoiseForce001.Pan Noise Field${5Constants.DansingSmoke.CurlNoiseForce001.Random Seed!Constants.DansingSmoke.Drag.Drag h,Constants.DansingSmoke.Drag.Rotational Drag[/Constants.DansingSmoke.EmitterState.Loop DelayȳX2Constants.DansingSmoke.EmitterState.Loop Duration?0Constants.DansingSmoke.EmitterState.MaxDistance0Constants.DansingSmoke.EmitterState.MinDistance+Y0Constants.DansingSmoke.InitializeParticle.Color OP3Constants.DansingSmoke.InitializeParticle.Lifetime3ȬC/Constants.DansingSmoke.InitializeParticle.Massk)%5Constants.DansingSmoke.InitializeParticle.Mesh Scale.׉ :Constants.DansingSmoke.InitializeParticle.Sprite RotationZ6Constants.DansingSmoke.InitializeParticle.Sprite Size4>Constants.DansingSmoke.PointAttractionForce.Attraction RadiusFn?Constants.DansingSmoke.PointAttractionForce.AttractionStrengthO%=Constants.DansingSmoke.PointAttractionForce.Falloff ExponentOgd8Constants.DansingSmoke.PointAttractionForce.Kill RadiusGAConstants.DansingSmoke.SolveForcesAndVelocity.Acceleration LimitFK=:Constants.DansingSmoke.SolveForcesAndVelocity.Speed Limit5΅-3Constants.DansingSmoke.SpawnRate.Spawn ProbabilityY/h,Constants.DansingSmoke.SpawnRate.SpawnGroup_~+Constants.DansingSmoke.SpawnRate.SpawnRateDZ3Constants.DansingSmoke.TorusLocation.Handle Radius4 6Constants.DansingSmoke.TorusLocation.Knot Helix Loopsg5Constants.DansingSmoke.TorusLocation.Knot Ring LoopsQ 2Constants.DansingSmoke.TorusLocation.Large Radius7Constants.DansingSmoke.TorusLocation.Non Uniform ScaleǚHConstants.DansingSmoke.TorusLocation.Normalized Angle Around Torus AxisnW,Constants.DansingSmoke.TorusLocation.OffsetǞ&5Constants.DansingSmoke.TorusLocation.Radius Position1Constants.DansingSmoke.TorusLocation.Random SeedaR6Constants.DansingSmoke.TorusLocation.Spawn Group Maskr! 6Constants.DansingSmoke.TorusLocation.Surface Position0̛0Constants.DansingSmoke.TorusLocation.Torus Axisҭkn<Constants.DansingSmoke.TorusLocation.Torus Knot Tube Radiusi94Constants.DansingSmoke.TorusLocation.U DistributionJm0Constants.DansingSmoke.TorusLocation.U PositionX 4Constants.DansingSmoke.TorusLocation.V Distribution+ Y0Constants.DansingSmoke.TorusLocation.V Position~>Constants.DansingSmoke.VortexForce.Influence Falloff Exponent|<Constants.DansingSmoke.VortexForce.Influence Falloff Radiust6Constants.DansingSmoke.VortexForce.Origin Pull AmountKj/Constants.DansingSmoke.VortexForce.Vortex Axisu߱7Constants.DansingSmoke.VortexForce.Vortex Force Amount_!Constants.SystemState.Loop DelayD)t$Constants.SystemState.Loop DurationPContextStageMaxIndexbContextStageMinIndex{-Coordinate SpaceseCurl Noise Cone Mask AngleCurl Noise Cone Mask Axis#Curl Noise Cone Mask Falloff AngletoTCurlNoiseForce60CurlNoiseForce001_EmitterX CurlNoiseForce001_Emitter_Func_RCurlNoiseForce_Emitter-CurlNoiseForce_Emitter_Func_?CurrentLoopDuration@-Custom\~32CustomSortingBinding7 DansingSmokeX2!DansingSmoke. Audio OscilloscopeѕDansingSmoke.AgeasDansingSmoke.Audio Spectrum/WDansingSmoke.Audio Spectrum001U !DansingSmoke.CurrentLoopDuration muDansingSmoke.ExecutionState N"DansingSmoke.ExecutionStateSource3l DansingSmoke.InterpSpawnStartDt:BdDansingSmoke.LocalSpaceD(DansingSmoke.LoopCountmDansingSmoke.LoopedAgeMDansingSmoke.NormalizedLoopAgeC3DansingSmoke.RandomSeed*DansingSmoke.Scalability.DistanceFraction#}DansingSmoke.SpawnGroup8_)HDansingSmoke.SpawnInterval'cDansingSmoke.SpawnRate'DansingSmoke.SpawnRate.SpawnOutputInfo&DansingSmoke.SpawnRate.SpawnRemainderDansingSmoke.VectorField32:fL DataHash}FeDataInstance.Alive͌DataInterface\DataInterfaceInfoDataSetCompiledDataDataSetComponentOffsetoDataSetToParameters DebugNameL"Default__NiagaraEmitterEditorDatai!Default__NiagaraSystemEditorDataCDefaultSpriteMaterialۉH DeltaTime2 Description* DestgKDeterministicOffsetpx_ DIParamInfoy+#} DirectionEr. DisplayNamezBDistanceFraction9Drag܁ Drag_EmitterxDrag_Emitter_Func_aLDynamicAddPin`eEEdGrapho]$EdGraphSchema_NiagaraSystemOverview EditorDataHEmitterAdEmitter. Audio Oscilloscope'0 Emitter.Agee)Emitter.Audio SpectrumlDEmitter.Audio Spectrum001Emitter.CurrentLoopDurationEmitter.ExecutionStateRcEmitter.ExecutionStateSource3$#dEmitter.LocalSpaceEmitter.LoopCount d Emitter.LoopedAgeb Emitter.Module.SpawnOutputInfo@Emitter.Module.SpawnRemainderEmitter.NormalizedLoopAge$D~0Emitter.RandomSeedB%Emitter.Scalability.DistanceFractione3/Emitter.VectorField32%uAEmitterAgeVarNo?EmitterHandleGuidEmitterHandleId EmitterHandlesEmitterInstanceSeedVara/8EmitterInterpSpawnStartDTVarN,TEmitterRandomSeedVar09EmitterSpawnGroupVarUpEmitterSpawnIntervalVarl EmitterSpawnScript5EmitterSpawnScriptPropsG EmitterStateZTgEmitterState_DansingSmokew* EmitterState_DansingSmoke_Func_n EmitterTotalSpawnedParticlesVarHhEmitterUpdateScript]'[EmitterUpdateScriptProps⯘Enable Distance CullingЕnEnable Torus Knot RadiusLEnable Visibility Culling EnableScaleRpEngineD!Engine.DansingSmoke.InstanceSeedT'!Engine.DansingSmoke.NumParticles1q$Engine.DansingSmoke.SpawnCountScalek*Engine.DansingSmoke.TotalSpawnedParticlesE~1#Engine.DeltaTimer?Engine.Emitter.InstanceSeed-Engine.Emitter.NumParticlesN{{Engine.Emitter.SpawnCountScale7nX%Engine.Emitter.TotalSpawnedParticlesǪZEngine.ExecutionCountxIEngine.Owner.ExecutionState!Engine.Owner.LODDistanceFractionEngine.Owner.PositionU Engine.Owner.SystemLocalToWorldWg'Engine.Owner.SystemLocalToWorldNoScaleۍ\u Engine.Owner.SystemWorldToLocal]|z'Engine.Owner.SystemWorldToLocalNoScale Engine.TimenEngineEmitter  EngineOwner(NNENiagara_EmitterStateOptionsWS8ENiagara_InfiniteLoopDuration<-ENiagaraCoordinateSpaceENiagaraCurlNoiseQualityDENiagaraDataSetTypea\"ENiagaraDataSetType::ParticleData7ENiagaraEmitterLifeCycleModeƉ'ENiagaraEmitterScalabilityMode_LimitedxqENiagaraExecutionStateLsENiagaraExecutionStateSource$ ENiagaraInactiveModeJ ENiagaraInputNodeUsageh+ENiagaraInputNodeUsage::TranslatorConstantsu+ENiagaraRandomnessMode hlENiagaraScriptCompileStatus;I*ENiagaraScriptCompileStatus::NCS_UpToDate0< ENiagaraScriptLibraryVisibility)ENiagaraScriptLibraryVisibility::Library9ENiagaraScriptParameterUsage'n$ENiagaraScriptParameterUsage::Input$X$ENiagaraScriptParameterUsage::Local):%ENiagaraScriptParameterUsage::OutputByENiagaraScriptUsage m(ENiagaraScriptUsage::EmitterSpawnScriptVz)ENiagaraScriptUsage::EmitterUpdateScriptϵXENiagaraScriptUsage::Module:vj.ENiagaraScriptUsage::ParticleGPUComputeScript_Z)ENiagaraScriptUsage::ParticleSpawnScript5ENiagaraScriptUsage::ParticleSpawnScriptInterpolated*ENiagaraScriptUsage::ParticleUpdateScript l'ENiagaraScriptUsage::SystemSpawnScriptX6(ENiagaraScriptUsage::SystemUpdateScriptqENiagaraSimTargetAENiagaraSimTarget::CPUSim&u!ENiagaraSimTarget::GPUComputeSimV.ENiagaraSystemInactiveModeyl~CENiagaraTorusDistributionModeJ4+ENiagaraTorusMode}ENodeAdvancedPinse !ENodeAdvancedPins::Hidden״gEnumVÅo EnumPropertyQם@ ErrorTypet0ETextureSourceFormatw-ExecutionStatePx?ExecutionStateSourceצExperimentalMessageU`ExposedParametersu ExposureOptionsvH}Falloffb,>Falloff Exponent^Field FirstFrame%ޖFixed Random Seed FixedBoundsFloatComponentByteOffsets8+FloatComponentRegisterOffsetsFloatComponentStart: FloatOffsetsC;GFloatPropertyForce ForceAmountVtAFormat9 FriendlyName FullName{*<FunctionDisplayName?EFunctionScript݄FunctionSpecifiers_FunctionVersionQkGPU Capture DatasetDGPUCaptureDataSetCompiledDataoGPUComputeScript! GraphGuidv GraphSource,VR9GuidCPhHalfComponentByteOffsetsHalfComponentRegisterOffsetsHalfComponentStartjR`Handle Radius,4IdtfIDtIdName% ImportedSize] TInactive Response;CIncomingPhysicsDragsIncomingPhysicsForce29Influence Falloff Radius!InitializeParticle_Emitter_Func_ ɠInput| InputMap~]dInputParamLocationsU"? InputPinVInputs InstanceGicInt32ComponentByteOffsetstInt32ComponentRegisterOffsetsKInt32ComponentStarta΋' Int32OffsetsInternalConstantInternalParameters7InterpStartDT"1 IntervalDT IntPoint~uI IntProperty6JInverse Normalized Range=)Kill Particles When Lifetime Has ElapsedWkM Kill RadiusCCKill Within RadiusVJ Large RadiuscLastAssemblyTranslation$ LastBuiltTraversalDataChangeIdRLastCompileStatusLastGeneratedVMIdyLastHlslTranslation5n[LastHlslTranslationGPU7 LastOpCountљ LayerFormat_ LayoutInfoLibraryVisibilityQKLife Cycle ModeM Lifetime\ LightingGuidELimit Accelerationh# LinearColorCsFLocalq諺!Local.CurlNoiseForce.VectorFieldOW$Local.CurlNoiseForce001.VectorField\Local.Module.AgeAdvancement.Local.Module.DeltaTimeF~!Local.Module.DeterministicOffsetiȚLocal.Module.Fallofffb(Local.Module.ForceAmountFLocal.Module.InterpStartDTsLocal.Module.IntervalDTԹ$@&Local.Module.Inverse Normalized Range Local.Module.LoopCountIncreasedpg9Local.Module.LoopDuration ̓Local.Module.Mass\:g&Local.Module.NoActiveEmitterParticles^)Local.Module.NormalizedRangeSBLocal.Module.OriginVectorJunLocal.Module.ParticlesPositionI&Local.Module.PhysicsForceELocal.Module.PointOriginVecQ;z"Local.Module.PointOriginVecLengthP"Local.Module.PreviousEmitterStatea7{+Local.Module.RandomRadiusJ2Local.Module.RandomU IVQLocal.Module.RandomVoLocal.Module.Sampled NoiseYLocal.Module.SamplePositionM*OLocal.Module.SpawnCountlLocal.Module.SpawnRate}5CLocal.Module.TorusBitangentaLocal.Module.TorusNormalcLocal.Module.TorusTangent,Local.Module.TorusVector`Local.Module.VectorFieldꈔLocal.Module.VortexOriginiPLocal.Module.VortexVector; LocalSpaceS Locationq|LODDistanceFractionG-Loop Behavior[C} Loop Delay->Loop Duration!dLoop Duration Mode{#K\ LoopCount@GnLoopCountIncreased_y LoopDuration2 LoopedAgeMainL`1MapMain:D MapProperty5 MapSpawnMainɒCMapUpdateMain,Mask Curl Noiseņ֝MaskSpawnGroupshMass^F Material1Material Randomj#MaterialInterfaceYMaterialRandom]MaterialRandomBinding&AMaterialUserParamBinding^MergeId'S Mesh Scaleٺ MetaData䀴 MetadataMisc gModule. Audio Oscilloscope KIModule.Acceleration LimitsmGModule.Attraction Radius:S7Module.AttractionStrength6*U[Module.AttractorPosition!HModule.Audio SpectrumfN Module.ColorGModule.Coordinate Spacey"Module.Curl Noise Cone Mask Angle9!Module.Curl Noise Cone Mask Axis#*Module.Curl Noise Cone Mask Falloff AngleϞModule.DeltaTimed Module.DragkModule.EnableScale Module.Falloff ExponenttnModule.Fixed Random Seed^ Module.ForcevModule.Handle Radius3| Module.Influence Falloff RadiusiModule.Kill RadiusyModule.Kill Within Radius̟yAModule.Large Radius%CModule.LifetimeModule.Loop Delayp*Module.Loop Duration> Module.Mass">',Module.Material Random_nMModule.Mesh Scale8GModule.New Audio SpectrumشModule.Noise Frequency"$jModule.Noise Strength[YX Module.Non Uniform ScaleLlWModule.NormalaizedPosition *Module.Normalized Angle Around Torus AxisөModule.Offset6+Module.Origin Pull Amount(UModule.Override RandomnessOModule.Override Seed lModule.Pan Noise Field;Module.Particles.DirectionՉkModule.Position5`Module.PreviousVelocityiModule.Radius1/Module.Random Seed[:Module.Randomness Mode)@&Module.Recalculate Duration Each Loop.;Module.Rotational DragModule.Sample PositiongModule.Spawn Group MaskModule.Spawn ProbabilityB$JModule.SpawnGroup@Module.SpawnRateModule.Speed Limit0CModule.Sprite Rotation+6:fModule.Sprite SizeModule.Surface Position:5Module.Torus AxismModule.Torus OriginfModule.U Distribution`Module.Use FalloffModule.V Distribution Module.Velocity̦Module.Vortex Axis @Module.Vortex Force AmountTModule.Vortex Originx2Module.Write Lifetime0EModule.Write Mass1Module.Write Material RandomƆModule.Write Scale3pModule.Write SpriteRotationv%Module.Write to Intrinsic PropertiesI (ModuleUsageBitmaskl4]?Name98 NamePropertyJNew Audio Spectrum&NewNiagaraScriptScript.Audio Spectrumʧ,NewNiagaraScriptScript_Emitterm]%NewNiagaraScriptScript_Emitter_Func_< NiagaraBool֛DNiagaraCompileHash~o&NiagaraDataInterfaceAudioOscilloscope"NiagaraDataInterfaceAudioSpectrum:?laNiagaraDataInterfaceColorCurve]NiagaraDataInterfaceCurveu:!NiagaraDataInterfaceGPUParamInfo'x NiagaraDataInterfaceVectorFieldWZNiagaraDataSetCompiledData+.9NiagaraDataSetIDsNiagaraEmitterNiagaraEmitterEditorData%0NiagaraEmitterHandleNiagaraEmitterScriptPropertiesb NiagaraFloat5YNiagaraFunctionSignature) NiagaraGraphy7NiagaraGraphScriptUsageInfoy9NiagaraGraphViewSettingsNiagaraInputExposureOptions( NiagaraInt32Ĺ"NiagaraMatrixƌ}NiagaraNodeAssignment6NiagaraNodeEmitter)fNiagaraNodeFunctionCallJNiagaraNodeInputNiagaraNodeOpLjFNiagaraNodeOutput'NiagaraNodeParameterMapGetFNiagaraNodeParameterMapSetTmNiagaraNodeReroute٩NiagaraNumeric3=ӈNiagaraOverviewf^NiagaraOverviewNode0NiagaraParameterDataSetBinding/ˢ)NiagaraParameterDataSetBindingCollection\NiagaraParameterMap(NiagaraParametersNiagaraParameterStoreQNiagaraPlatformSetʟo NiagaraScriptvNiagaraScript /Game/NiagaraAudioVisualization/Effects/NS_DansingSmoke.NS_DansingSmoke:DansingSmoke_0.GPUComputeScriptp׺qNiagaraScript /Game/NiagaraAudioVisualization/Effects/NS_DansingSmoke.NS_DansingSmoke:DansingSmoke_0.SpawnScript l rNiagaraScript /Game/NiagaraAudioVisualization/Effects/NS_DansingSmoke.NS_DansingSmoke:DansingSmoke_0.UpdateScript鳟hNiagaraScript /Game/NiagaraAudioVisualization/Effects/NS_DansingSmoke.NS_DansingSmoke:SystemSpawnScriptUiNiagaraScript /Game/NiagaraAudioVisualization/Effects/NS_DansingSmoke.NS_DansingSmoke:SystemUpdateScriptoXy&NiagaraScriptDataInterfaceCompileInfoƐNiagaraScriptDataInterfaceInfo@NiagaraScriptSourceP[-NiagaraScriptVariableTNiagaraSpawnInfoQ NiagaraSpriteRendererPropertiessNiagaraStackEditorData_GNiagaraStatScopeNiagaraSystemRN^NiagaraSystemCompiledData4BNiagaraSystemEditorData+NiagaraSystemEditorFolderzNiagaraTypeDefinition8NiagaraTypeLayoutInfo˦rNiagaraUserParameterBinding`Ch%NiagaraUserRedirectionParameterStore{NiagaraVariablej' NiagaraVariableAttributeBinding LDNiagaraVariableLayoutInfoNiagaraVariableMetaData9cNiagaraVariableWithOffsetqNiagaraVMExecutableDataNiagaraVMExecutableDataIdŹNMS_AudioSpectrumVis=NMS_ColorByAudioSpectrum(NoActiveEmitterParticlesIѤ NodeGraphT NodeGuidѬ NodePosX[ NodePosYrFeNodeslNoise Frequency Noise Quality / Cost Noise Strength*Non Uniform ScaleqNone NormalaizedPositionH-#Normalized Angle Around Torus Axis"0NormalizedAgefoNormalizedAgeBinding!ՆNormalizedLoopAge>NormalizedPositionInBufferONormalizedPositionInSpectrumZENormalizedRangePGedNS_DansingSmokeʢZ` Numeric::MuljNumeric::NormalizeS֦NumMips* NumOutputs2& NumParticlesY NumSlices0.NumTempRegistersUObjectPropertyA۳Offset1xOpName Origin Pull Amount^ OriginVector0 OscilloscopewOutF OutPosition Output.Module.CurlNoiseForce"gOutput.Module.FirstFrame"Output.Module.IncomingPhysicsDragK9._#Output.Module.IncomingPhysicsForceɫOutput.Module.PositionFOutput.Module.TorusBitangentqOutput.Module.TorusNormalhoOutput.Module.TorusTangentyXOutput.Module.TorusVector?UOutput.Module.VelocitycK OutputMap9 OutputModulem OutputPin OutputsOverride Randomness@:iOverride Seed'TOverviewGraphViewSettingsK OwnerNameLB OwnerSystem|:+ OwningSystem?gPackagesGPackageLocalizationNamespacetyPackageMetaData,e Pan Noise Pan Noise Fieldw?k Parameterؙ'BParameterData|p ParameterOffset ؍ ParameterPinOK Parameters/, ParticlesٸParticles.AgePParticles.Color2zcParticles.Direction/Particles.LifetimePnwParticles.MassIbParticles.MaterialRandomrParticles.NormalizedAgeΑParticles.Position8| Particles.Presolve.PhysicsForce j?Particles.Presolve.PositionmParticles.Presolve.VelocityH Particles.Previous.Position>Particles.Previous.VelocityBParticles.ScalerParticles.SpriteRotationeParticles.SpriteSizeT[Particles.Velocity^ParticlesPositionU!ParticleStateParticleState_EmitteruParticleState_Emitter_Func_/'5 PhysicsForceh"PinOutputToPinDefaultPersistentId1 PlatformsXJ%PointAttractionForce*PointAttractionForce_Emitter?#PointAttractionForce_Emitter_Func_ PointOriginVec)PointOriginVecLength Position3+PositionBinding Presolve.PhysicsForce)3;&Presolve.Position胜CPresolve.Velocityz+Previous.Position"nTPrevious.Velocity(fPreviousEmitterState6mPreviousVelocityCiQualityLevelMaskRadiusO Random SeedlRandomness ModeD RandomRadius;lRandomU$RRandomVRapidIterationParameters~G1[Recalculate Duration Each LoopS ReferencedCompileHashesJbRegisteredFunctionsҡRegisteredParameterMapRead RegisteredParameterMapWritel:RendererProperties Results RootFolderylRotational Drag ̩ Sample PointHBSample Position; SampleAudioBuffer<SampleColorCurve[Sampled NoiseSampled ValueMj SampleFieldHMSamplePositionScalability Mode!/ScaleNvScale Spawn Count!BScaleSpawnCountCurve W Schemaw ScopeName,vScratchModuleՎuScratchPadScriptsScript= ScriptStructK ScriptTypec'ScriptUsageType<.SetVariables_619FBC7841F4E96144B94D92F32F22FEbBSetVariables_619FBC7841F4E96144B94D92F32F22FE.Particles.Direction6SetVariables_619FBC7841F4E96144B94D92F32F22FE_Emitterr8V$<SetVariables_619FBC7841F4E96144B94D92F32F22FE_Emitter_Func_{ SignaturefbW SimTarget &SimulationPositionPA3SizeXȑ*SizeYOSolveForcesAndVelocity 3SolveForcesAndVelocity_Emitter0F%SolveForcesAndVelocity_Emitter_Func_ӍSortedParameterOffsetslSourceV9Spawn Group Mask+Spawn ProbabilitymSpawnAttributesH= SpawnCount3SpawnCountScale; SpawnGroup֟;SpawnInstanceEmitterBindingsj'SpawnInstanceParamsDataSetCompiledData{h/ SpawnRate*#SpawnRate_DansingSmokeSpawnRate_DansingSmoke_Func_+ SpawnScript$sSpawnScript_MainjsSpawnScript_MapSpawnMainP?SpawnScript_MapUpdateMainyPSpawnScriptProps`W Spectrum;Я Speed LimitXf?Sprite Rotation2H Sprite SizeugDSpriteRotationJ_SpriteRotationBinding SpriteSizer9SpriteSizeBindingJBStackEditorDatavStackEntryKeyToDisplayNamep:' StatScopesDv StrProperty;r$StructProperty0Surface Position0:GSystem B-l System.Age>|System.bCompleteOnInactiveJOSystem.CurrentLoopDurationimSystem.ExecutionState`System.ExecutionStateSourceLSystem.LoopCount^ǒJSystem.LoopedAge0|[System.NormalizedLoopAgeԛSystemCompiledData_)SystemLocalToWorldSystemLocalToWorldNoScale;z{SystemOverviewGraphtK9rSystemScriptGraphQg2SystemScriptSource.SystemSpawnScript1SystemSpawnScript_Main?SystemSpawnScript_MapMain SystemStateSystemState_Func_ٖSystemUpdateScript$SystemUpdateScript_MainvSystemUpdateScript_MapMainFpSystemWorldToLocalWOSystemWorldToLocalNoScale TextProperty:t Texture2D@TextureSourceH'ThumbnailImageY̛*ThumbnailTexture TilingCurl32PTimet+ Torus AxisA'4Torus Distribution Mode Torus Mode/ Torus OriginFTorusBitangentB2TorusLocation0TorusLocation_EmitterRJTorusLocation_Emitter_Func_ TorusNormal5G TorusTangentFEW TorusVectorKETotalFloatComponents[TotalHalfComponents~TotalInt32ComponentsԴTransient.FirstFrame&9Transient.PhysicsDeltaTimem)?Transient.PhysicsDragޜ Transient.PhysicsForceGS Transient.PhysicsRotationalDrag+Transient.ScalabilityEmitterExecutionState-loR,Transient.ScalabilityEmitterSpawnCountScale3$Transient.ScalabilityExecutionStatel Transient.SpawningbCanEverSpawnReP Traversal5 TSF_BGRA8TypeFrU DistributionUInt16PropertyO`0UInt32Property,8JUnderlyingType UniqueEmitterName-ڠ UniqueIDkUpdateInstanceEmitterBindingsЕc(UpdateInstanceParamsDataSetCompiledData^UpdateInstanceSystemBindingK UpdateScript-XUpdateScript_MainMUpdateScript_MapMain9UpdateScriptProps9iUsageUsageId& UsageTypes`9z Use Falloff>Use Influence Falloff~Use Linear Dragf;Use Rotational Drags}Use Spawn ProbabilitynFW UseLoopDelayUserDefinedEnum*N UserPtrIdx8 V Distribution|U(Value01 VariablerxVariableLayoutsM VariablesVariableToScriptVariableD`Vectord Vector FieldW_, Vector2DU0l VectorField\&VectorField162&MVectorField32HVectorField64g1VectorFieldStaticuTQ VelocityCVelocityBinding7·VMExternalFunctionBindingInfoVMFunctionSpecifierCEĪ Vortex Axis؃rVortex Force AmounttcdVortex Origing VortexForcenVortexForce_EmitterfVortexForce_Emitter_Func_̈́ VortexOriginL VortexVectorz Write Color97Write Lifetimeg Write Mass0pWrite Material RandomO Write Position Write ScaleWrite SpriteRotationÜWrite SpriteSizeķWrite to Intrinsic ParameterssWrite to Intrinsic PropertiesCWrite to Presolve Properties hzXFQZoom=WDefault!9EFEC2754688770EFEEE238A26C4F1C4_/Game/NiagaraAudioVisualization/Effects/NS_DansingSmoke.NS_DansingSmoke:ScratchModule.CategoryNiagaraNodeAssigment)Sets one or more variables in the stack.AssignmentNodeDesc/Game/NiagaraAudioVisualization/Effects/NS_DansingSmoke.NS_DansingSmoke:DansingSmoke_0.NiagaraScriptSource_0.NiagaraGraph_0.NiagaraNodeAssignment_0.SetVariables_619FBC7841F4E96144B94D92F32F22FE.DescriptionAudioSpectrumVis!434D5A0242029952BD1C5E9509C3E811/Game/NiagaraAudioVisualization/Effects/NS_DansingSmoke.NS_DansingSmoke:DansingSmoke_0.NiagaraEmitterEditorData_0.StackEditorData.StackEntryKeyToDisplayName(0 - Value).StackEntryKeyToDisplayName!434D5A0242029952BD1C5E9509C3E811/Game/NiagaraAudioVisualization/Effects/NS_DansingSmoke.NS_DansingSmoke:DansingSmoke_0.NiagaraEmitterEditorData_0.StackEditorData.StackEntryKeyToDisplayName(0 - Value).StackEntryKeyToDisplayNamejj.jjjTj<j=j>j?jAjDjbjmjpjjEjJjPjQjRjSjTjUjVjWjXj[jjjkjnjrjsP0P1 Ebbbb b$bbb_bLbbbbb n4 n4 r s          : H N O Y ^ l()*+./25KLMX.7h.JhZ]hAhX< M5i3" Mi[< MiX= MjX= Mij27 Mj87 Mk[= MPk[= MkXA MkXA 7lXA! MlZA Mr`JaJbG;PQ vQ'RRbR k R R wRRRR!R$R 'R2R K9R m>Rz]GRLRSnSSXSZSWi]SW_SbSdS56fSkhSWjSSlS2oS2qT@PsT@wT:{U1v~U1UN؂UO&UNuUÉU1LUN}VyːV"DVfV WWdWqhWٸWWXtXtXtu[[t*w  oaw'x}Oh I[L Nݱ,R j)  Yj)2 \j)[ ]H) k2 k- k-  k-9 k -f ke- kf- kg- kh- ki-G kj-t kk- kl- km- kn-( k &U ko-{ kp- kq- kr- ks-/ kt-\ ku& kv- kw& kx-" k -/# ky&\$ k{-% k|-& k}-' k~- ) k-6* k-c+ k-, k-- k&. k-0 k1=1 k-n2 k-3 k-4 k-5 k-"7 k-O8 k-|9 k-: k-; k-= k-0> k-]? k-@ k-A k-B k-D k&>E k-dF k-G k-H k-I k-K k-EL k-rM k-N k-O k-P k-&R k-SS k-T k-U k&V k&X k&&Y k&LZ k&r[ k&\ k&] k-^ k-` k->a k-kb k&c k-d k-e k-g k*Eh kGoi k-j k-k k-m k-=n k*jo k-p k Kq k!K s k"KWt k#-u k$-v k%Gw k&-Cy k'-pz k(-{ k&| k)-} k*- k+-J k,-w k-- k.-у k/- k0-+ k1-X k2- k& k3-؊ k4- k5-2 k6-_ k7- k89 k9- k:- k;-L k<-y k- k=-ӗ k>- k?-- k@-Z kA- kB- kC- kD- kE-; kF-h k- kG-¤ kH- kI- kK-I kL-v kM- kN-Ы kO- kP-* k -W kQ- kR- kS-޲ kT- kU-8 kV-e kWG kX-ٸ kY- kZ-3 k &` k[- k\- k]- k^- k_-: k`-g ka- kb- kc- kd- k-H k-u k - k- k1 k- k 1E k-v k- k - ke- kf&* kg-P kh-} ki- kj- kk- kl-1 km-^ kn& k - ko- kp- kr-8 ks-e kt- ku- kv- kw& kx-? k -l ky- kz- k{- k|- k}-M k~-z k- k& k1 k-+ k-X k- k- k- k- k-9 k-f k- k- k- k1 k&K k-q k- k- k- k-% k-R k- k- k- k- k*3 k-] k- k- k- k- k&> k-d k- k- k- k- k-E! k-r" k-# k-$ k-% k-&' k-S( k-) k&* k&+ k-, k&&. k&L/ k&r0 k-1 k-2 k-3 k-5 k-L6 k&y7 k-8 k&9 k-: k-< k-L= k-y> k-? k-@ k-B k &-C k!*SD k"*}E k#*F k$*G k%-H k&-(J k'&UK k(-{L k-M k)-N k*-P k+-/Q k,-\R k--S k.-T k/-U k0-W k1-=X k2-jY k-Z k3-[ k4-\ k5-^ k6-K_ k7-x` k8-a k9-b k:-c k;-,e k<-Yf k-g k=-h k>-i k?- k k@-:l kA-gm kB-n kC-o kD-p kE-r kF-Hs k-ut kG-u kH-v kI-w kJ-)y kK-Vz kL-{ kM-| kN-} kO-  kP-7 k -d kQ- kR- kS- kT- kU-E kV-r kW- kX-̊ kY- kZ-& k -S k[- k\- k]&ڑ k^- k_-- k`-Z ka& kb- kc-ژ kd& m- 4 4  υ r j%  v& T & W7( TU [ZVW_X4@5)A6(M'*ILB7 ,!"#$+2O&38N%Cfger} hijklmnopqstuvwxyz{|~0GK?cd1H9J.>Q<=RS-PD    :E;/Fep{(3>IT_cdfghijklmnoqrstuvwxyz|}~ !"#$%+,-./012456789:;<=?@ABCDEFGHJKLMNOPQRSUVWXYZ[\)*&']^`abYLB:E/F)A 7,!,""!##"$$#+%NC&ON'M*(6M )5*'LI+$O, !-S.P.J=-/;0KG1H 2O3N4@5)6M(7  8N9JP:;/<>Q==.<P>J<?K@4ABC%DPEFG0KH1I*LJ9.>QRK0?GL*IM6('N&38%O+2&P9D=-QJ<RJSSR-___ `_  _  abb\]^NPNG  IHDR\rf IDATx_ɑy!& DI=izK=m_KΜUZ$ag ϸ %i zxCrwݮ^U(c9an a@z͹G&!`؝tVytSe[=8Ѡow(W}TS }?li[פal?EW-i7ް+q=T~ɑM;N|qp?]*^/BY}7,_o˧nO_җe67?GΜw(N_J G^bW>`*oEtDgCsΟ{jGڦP@O>D`'inl!mau}paXU5ES7U|:=9~ǣLz?sاt7a'J9t!zkUrGC(Uvwta>rO:.ۅK7cَ龮=1C .%VX:Q) H뽥'hO{UG{mGQy㹦N++JQf(=2gNܔ˵Y3_﷞_&թ@)6*`0cY f\|T:N͟3zCiYk(XlءP|TaM,Ex$> f$%fTJ4JTE*7QP9fE\qz 9F+ü&qgn֙<Ap<5k8WmCqۮIzɝɷ/aX4{?j7Jj/WWcNNL Ɯ׿,?)_Xe`W1qt~r.Oow @m285MWvJ&(36b)[KhH L,¡TйwN)[|2N 鑇zu% [WJK!3[QoL>|s?#:o~ ^WiUtB^A|,8N7fjL#Qe>{&3z㚌z[.:J:_Pd/#=GGQ -8\kr37 a\Sf[7pf\sg~u[xs^?qКØ>=Q)'O>qenCN mdeQz(ۦˣί{a6F XtY32^@rN?ïOS*ùWBP<F'~_=kk]gBic,1ZF@J~+ *s>~|Oqm{W-%T)9q&Rʳ/({(Np{/xs7uW+Fu*__wK[cP@Gfcp\4_4A\u7CjAO @wKwGг .Mj@>e=N*aXq}! h Ϊ4(HgI2:kK(]\'ڳ+\tE#R{Ec{+re65]C=H߲ 5vof\|GUjH k8k SKKD]h>Ogzm PF@Dyl]ߟ]-i [[>?\= }ܬ>F9u]Yƥ eԗ0,^mĊ |Yts.y4qX${]5~ws!ʪ P[<ߌ:gL'T002*06\YP0$BemK't/WtׂJԭ+40V.Z2_hSU{g%%?0B\Ű :}r9SڧNo~V̎o\3}虶:YάdNNNĸ@Yǎϵl>Ř8ꩌ9_F1|mtufi(0ziYlSQSveP?vJwLg+k,Wө-;9R5#{O!.s.*} F7_ncq|yGpBGa؁ 0 jpXLg(ҺqlOZ~"pw҅[պg{ 8y8;t%m{e|{mçnsV'V*u{/G\&}4//vj.<³uυ{з{}&xPWm)&}U^/@f'Kێ]gg8E:\ҥLibY"#;0m eCR|NjFoͰ, \[-wdw<1 x=zh u~I_^*) !uy1*W]R$(\8Ygo^Y5Ի^~oB n$ =7<%XkwׅҥNNcu&F8qCv@`_`|8=KPu#<b/> -׸>ST7_,G%"Naga:-wZ%eݵ~ h?[ƪ9刧Ki)~uEq}L>Ouǘ_4x}!+. ؓ]c @u%[}v܆e?8D|@ȅsB;0/'0㧢lrQm濝`\es+4lv,2;YwASU/Rk>>~' I܊Co?iߺn[oiPϽMC[p;/_O_+}ʚ4]}>#E Kک5voov $..pbk?!vƀZocFg^Ho״tyOu͕PaV(Zf7׺O]ْ#mlEA>OS&-|f[7> ]1q3JX"$k.w v0-R{w ·aO?L0?*GW#[53Th 鐹mG9P*4U*Pzp oC媅ke<(ˡO^7:.oYo1v^ϼ.^DS1d# k;ueg~a!8p])vy?WÀ#6>ń]@AV+ <+ {N.$G&)f.Q=D~`]2umʾO=Bټ u}]vIGF@pOyO{-w~hӈ5`~Syq/^맽|=ORaFtyv|Mu=0, ;f>ϴ@ȈH"\}(<e|b.'Z%ѽcLn%v8>/Ni=ۼa4T>vq=+ޓ.X)5 (=,pƝN߻>ݰvu/?;nOʰoL#yUHjZS ו42tʶ1z` ){˼?xqgrxb^P^Xm8  SB z * Bq`Е(#nbI`na{>xS U­{RVZ h岒6\} 0w thF^)ู1jt}늮'Dso/U>ɾnzI3P8\wӠQbq|kbԹJ7!53o_sl^iCcgIY \\0 (?[cL} b@`}\`QG}{״J,w nga4pykXwL,jcBب#HS8RVܙ~ؕ+=X/C 8~Sjk9[MoeeY}8{08B<#ϵ[+Up=Ǡշ/u(P~5 ySk KA<18 tY|Z˽݀y#PxI]Q`#L ]eQ NWx a^1]DRlRʅi):׃5⃧Ryz *&2YMl֯+2SJ< IDATru2B{hiG鷤4zi,_RnJ]e2ֲ֗ :*\~Ge)6;yE>ћSMΆ;zʬ W|9[}#9J!ۅoë臅^}U'5 8 HA]ݝL㠝=3tCGC D'lgUsEm-u\tyM[[+39vxwPQ~p?fS֡Ѹ9^Z~4:yn襬Ls26#!(P<>^-6a+?tQ~֟>ģ偯A&t";NwAUxcѭ+twIWWwѕ^?U[~rXV^XtS qONwT6p 8ġʀ븥r|a|Dxx@Yv(~; 쨮fy_7ȶDLDYLgk}BaNF:;]cGP At%%M6 8uUh0/C&8 SK #`{jw .pQ򉢪(Ff<^=h;c8q :f2s={ (ۅ;l?O{v#솩6w}.? [!*Cg&v0sogY%Aɣ5]u.-.C#pde\tLQLaR; E;Ǔey\pdQ`,۲󴺰caʼɐ*l`ܺ#5˄^LQ&GmrҿZY8]N+##zO^*& _q;oXЉt!m| /l9Y˪Ge Lz3}ݻͷaQXETk|80+ Zb*O-ߢO^`U6C՛a7xt:t\UgJRM*oL Ka cMs0Y߾㉹,{d\ۃ_`9%8_)TriP_ 2 Aќ:19xGr 1>Jw%(#MX% OT778^jWE BL{1*@օ8h:w =\͵ =1ų 'kh@u/I5OёChߦ+x1ncX3bY q>`.bY ؂U>hɫmV۶}JV5<1B}Ѯ|'V}iz1z5rc8Cۣ1S"> | :?P<i؇c9 fƓ]%  P@qUpgQŬ[(Ę׺u#iJ]Ms>qR,weWk#'﹘3 pE皧Nm@ _[sSk;s>(M#F@!^[U0;Otx 1w >鲓玃[ e PBV Q2`ȼ|aU!+ ggTXkvVAHWc=-rա<_w+s07l#>BO pH ׮^,R1ۯ;-q8c],fg $9|\P>: YO3R ڡ QK@It80Ҫ&'1cct@3 m4Jcp׭4ş4SS!dj:{=Ma0iuW{֯ 2)eE3>Og¥C,Jy&:pzlt/cWe11~;e=a:/iG|JµGz{G2@E{Ƕipn=R֜5vg~ϠֿȓJOŹiJJtQ%mcQm  '2uU~hc0ͭ;p-]sJ{EIL\V~Tp?o}>82䙂A{itͼv]7fS"il?P>={rk)-˰P *Kc)^pjƟV0 l}.9\)H[T cΖt,=NGDᰨ7#ny((cČ_<0/ց%O"xa<~)Ó~m//]x[w׺#sw\AsO5. 1j`)'+ʘI0S1V<A O,(\2UTMPXdx}{6:42&o5w`L=YIf91F!mTu椵]expneC~F}f3Q6s-zqbT9G8ax _Fy /O5;Ç><@qg gɻҸKk#/jdJӊߎ;2G!"z.+EMu'-ݺh],B8'-Fw1U?皾qT#7Q6sü9j%HesuG oݜ Z"[*(j ?ZVzd{[r ͝[NQ7@VH^({Dygrdf+JO^ZCDz@(U\z45gaEσmK'̹Ű2q q^+a[1GB̈e:BZ./}rt6I1p۹?pElO:F+ʏx]% AfYz8/:nl+jP*Y)(JݶU;ꡒA2(Ƿm#o}5uxB]8ʯ }\|~2'a坃E z,bt0[!uo2{O|Bx/|5${|ki0PRqu;(ϿQ~~'Ct*_44ɸuc~Tď@Cۀ}8'H]iufŷ" {!ai[m/_[/ͫNTQ2E9 ˫ϯf[ҝcMAŇGҽ]T^<¸n:]sQe;H6ds=O`T"CLsPqW&,gޞ7#D ƙN޲vDG H!Ϣce/e=`8@ W&0H*^@͐Yğ|OEqV*[` `䆩Ki$2dD>ɳ N;kcêI*;P) mr.B0ޞ^:X"{?;j &]9Ǔ22DXWWC9A>(^,iѐ*d) (|6i qQo,SJ. hKz u{tA | "obz+i_D9 żE1G}~rg2KxQppPg*x (4|1 5 =b:`㍑SG#~6fghK7`[ѹ_ )o9u /F˥̮'7T 8! cu=-E^B#uO`]wed!`UњXxOb!}PQݎ@%oGg($D& nӹt>5aĜF"-C")i `$jQ}\]D\wek{BS%T,{BiJ+G;=]"n [΢TWPEڷ>mv wXB[ZlN'ʛ֩ݻ Jn_FJ1`(R YCu];_ƿr6!-Cp"}ں`|yi RA'9C0تP5oO4G}{BG&{f3"ASloaT4Xtz^w~Ou9X3D1z뜺==_wJVT~F˹uLt{^<"}~-g6"߂އ}W^MÕrhl)x(CKY Wo?( ]/C(#"kULjlr@u77x.*0"4tVW> /V8n{~֟%d>׬Ch$q F(CFẒ5AqwSg__"EyzP~ŔcH\cE(3:HSQ(:h|Pp}@zmd< "S SfqDJwDfjA_X\^1l ;mr8bA՛_.x@XxY?zV.bC)0 iϊ埆wC]2cAxb.Q볨O-}M? Q 0We\"xe>;7kC:!_"Ba }jwj;ΜoOQ;>}^rtzjRJxUN9lΏ?9ʫP.癯2f`瞺"wpNJ/V5ېR)Q<!4Q#-ʣ O˚YGޚ=< /緇W?>7_>bwGvS,Q2ES GvqEoctTa%BL"p\GCI辨 ;? 2Fi%߸H/`jGW~G0+Fwe:gU*GlG1sAp[_rop"bnQsSo`4lr|y.3L/lNSz,&S0T@X x=8(sI3a[8 Ć9F SS>_lG(~34_ZQ\gZ$p]|՘.yx9GGy1F+A;qy}>r;v/{E9r0 ݬ^uW|[\~CG}4f︟~ϼjkw4n}G9b˕9;ׄWIV鶹1eFEΟ/~v?]l~<P FO ]ͷ9^c1fN* K%*} !Q1f0.8SL,z|Zk1P4iF`(:U# Z7;Dk2Ci#<h3li™vHup A/nr; IDAT3B-iQ*bPbמxvWO\b a㉴ -Fx@ 5/>tBӉC+mވ2vĚx4 4<88ob/;X=%i͵w%/뇑?]щ/buм9?/ ޻~>ۃ'uzHaM^t C}8N==ePJH=Byt鸿JP?-CoBR\;0 , 8{HK,cDwB+jB2pFc<# =I4hjk .cоL90L#}^S8'˶[>rV)u 5.a-(,ďF 2 eXޏRTq nG\o ݅_̝4]Cʽ<5m =wm1;u#M9?[n <NK?r(wz̟'A?D_KDCʏRzm!=I 4@LcX*N!ֵ4_#{̊/!F@@a^. wO:޳l] -T%CWLbhCq6pOޗS\T؊Zn7GqiU1KAG?ǐvezs hz\7^\Q' Ȃg*7F 2!gz–Olxo【#?ݘ*Oފ6laDAS_58ߕDI2ÊߵfسV"rݐ$n]TGC2vE|2;i#Bm5.>cCC7i#̼R8*e[! ɻ:s^L09%KYVW_Ѻ܇K`0-$Q~8^gzӣ B0"pM0w^$OX`D${yWK#{1(4}ļ['zjJd:z / Ê0 űcĬ04v'B 0 KYv!^E}O=@k+|J b̳tv FʅX['PGs<8qNP6(ʞ,lf/WEPe6lxf8ںH u=8d DMQ^Qfp~,K7! eOSHk⾯۸|txO0'HKn.JHF/UHڊs+:=-VV7js,wCGaTYUFRنt{*u&u MF}<%}$h [Wl37hË CO|fjPZ \r v:]Pڭ;S7i웗5+aȕʨ/s8^sq2Ԙ^^W) F@C+c}ӈ :l0*'a͎H={ɺA؎UIh Ô+ũ%bʥH#ʼ=r\S>bwwAc,0*ԜreSptM*[E?vuPhP g_(:P%ir ^j! <^#ì7] ˆ$LÊE:̆ T$.;&&a~q2S(Tf| t$үpts'J"T)$-@#~b-tx1*Z֜UsVZ)SvT]IH04 2=[KXW2%[][ bGOIOD_bA7vGTHRۤS~{by 5mn0oaC3d%c8Q,R}EixW*^y1}1͢G:p՗o=3?+e(EkTR$%Ť]0chCm\]Spg=wH"Wn[r4]gA 򻮐$~-=!,c)9ǽބx} PB_# yF[qGxzaoQ벷e=~ȟJK`!_[Zz1PvFnx.j4򡮸G0ȹ[K1s!Sv* JơLaa˳uAe#HQ|Z.pcM1wܺqO00-Mxwk++i)hAWY▌_tzelM0#0(F>Tzi2fP!dݐ]ń0n=:'. \>oX[7eם<h<:] `U;/QUxUzn̔=v^&xxkt\8zO\|iVu/lc153HGC^\$2|l`2Ny?jG\w/?I7墾GQ'`Ѱ-P8!hu%8uBDЄU,eM2"uis֤=,s=_,,Lֆ*@ =BT\92x[B=__/^GSW&oy ߾}{o9zx;<|7b5hUЛQc$lVB?}.?DXFUT;GCGpP]̣{g՗y;Ɩ{X)ЃIv68OL*F GV>Zq]ȩ#g-,9@ {@7 BO4-iqҜ]r&=K8Aأʴ|P#©\~7uR/UjJ vV掎 |nUR|5܃^҃@'c61 Gr$5`69q>u@bZ]dF#{>K=1x]QL?#KAso޾;_c&/OÎ'˨F<7pj0#ZO] ~U^CXPq]Ea#r$כ ԞqGJ{;uY:̯c Ob$ ^Hƹ½#eF^kfO`Xfa]SJX&x@~ϵs\ƈ:ubF!F&iFݤ׊bm !7NT9{7O&RG(~]]nޝAxv01(p Is )?h%FsWVpϛ9?DEתQ,*<:2,,̳̆P7 *#"NQbrk.ѽр4`^2B92U3}ezR+_=F6p]D!$1Ըfj`Oay0%K#&4"% ynG1RHCGO̪CB,kQI-PSُy0z]JDgO1&jYuqe?)CcIF܄p~U>8? ίoK4| ~^GGY3d+os}<^,Hq%/R^OS1!1q+#=Z?$"#!"^/"x*K:v# f&qꏹl^kWP7e߁ouUxk:9e/FbZn?=բӱ_ zO5PGIK(?e,! @z6H聱7na^-^ lW47?n{o|Ym|0k7,J앷.0 p_+8AV/@D(I)/ @kEp/$Q81LM4 dW9m ,!#j(uzܴc/<ݛj~4p]=.Ӟuc[σWG@wJJ*/+qß:|9=/^\%x2= LiW! h~!+>'=O:NlWa*}tc%5JOQ5i+$.|`. ȟ\qo9]H)c2:gE)\}JBBomműly{=7yG) A7ǽ 둆(m9҇,Q>UtT7_ūP|^>.u_s3۶fcqg'ߣÃczM?;?Ǵh ѹ=9oؾ`Qx> .2|eg]C0* i``y _l"z?J55O-+۸/J})`ouIq]jGt|MOxUcU7y+usox2^Ǣ&VwN<Μ5Q(_72'\ I һ; G=~(ѐWOh*淵BttRt2_>sxwYpٓ4txy9(o<:.yyڻJףҩGӍGo>}WTEŮBo~DZq< K;rSd}o1J8UL30{](vĒA8nCfƏʍS4C $(9UdW!bZhL<5{8'DS9% ^F#2yjj]FHZ(?<{kJ,nŢW(]=0O7 ϟG[wpZ@dbێ/\ľ<>=Ѣ>àr>DKTK#N򛗇c|BroHJ~G'[&Ӑ$mxȸv6Ӗ>FG0uYGOf7/cu<MG4ғ(Lz~ Ӏ?xμxknW~Fvkqtx?^PExD2)?IW \烇ޅ`BQuGUs#8lKn LܚۤsT?GptWQ X׋?A?ב^h 킗"9}COx\Qn:kYXs]A Jؑ!un)Q. (E|E 7ٶbFBBqxRzꓞMe0(%D[dޱ4)D]h>Am~Y˞:35g_=ż磲OsO`YP=| .ӡ0v^y%0zw0hܜ˭&Ϭ_|tͧû7;?YBa{oGc·|Jxoںo<<}R^ǁa,949ƵZ[Ѐ/p-9[bm`2toy:Tʜ #ep q"/ᲅI Glzk(? Ra.JJ?}*# q<-Q/叶{Ѝ^zm rKEd#)c> 83dj2z;:kz1t}WG5/~)o< 'H)oO%+`g$ ?όz4^jzYycj mp3bzTOnxJ?ʿOQ˒. _<]Lp>|]p1SvyP|eZy ?O (/Fx:N2 m-nF R.=Ӱ<=JVDTAZ,QzwOלW(rnE* 4oɻ¸iI)o9j,F(y˓^^ą>iRD(?^)h9ʧ?!@ ~>WCn?~ߖ9ʿI7*0s3ܲ 1q9!~q0 cɣO'G1P|x=s@(jZ1wGe3>#W\DiUrij?~6`PJ}U;q$>G8ϴWȘUM,dj}UE 28*~p|4yʾY.p#D %hظ7$m|>uQ_E}$X a~٧{@n8}sflס P\<x(ÜWpv OJQtCqPơϟKT\kdI:] IDAT!lyUq^y ǶY{Gy,>C#/n){ѿ*d·xuO;ij s_ģ<..ŵS=y8;xa۳yp"x6&-a)X G}έ7aǩ_9G6~b0=aЯnj\@P |'啉}qPQd`꒗hkR!2 o|Gk3۱{GÎv@%Y={  둆m3h{sѿ|UTǽyQW?\OuGF2mBAQ{!3CDGr'[/@|xO衤dbOlOi(J wɊ<cyJZB΅G3u4X68 * x{ $,Kv}- /b!&̴^ X~#B<F;\2g2OKz!P|xQF?x2fr!oy|F`c$ȟO<=«_n#?qs*| =Dx(}ps`^ x:P: wB Hsᙿ¼f(0B.hHF'>,&9( r&E>2Y:,xQB<#.(Jy ^W aŷ0 9Ɩ#GAS#Nc1B@\NZ?yRO1o79(xcƃ'/~[`i ݐ/`F ($$47^%>_XG.#/>c|yL`.9 t%,G~x*?MF݄wC0?/(~͛mƲ5Ge.cG0I_9 齾wBχA6yS-c$`}dk@}427 9+?sиw3n­SNQGrrQ8ҼNO90e:ҧYLyK(=,cps1SO:FM}ߜU/q{& Ku5NiL2-~i~[=8iZt<A;ۗr}>J9[$kl^iCRj7cOmx71'3 q'5C>|<Y7?ņB<m}48=.cĈ.0RzCD>|n/^\jg1}:7>n°]1fi__.j>\>Ţ=~@p (sYQ1׎Jw@\*V]sdwB<)ɶ^MzDޛ2IwY_Y/(2qx*?'2'O%Q_|~x^[wO9p5\'Eνt+~f~8ׅ7?QDZ0\H A(m(p2z3^}7G@\,\{2nOT?w_~ #p RG"lFD?gDM<2A3ð 6|4[~p @4]t BS`Q:ey[b? SvX*?g pAA +RBa_t#:X ^#SIv@Sn3;?ig<=vOE=wy~^dX\&Џq>~虑b#@8&*b]&Ȟ) `c[.IF !A^p/?ۃS|%b{>VKRF&ObH;M8v9ć_b'XFx1_ҕp4 ~{BVUlYIc4ЅsK=<6kPxyd 1󪻊cі0FwWQ']łvk?-WbV`%u5[ѥ>Rqs #zMy`sPxN%fWm~?V#an~=A{FaVbxȃ@T1390ۨ3Pn1/ۦ+5Ɖ]ȏ9gع?i̱E"O͍E}ckՖ{,D%#oÌ $\gcV^wy 5/ ^)s>(x8/!c~ntu(QT| ةiCzX4<% ez3Wg"|{Eo߾2iJw|Q.y7 ز6үwc_*kgsT=W9 ~ܚk5f='VA9;p' c;߶z1; < p!ӿ.=QUMw~"? Q> og\z)`Wۋ[A;!s#uf/boj[v2cpdwGq;t$ESa>Ε許{x|\WHKڌH7懁\]oFLeWQl㠿,E=/\#w7|gd1)Ez=kng,[)9bR"ijff8 VǗix<WpKI?cvR7cƨ>n?}>o\i/9]PZ #O1*=x:2>KaX? ?*SaxW.}P۴C ӉL^wy?V/c%<5ʫgZepW2L/~ѕgˡ=;1mFt<Jў}|%,W)O}k6Ce*яӁ9!AW{6x+-}߄qvF޾=o$%</w_{$kl{RE߮#|r?Vf (cM4M26HIߒ>g_\@>SYIH*p`/ Jʞ1v!}&@\/@Al ?+髒s5:mM|"kL0@~"?3@(&bORc"]zu˖l³(WCi6ak*.66׃5}> q>8[NT1h-I G7 K:!A5stlvpE*2y1QcbEMn%6ۑ"vvo8ds-Ŧ̇5C^}UG WDc}s?,y"S76g'$v" n ݋\ڒ 4>>THz wl+(KJszZc*=0.LRԵO? rkaB.Ԁ?gВi&Xo(|BXg|w ;O 3jU\!'ffH{$~?!?V #{(x[̿muldGjVV?t-7m2Y,űoJ[֛X,s>K3чXtgeq}բ.s4)?*4#?y D@P@: 5) NOFINݣ"Lb)."Yo޶ & B,8IFO՜4ZH54$}ȤKwӏ/ I^$*^_4p$Yagã_($r) 0ve۶P[B^_{:sz=ΐxƼ zqow6nd~UV,eOJ"Qrc "rw -3hIBH:K-bq+gϳhO8֡݁.ߛv%_"$h~Ƃ<ܟ- p^40 l.=+nNU%nx_d{ bE=]f0o^v{f`hC i1Pz")\IIKc3A8QZy|[4Oz7cjR5ZG$Ֆf7]Ƚpַcо$m|V- _޽ j pmUx`SA7uvO{*9dU>}ح (nһE,6kI ,Σ}up1:S|rcQH6RCv H.,^>:G+,bN oiod[KJZ_ /z4a5!1EX"D%oY@OeԊ7!SiSWZiX< Xo?F#AObpлcNd$W":%i\{ O` $`縮 RΌ71HZDc$g~o}ք}JAW{!GW]Xyūp|.'_3[i#p}#=3Ey?]msvV䧈b"m+T,7$2A|V`QGI#ȏq-16p|vBIvډ($b!4t:ðv}~NԻ3J )e:t}&Dkj !'QXmMGp`5'B >)4YO &O1EuqbH~I1RXk3bOj_ut{8S$m蝆Nv5"Q:gARmm:x!3L"qׄ1TrAϊy I:>=7 VZt6no ʄ7v5^R{wOJ)/k~T-HkIJ݊p$wS|^;`#hNx+j?-IXrQf뿑 V+B#]G}>xo5<ѓs%pj$ב,%^{lkOD* DqN;~ _W㸩gEݟ%*rOv?n"̚^se? sHIGTZ4a-1һ̒~o1K2D>4|nM֡dX}Tadeiv;f8R6` Jf\&j !c"ۯݠɝN?i CAF|}W-ۅlqULem6!!@-l7!@LJY_[&~1zc깴i0ӁT)ѫTAAk"@e Mn_/:BT⸁ H/C~/X΁ i L y)us@;T)@`G P; WZVa$-ߕʶESArBJ0=pA!JϮVv*@z8{܈Yac*%$@r) ~ڢvq?E$*[ũePWkEXN3lQJ<|BPc[5T8%B8^ޜ!I VS8<6vɞB l>Y*BGT#t0V_a,Pk?#ůwBpir'E(kQ#¸?B4_ g V '~j>I`je>}u);s!;N" hQ]}V:۽&d'FYgͰ;+!j0DkqXO57. SJ;ɭNgbXۦSE{mRtߘW?TvpW BNdwhյښ@*cE]CLv*::C!֮jĝxQgKtK2چ|=DJc|qQ$:Eˊ .odkե C5Q*pK[s MKĞQ'I$T%>g#$wo ĥvz;ܢ2 jG+ih}Uh@]5Q=+x ddF*CGq7 ~d=h;/5ؒSH"l9by$(~$!r*-,WZjwji9Nkb;W}! qz!HoMѝ@~-n"Pi J( `u?Qbl5a@kYG 1/)%9WBs0JK2 XVXOFۍl5IayFAZ"I\;jѨ FT_SG~09g6eI@Ϲ /nhM )͔< ?з%#Qa G/__=.~JNhym隆y".@@l1 Cҿ( < šR0hP}}F|}O AO%8PS4"gyFhGa b0r0*G!DLc~`ڐd# v*&e[-YrH7p~IWa=a 18{܆LHuIl[e3Q3elYuu(LPg~!ېu_1Y1ܜߧ.k0o5~9نl"@L TMDu8wW \=? o![)i j0рxksP -'D`T6,TGT+!+_ﮒ{o]9QL "x @~DZJj qܹ~ƨNbu90{岊Y6ZQ;,%;I =U8|Q=*"1#(07yIAْܿfevgG/lt"8u2oY/Tp鏕="\߈ه`=83$AmDF 5ď`%p{iz%\ހyC )W z (pȯJ=e0B92&׬9m' 7.d۾IČ$FOy)I]t!KM i.p VinŲ"eu"?2*N=xXN.à I}vgN}X C]õ}2։1ms98.kcLR}e[A56k 5$pcLdSmѯv\pi~ ǑT&u ϣڰGHl>4}t}  h#ͫKv-{hgR?OHjG|*XgB##-飒cg8hp~_Aw9U<$aC;gFh|_h8Q(!{|\&mlhg9ߝҤgށDnz_dçL>wր/Ah}\=u>stILI u+flQ-;o#0&ՙ~29j V,L#=09 y=Yߟ!v'5ILKY 1f0f9j;':hlOx"dVaIՐU1Ɓ$t4ƹwVmXawR}6UqbHv$At ɠYh\m*#zcT`=>D71[)M=BXcFhǤ`I(k`DUpɑs/w==%"/| vpE7mT"3 % n(5@ Yd!BB/Na^R?j+ӄQ=C~Wݰs5G@c9c㣾kocAT\f@E~1" ~=8;3E0O0]W9,"_?cD$U$ :);6O 3?^mpv!rl }~@H1b $O,X*@v@H}-J_4}QY?ǀ>8pTCN hiqB|-﻾;v\W#v.ʽPmnmB.X%.Ãxl ݫdџTJU#T〰N+<.[V3!Q)joZ|PPƴ>< f.|!9.9竝֯ :IpHfC( \;lB; iή92zJIW|Sf^un@W1A(,ê qN%x ͈ Vem([t{b/z ݠϱF}.|B|w\.mb )0+?%& ܃EO'\5 \(WlqMD`:6׶D4H/vc,nYu|%眎#Wqj*szowv lΨ7#z \W[ I`AĠjj>ɥŸSR$7PaufxJ` pW"B ` D=s N]m`dP5T ?n8߅ NsU{'o+dkVuZ>_!P9sW43G OA\I?tͽ_u;ԎoI4t@Ԑ#Y1UB>ʇRNj& ^ٔcGUBHs/m12C jFauqIUk̳?H |GfכYyVqj!;ZX0CE6 :8~3*'qaݯ3HD@FcY~;엯).]\r% -)#Lwz8A_"F,r.wl5\;22VA0<0ѧN7?}gK[3im]Hvl%#1oB@'UH̜ڜIEܟxz4q~kZU}<.ƩcD @H'#G|Mz@ ">bGOjf Cȗp,l[YFo!&4 DQ@?j8v?au5߂X\7b5]6Ds!(^-FYR@`6-hOI9? fz; hD;%/M9ZpJL|\1>.e!A}5x:K{#">Ǥ }U}nd3:WcE|p*RpgO@'nE|(C"!tY`^>D$  ,#+D'ё ~~PW]TXILe)WS=8}.E,z *>j6|;ItDQ̄ ^+X/Œl+tJ8KW}ޑv=*FA.sk1LESVߕ,ƿ$4AoL ?نC=w εi_aŵM |.ra,1 4|&6 4JPV<.e,qIs!lXsp:7oik7M}b_0zvq D~3RfWov9R]+4D/rⴍ/ bd=_N@."Nd@G铱]z/³R^[;^**󞗻Pdb@ೈÀKîjlK:+,*׉q$3Ԗ* IDAT"94;ɯ}fX`zQ\g ,M㏀qHS1`R8嘺Ms`|Ҍc RƢ#:AtD3+e ȯ)Wn[ WbvU~$.G-Bd&}[|l/nқؠ0+l f#"?c 9Bѻ/M 5Bh O^Q*HCf2 Ld%@ znIN& AXuB7hy!/ZUpY%a@h +&30g~LVm7>J"K-93^ۓbi,|TandMBz^.؋-o@\!PHML|msl/Bs\#gj_~'rNa*t&2,IJM1Gh")  F#Bj$b>@NN\DtbP$_ 0ݗЙ BHoc ]2"CLh S8so^v ݔv߮=MFH(D? %v0 by5(Ǎ5OkLUogOA"@| U []#86>+酳ǟ5apbzQZ޵yeIzzw x Q %/x*u=Q"%4'u aǪ`c望̲KjGt~}e mn/_l#.8g&QCK7)9i:02!x "`F?h($ii^ JRwL{;g/OW_ňu %Ӎ@quFu;Զqpp K"D`s2Z#t;@ a8yUy IN?^4nB,> ՃY+ VJr[8 WWŎP0;jW``W;u zLr?.R;Q|W y$.yCJ}r@t9Lx-s΅1Xm~$MA9I0iӤ2SfRQZ{~PnOM۔EdeniتCk2.6W\\G*?6QpѸl7? 8Q-!Ovx<I@9[BZp4MPR ēFj=Ҁ|o#,D_qF(# ^] 0ҙ|O%._&sѵi~MJ,v# ܿг",I-U5#t!z##Q{2&gv[R.%L^s~E~M4$^>LN>GދԬ=n3[s~؋iHmiRigK;}8P?H*JoGv"`ﺈTL.` s!跧$ږw5F,=4>7y}#_=]9o$HXNS!2:,r;f%y'Mf|  FH+k#>y Y Ds-D)`ԅz  ò p!t;?t6ģ‘A` {QUL4 !h̀ىߠ׊8x2Ė Hpe0VɭHy7]K9´NY` Xk׳l QrKbK'|o"0+QKO9$:YHrٜ 'vŅ,'h>/_1 ԁV{/&̓A~J_߂GNe>xLӠ :F4!طe5Qp/`U9l} LιI$p(^@j"WpDfp=7pA( pAy=xPhlh u^j}oQHl@Д!7-URxa)B8OÕ|H?m#*]BJDuQ =BH'Ca7UW@LF0d >7tB0e9"W#[7!x}HN~;| 72%G߈z|\$ڨ1 郈D@XAaPJL;s-}4 yDtAr` 8J Y'!V{ds;ݸm 9=X䗻Hnwt<W\twu |ݻ 'gyCN"6KBYco/Ff-dW䢛A{WWJ@YltšVGP&^~{Mރ7wxW)Jz}KQހ Qh|KVڌ&~;e} <`, d؉y LA>pm8x_:^`sB8ycT)~35!(Z5SE [Qnbڵ65?MQҘr(YdR{Yw0\'DpfF=FU!'4a-3刊u"xAMݸB/[(,AW d"QIGhVW-K6y7 %j#b GQ;D}ba< *H [(iP85WQeBo 5 ewD#6^ !(MkǵĢ?g{.=έHo +qz6=lL?5BKpz}3з0Tc h/2 ;i7"[ԲqIHL=\}ՎyMsܶnA~w|δ#-co8HbSv{Ў%m!1kJm7K&VObkoH@#g֓02N8.>W)7! K [rɄ23-Ȟ2 kcCXC&F8`@0+Bn]6 C37( 4bQB^|uL@|gT~ *Zw {4?=d7L[ӟF?KH Q,eZ:sߜdT+' 5 Cu=#1NPB8ӗu˒+`M\1U?/F 9딺dnaPSC E<+[P;,тDi{n'/dՓ(4vYw)tK="58Ƥ=.-YpVRқc;+JHԃzXe<[41 'rR 1 뽖Ž2|L[埔(9UM $BWW&OGה_Υ|~5ltIоDžGd\D*8VOhF Bq6e?P#iQYo~;fS&fڕU }wq?Q5d2mD{ײxwfIӦqfg])wc}@p9 |z<*a#hVSLnQ/ > 6;W|rD$e)nvHW tA|-̤Ґrb~~(߃v'S0%:We FR  } N)Kg6}'}f۫fܞ\ x 1wfô`ŷ`v^01rnX1[e(t]]bo-3ߒD  ?Pmwq#S}IOMKy9m ass b@ ז}6a_T!6J k&yOJ:håC=cRF!?A!r%2)@7sQ1޽#@,9ױU:stvA k!|OLB)w(n_kCwK>\qFd7E[# 7BĮr~B0!tEm;xDܟs8>w±[6Gb|.5`e<Ը,taGqc_' 3@| U5FɃ˂BV_J%wV@s §v۹u-" *pQ\̜ a)~y8;d{ڀn 3Iz*?5;(떃hmI鏗@D'XZO6,mo#( z~7{@~$R**7ǔ㳿{op "¦\՞\Ʉ`-8zN3-v0,÷ׁwk5]pA] 1e .1ܓjy nり+0ךe:P.9Vk(:=dgP}1QGU2nHYzbz~|\ }Z(H D`zn%| O;'~+=o qwc`-)mPaV7Y>ǝ>~?;;'u©C7'z.ȯd7sc 9Fj]p**:_>k\2P}c7w~]cWnIM0JNuub^]sI~ *884^$7\nl==ȟy 9NzAb[q14G=M4 TNG0ALax\Z%T#"+w\B׽At|g c VL0"n@.t.4ddJ/9{=wgĔAt dڽX~[Relb$>v"AN/=[wHMbҌP 7uُNa䯡wQ13 :<3Y7ܟm$.s\fgkf:53eDH '&*o/mB~v '_/L4^=Ұx.0)-'T'bLՇ0&F#"n{)uuke"D A&> ps )ǯ|1p, eEG6>B5!J✍S8sIEÚR''HF/(F3"ZSƳ ",4z+)en>Vb"0Cvy߳ ~gI AĄ߁wP7M e9f!KRbW_l^vm.xNs>Xo|J\\sVBP3LP΍%LFDUOcX'1[5^+*n0!xk0;RCNxxn V$Nm}٠ \84>60KfhmUOWeLlnD˷>VڍrAS˖~w^lDCxS*$c,&gطS~Ab82Qhhz-px"Fȸۢ1ǵDH[!xݠ,N.CY{I/u38Fc$DJR];ڌnD`#&h8KD#,4DJ?k{ ~8cSAA0ۛG uZ>|/1ĴbO?iADWMprzگ5 %S}.ˍ)1e)(OI(cc5@ygMlϱCRͷ\E,"%:1rϿ_GJOCd!ҁݕ. .Yz"?BQu[j;c7Sq T/y3$apH)0?ԑߍ/lIoBvt}8]J>DB30Ek!^A-tihW!q9ʬ"QAdۭ*W) &cg |1+>,xE'w/~ y5`-'"1側MCB):k@p  4*KA Gנ/޻)> \OI6-I-W_Du1u ~ cI)ߜQaPg!!N3a^hl&vǁ8DOTM=\>ajD%zG'o2[Oӯ ڡHb=X5-Ajl`GIW37t<1wwDh7]ĝG' K,U|s~ޥ#x j>"b[`qK\._RLuCH#D@ Mw ѐ\AjF 0tJƖ4yۈ~<"ÔلuG]^S6 MAEN9{C BGNaՐ0jZ_.=\}ڿQ@-HhJ:]I[g=wm( !:7[g'nǕO 8MTk/n;[9uR&A40PaHeH8bݑ&"LZ| w0 }78=5)"7IX8!aN"=[-A0TIFðf0+8Y9ɺ8P6_rnWɆ;AO[b6c܀Q`1riiS=%oZkK/T72!L :un68gQ'N~` r`QSO]D^ߜv\P^(vn[6qPE2Y D`sqA}IG7b2|k7~~lhqQl-1ZSf|i9@zIC-i6|a^էg&P?~وssqTZiwwc YI17iI2뫩iA QUxs^u2;$~nGu^r/-!sX109Fyꇁӑ0'6X!}Xn0)p{EMa[ v|!]mХjvb{ ϹK£`"sc#=[nD!@rrW̺GoD4> P%o dQc$#?}&+$&ݼkNmS,ҝ%X:X~s5`:[AFBr6WO*>ݿ-]i!*Vƫkz,QnyW+&9G곸^!w3QA^Hh2OIkp,rAģ<5ݻ, DRwBSjeW9檑v-2{xV~GI?gٱÏ/H{RstlL YVQ*`w@m`a6Ioq“rAwέQ(34 >>"v;N2@_W8.d,|1-XJn:Q=d5zQ7U;SbIݟv$0a3)\1$SVM~pEf@ײppIV5 _Ct$+\yX VJpn'#G=$"=n6aR<;To<Iꍻ,D8qMSAM)sPy M- g\˰$N8X;#DnWb.9&]^d"`_hn?!,,vlA[ ? L*6r&m,0ުɂ-zxE0Y)Q){IuյoJ/Hrk59JIؑ6RV0=$ ! cFT^I 'MN%+%6no~vB'CX7c LBG867Qp;H&*A8tM]wEf%;GL}F~VVӟ I!ZqV'~{1V`U 0Gcґu=(jv_0 jL\` -mDKaV5S8>Cc]-.Ҟ0+w|S/4ýh\DiXRw=) %E#`6a@j2s\ 8)?G[u7p$dWa& 0^>?Hsk(}Ӏ6""e?kLcOWB PBYx>*vP9  QXԧ@!/lĮCpo6Mᐕ._8Csfly\y1Sf=n-C6$e "yC F2rhkU8"v]!v(t^p&C$@%H"8:`R;zk"obHFd89i&aw?AEnZzI E}׽> . yEWk{ܹWCO/}k3=(r"ٙPfgkm`tI5`cGYmv oXݧ[|I:Mb'Y48`E X^fJ$q &JAh~Gx>^/zFC*o%Lku &xqsv8cC BJrMEQhJ {DH.0b(@E|PvIu_D>Z}6J\ħ ۗHmY/E4>{FAIq1ޭ>FQMSHYKxLHnzN@U)8}S%K[5Fw>+_bm:$Rc\dvpuƤ$13O8^OgwAqF[j)!%{( pur8E1*2B.l9& {(Zgwky~ƶjQO1/lMް [@Ⱦ6 &P "AA'n$)!V0XBA~z"09[ a然#*s1w^KI5,!|gJe㛾|umO>$-$y;sqbŤHR&j*cjgF}>SDviA' }p3%"ۀz\B 'S^`$ Wd ;wJ^00ȿM|L>[5D$@ "fw7oiWy ^5F~CLlSHo,is~~8a%$cA|ʫ*J!# ė,)J (?+/co-> 5ηmŽT$x)aD' x*7CD2]!@Զܧܮ1x>9>bnBᄡ'ۮ?mǜ+N;l둠 괿LV1oV x^#O?%䩪4: P=Yj!f35hI,d"`_>z8~?P]D,l  } PQRuyp~/{\nmt&c~:)};!jcإ;KyҀޗv9KO5 6Lԩ8@im4{l=yN+xe*w1{H5w?=1CčP}!%T|R Ʋ"!p_0ЪN ;>@2R5]ﳿgV䜰:26L~zAo3+}S(@<øL ۭE\KB7O τw h]_m8$"ҋ?؊HC'=K(UٷTP3aИtdjC9ߣsܸqD~~W) 2TA2Sh[k;[?έ;؎Sy +9tpډU||A}4P"JwWэVzYp}فuh0.%I 9!8+fU‘!tV",P Q$DD!H7&}*Z}-Ė)0.hKwzi Rm= ufi0~Fꌹ{IL }AR޳G DC!Y@  Um'ȼ17ϓV| J.+RkyG4[]B~?`,6nD,[qx L,6{ u""6HAtb"*a~]&p;ޡoD|2B՗d;@S{QD85CI`!c ̐_6[f42%k-AHT7_lm+Tȴjy7`| /Xӝa|}|-_oO [ԉuu? BY$@l5c*\kME|eelCD& NC +1_֏/I [G b/#?V$*'MU^o A`4M) 8cA/] Gu;RF=Li[I 7+&iOzσNp~  ??HΓU .3k#?_ޭP}Zy!TƃcI' Ǟ)>o u\Jl+W=jP#NHl;͢M%"pʾpw"E{ ?dŇ^,m7B_zDEƌoCxN6@.=Ƌ sӂR4 l@"aB0յBS߶㷟AwֵNEY<;VڢD _ S5  OB^XM`| X{s$2v dvH-!*|-җw&#VLx;߽cLOs59rci ܁@j.D&'e>ذMΐ9ݻG# 4b{KK9+_3~ݳX0|(jdQeomR cqu@5p~ ʨF V$$%P& 2zΖ>F,3K!ܐ>F\ږe_6\C]jlzT/+.I9ٜLZc ( yQx$ S*kߥk׷a!h)bd#Hmk]6|ùGA/9@uVJ-D{^ns qH-M"[ƥ687cx@u7.LHGqÎY*귊 K5shLTJdIOK'V!nbw~lC0B!%8#ry2DZmUm Nyb;U a6lIe?t&Hry#AN8#q.A_~7򳭑01FOj>PC_GI`c-Ho u%!@E|SnD!hB~7!|oO_L`u. ǖn\p~Z98XkZGIm2b>l٧܈?~UK,wfi&ts$g0a.4qxi7y [큳89<Blnh{+J@ MvX{O8sLyG 7§/3Wl[{c=8)V~Jw㽬BI!]JBd33_ôS.ϯgiН^m<ş97uWnG촸2VXU8{E9-ߚuu  r~2<||3]8V6Y_tkFU9m+ Fm3CEA c"H@!@7;[ v`6 Qz>趶-XtT x'+~^`+ה"cݢxx7bЖ:v-< Wm?Gߔ^zǜ B ;HF&<b'V^3>Pނxr$a+ԯoP@0䣟$٤W %B_(jP7 h_Po*=F͸P8 Co%m:B7}B6C ?\7B{Nom_ol315jѨt+?iBP u<6}BXt7F(B~ ֳγdSt>#e6y=oywNqϊb  IJ9Y< oHbrxy&4E4s)Ծ,ql_HH%S>?],BWGQ~|WؒXG [^)nL"\`D~XqV _K;J 񁵞qNRn>sq$v+FF )-=OFVpIeyOSU}}56ߡbvo#vp O4 F钰pT_=ٍCuf(k `X_{t{nRDk`›{)1+m%-p⾉]įӔ]i{{? >>1HxVFލP* ;rikX nz]ۯܟQQ6t᝺~7z#j}:M& ;Y{ӖQň7~sZ_{!8l7[9<G$ '_7 p 5 wSjD3ƙf-> H$jdoEptB &8x$n; 0k9A *bCr0\ C Ңs%0AvUͻ$vA2Mpd蒕vNR9`BϨ2A2Fqgd sɪٽs;Ũ>?dvqX109v5sې~sSVRV& f 1Wlu|!Z,/%Yr iz;PKđq_2嬔04n/=Y'>/U7 )?B36{vO5jiP-=YE9P'oFw'2!>FՂd{{_J7fwlgiLT:ZbK ' $\)5jf~|#= TlÌ:g /"[p1J9f1ˈm/i[/ mףJOUϟf$Z$#L{;^OٱJSwf> s&;r.wBaB;_\X99 \1'}z/T5}r+!gP>'%MfzV`nِE/O>רWiq9ހꙿuBq2େ;pxBZ_ Fi=PFzBA|8k|ƬL;X[ٹ|=3ٌSQ8Dܝ\ܟ}=i$;n=i74iz5ںgW%~8q#Y](e8ڃNrۜ+ wBo5~z?ob"ƟNj4,o8j,/!%~F|}āD-SQ1+ u?`)eeиػ BMCqaHl7]ۓ*H1pdsK +p%:ͼY_Ж:[2@֥J@hq:`޾gyчZ]c~P: LqfmuĘ..lU ( S_:.q*k@. l7f 2e9K5n ؓjL P>aC}dgˠ}2<>֖J;rാmCeIDO4pP?RtPrQm< AAјEc&A ^;ۺ.]rv :*. U݄Y֢$*W%qguN+oٕ[,8(òcQQqSz:Vsףrr<Ї[:2#hcdпQ=Bd9)ΙFsb7'C+._+Bb  Wi=<44 f*4CIkx QF_/P/e6yMQpja<~1K~UEW_c xtkW?Ut;K|l[I >hv^ y x3J #~jc2|x*1̯Ds. Nq\rTGEKܚ33Bg±l4z+n<mcEGDiC+Ulp89BɜFP_eѻ a=K??[ko_#~lR;a> };f=pk 1pi$_2|Kޫ~(04Wr>{0~rNT0SI^gQF j))oԶx%E:aŻbLIea޻}N ^>~zƗr[+  e^Хxs# WLOZ]9g!y91I!/@>yʐ?C+M9kɏU+?G>7^g HzflY˲Wi5y5N;}Ҝ3Sŵq Կ|.:`SgXQ(GqgP4<N TmgXd } uǵ"(QA|(iy* 0_"8(U Soy(}OZX 'C4O;"囁o"|7/@g<JP~V[QEjr2hi s<4G~`G;ʊ#aH0p2]+]R;a pϲ_G ȿTmrf|=tK5O:CceCdu ~w&8Ƀe7u ̟8-IHZ&=oy?_㮔NHSZԐN3饳eTz#rURT\wJFda:R83N.J\RL( n0_{:U^v#M>> /'qAüYNLzmVNV8#7xoUƯjICJ>5+I('p;Sryؗ2t k T.jt)|/J_,p[4 )h, ۄuxߝ8 sB.m*Ȳ" *j tYcr Mya%u\i>wX^wӸE~>se \gyW@ga=)gE@FoO4~1rۏ?o:ʝc( rh>J Z(/Fgas1y|j?h7n ⴚQ5vk4_:1`vs 䘍!ƆKGUfhgPϋ£,@VEsMy& ܗ!KqEud]m gĩl8UY!u]nZU >SaGh#,wYURXXWvc%5X@ 伞o1p͊[m!0LW#\:uZAg;gG>^T@ǎAW%{\4lPCԏ:&9ăXK;C[L!j'diQYZ~ f8K4τ]Q30x/bȅc{v NhR4qFp@Q5ZQxm׌%3_3&\:4 [p=|q yNpEE47=x׶h; M,`lltq¶W7e[6 m ho,VYN*/u\D0RZRPLiscޘFdFdʼ,̘3P}EKg>ϘN4s0~ =}k2~~mi\hq:FhBt̪ԀVe%iǸyw0[nз,(e慽 Ht~K.Qg:XYD4)@)du?`XnԶo;E5(X|[|/<&}Q2VmɯבB5>G'`Xkky!*9|{w(F?Ge<*y*7mͶt'z][ cEVh,ǔa %CۅIDAT~EVCNA[76952cWh2쨤Ln?~Ke7lW&'l2zˈ-'D)4 -@/EVm.%}_5u\Ƒ<01ܕrp ^:.5`UgK؃5< gor&c.UU @g $FnlƜ={hj4kP ,,]_ы<< ]Zqm):h8G/cڝf{W!RG5 {[4}H:F+-p+q0/)lGN3~٬jCςm0-.{8^=oƝW2W͕byU-O;s_e1 KCnw _F< ҩ1ů:V_=AfWe,-h' 5J];b<[=oqxHl,S**()NӀwyOJh+ۓi_ŧCSL, 6/20NHqP?MzKԷ6jEKfN=J9I? >taEb7Je[ _eluq+8 ނ ,_uƭCEz<v瓴{vO`O0<2I4+Sg08(0mo1[+ާj&t  a,Qe&:8R4t5E݄pYgIYwCIf:gL֯P `{[E1[8ӱ;cg(nS?q`坆 -BoԼo.=J:rrkp<6 CǐW8 ˷yy}47fh =O g evJ./g⣻̸sr`h :QssyK=kOE~ޒ͎G]H[n,}lOv27&#l{~Q'evgecs#8)<8myk&p/s=q+g3D?{? 8q,q(ZuHTA>O.N2GtC6Nj']x>yNx =ZOn8i+yoPxmWB^IeBecz6P٨nhuXf L%Ns Ş~] Yi{?XM:~{];>mp5Zʏgc>+1#O{EQD2~_/. f~]s{`x>]~Oз3?j_k*}h}O]wC&y0Kgrҭ׵Gn4+r/chLc{68qwLP7s2{G (t~K9#m,K^NS+ݔ'q!1e}%K" O7w䲣F|V?\}n1/ f V7z//_9>W}ш}s+S'%iW k w\}ԣKJ<3-{⤛t! eOW+kl;f_`%* &33"Cn]!OE:2@Xh>V<`|<tsmqłsqu!{U2 ȋO8\pX PIzpI>xQOxYéLúM_+6|q0K $[a6Ћ$nnRjVFàɫ-vvaNׅ}(|_< r/JỂp[P}7@,~DT GH-j } rկ06%r? Q>eXcUn+3eqR[O/CxMrttttˈ7qk8K&VN; Lz5X {cENtlGqTRX.ůcq4j%t/3 uVW[-xx'[>za̾/qN0r9kJ4~ {Bڸ 8_/$G̎"x.G_ztף7 ED ֛05[tʹq+n/CeN=ڗ|Nc&I&Xf)=h;Sm +1VґJAV:H /6 S V'>qvF.oIg]4]|h4Vyt~Az_> G,p1z_Rl08g?LNul=H1#AMsFIÄ'yg4|ȟ%#}x긴T|87~ÜmVc'؃e'6l1솮%6-8iʟ%3Y Ջ9Z%F'_ॎ~W텛r@C?䰒S.`THWQSPg{ؚ۸UG]x<^PV޳<{V-M?yӣ@S2G~7&Qx6jhg'~V0+L{6~гsV!f<<ݫ PG3,@^N9 o*ֽz Ws-Ю,ןud߫Mr꘏_j6` Ď>+g S$ dÌQ/ڃ>}0ixm0YT&M#V=K H#M[K֡W~2Btۀj!;qQa[ ""]wȳxOS {/Lhpŗ<7~}ci!|K{{>o8Hz7ho鋲q#;VO[QO]4m0v/Imش^F 2,gچl$, .8Ur)qM'_ˤSn0 Fwu1}??ROfpZYdFweݩ,MNy O ZuQXĘ|$m8:pggܒzIKMq\q$hY擉̈3XnγNXc%HzFo'- zgsL:̸@9ߟhy.O ;'x9vᥥQc_t IzY׼7qaޝy^gwʮ[}ըͻq۲L?%x*!]m$@F8 +۵#&~i '  2zppMieUE׊I(^\@fe۪_fXu{fL=n&օ:lT0)AbqY5*  sJf{*{Exu$m4 Cp*J~*MW<}o †Z?>Q>bÉn\-ɰIKz43?ᒾ{O:Zf,YĦw:Ip;z'F+'eEpg.1 K$ &\$0O_Ѧ:L^b>?ˏTr߯lI[?é7Si($FCc>Qg];G|4^3*UL4&Xqk{,X;ek [Zw%>MI"IKK.{Jy+P6~Nb(r5dc3=w%ۤg@여{+-|ưCAㄟd^3擟ekGu-Z"}Xg4q¥,&LO4a+ R[wҧD Y }W]p7asХx)PS x/(oNhxDr_,|h$ů;썣SIzm=SreDJ8k'?[0t%&T09^3jSn |G.qɲ^jA>I|wX@axkFaUnƀ2ᲞtwaE‚(]NᅕY,!w.˩O^pIsi;ͺf.Cݳ' VZbD+?Zgbvjϩ́\yKgㄱ}֭:#t<,o:iç‰vr`\-ڑJNug~xZn|J|>[U1@F3}QR{}$ P4,7Fi1o8+6BKs_MbiP=e@Pn|_`7@3tIoo&^µ._iȶ^V"Mщ9_I3]wx7yYOq^_Rn2'2dy.-!#+8*^;HܲIVQ//`>RZ7J`4EI8HKK#c 8? ۿ=Y 'Ӏ #=2mXQ2plIENDB`NiagaraSystemNS_DansingSmokeRhNS_DansingSmokeNiagaraSystembExposeToLibraryFalsebIsTemplateAssetFalseTemplateAssetDescriptionkx>G[][]- TUp8r?*M8S!!64ADF72F4BBCE0644F7AF999C9F059308rQUVcD( 8r1ThTGpV6Շ8r8BEK{8rkEQm8r_TëL('og8ryiDJgt8r(FtEc>(8r%1Hl8rTpFڱ(8rw{.* A?8rs8A;-]vp,Eўj t8A;-]E!4 `jGq- 4@:8rze_J'sӓQ>@8rs8A;-];4h[$;(~)%t8A;-]Q>o=a 6G-⢋q-5)A:8r9SDKT,y<Q>C8rs8A;-]坶"0x4ݺʗ䧋t8A;-]p^w@¾lq-( 6(M'*ILB:8rBK\8VM#k'wQ>E8rs8A;-]|PVe|blFIdt8A;-]Kq(j)Kԋq-D7 ,!"#$+2O&38N%C:8rW0~nIV#QQ>B8rs8A;-]坶"0x4ݺʗ䧋t8A;-]p^w@¾lq-38kwukwukwukwukwukwukwukwukwukwukwukwukwu>kwukwukwukwukwu kwukwu-kwukwukwukwukwu.kwukwukwu"kwukwu1kwu!kwukwu0kwukwukwukwukwukwukwukwukwukwukwu)kwukwukwu7kwukwukwu kwukwukwu2kwu/kwukwukwukwu?kwukwukwukwukwufkwumkwuikwukkwukwukwujkwukwugkwuenkwurkwu}kwukwukwukwukwukwukwukwupkwu#kwu&kwu(kwukwukwukwukwukwukwukwukwukwukwukwukwukwukwu kwuh kwui$kwuj kwukkwulkwum%kwunkwuo!kwup#kwuq"kwus$kwutkwuukwuvkwuwkwuxkwuykwuz%kwukwukwukwukwukwu kwukwukwukwu?kwukwukwu kwukwukwukwukwukwu'kwukwukwukwukwukwulkwu,kwukwukwukwu*kwukwukwukwukwu+kwukwukwuokwunkwuhkwu{kwu|kwu~kwukwukwukwu-@4A5B6C7+'M( )*LI,!"#$&O%N238p8rsIAg8r2$ǥ.A8rs8A;-]m=kӽ ]vʋt8A;-]Eq,\Co*|q-0GK?8kwuckwud-01?KGHp8r(F%3g8r3>F T 8r3>F T c-!8c8K:8r"L?ZSQ>A8rs8A;-]荮pvoL5Y .t8A;-]55bnN R֛H$ssq-4 9J.>Q<=RS-PDD8kwu kwu kwu  kwukwu kwukwu -4 D9JP.><Q=-RSp8rPx3Mދg8rPwBزT߬8rPwBزT߬c-8c8K:8ry-1F2U}9Q>F8rs8A;-]0(+3gBdwh;]'t8A;-]9 дvw Zq-:E:8rertFJr&n)Q>G8rs8A;-] y nt8A;-]5kTZ"Otz Qͦb)q-;/F58kwukwukwuekwupkwu{kwukwukwukwukwukwukwukwu(kwu3kwu>mkwuIkwuTkwu_>kwuc?kwudkwufkwugnkwuhkwuikwujkwukkwulkwumkwunkwuokwuqkwurpkwuskwutkwuukwuvkwuw kwuxkwuy-kwuzkwu|kwu}kwu~kwu.kwukwukwu"kwukwu1kwu!kwukwu0kwukwukwukwu/kwukwukwu#kwu&kwu(kwukwukwukwukwukwukwukwukwukwukwukwukwukwukwukwu kwu$kwu kwukwukwu%kwukwu!kwu#kwu"kwu$kwukwukwukwukwukwukwukwukwukwukwukwuikwukwukkwukwukwu)kwukwukwukwukwujkwukwu kwu kwu!kwu"kwu#kwu$2kwu%;kwu+=kwu,Akwu-@kwu.Bkwu/okwu0<kwu1kwu2%kwu4kwu5kwu6kwu7kwu8kwu9 kwu:kwu;kwu<kwu?=kwu?kwu@kwuA kwuBkwuCkwuDkwuEkwuFkwuG'kwuHkwuJkwuKkwuLkwuMkwuNlkwuO,kwuPkwuQkwuRkwuS*kwuUkwuVkwuWkwuXkwuY+kwuZkwu[kwu\kwu)kwu*hkwu&kwu'kwu]kwu^kwu`kwuakwub- E:F;/p8rWPtl AN^50-808Lxkwu/-7jY^8r2$ǥ.?g8r0C EX"Ƭ(p8r1N{F9JJzUEFN\@zUEFN\@s:S*ĞB?\}QMEʺ&QMEʺ&sES;3BaC~8rTLE'_Glͅ$ASEmpty Q>@g8rJ=rtAKHTwlp8r1E $K--kSSiJtSSiJts/ڷ!Hctذ.ͳD}.ͳD}sF&}nB۝j^8rHE'1;i7 SpawnRateg8rqmA aHWp8r]wTFBYߋʓ>-OOLjTʓ>-OOLjTLJs);ΕGbT8o w TM*ATo w TM*ATsfalsew$C~Nvێw$C~NvێsAHPKt~j^8rm*PO%Ҩ-i7ParticleStateg8r}D3@F8rx%HzD'>!ٳy 7!D J( 7!D J(s7C7yHLw-#Z (IeAmo^ (IeAmo^strue lꭇWB5$0 lꭇWB5$0s,\$I+>RMj^8rhe)w|FBȃ ۲i7CurlNoiseForceg8rG]CϹI 60F']NO8r35A h΋ !o3C-<@!o3C-<@s,! _mEv<)!!KO-)Lr!!KO-)Lrj!עBռ> 1!עBռ> 1j!p.' @o_3 i7PointAttractionForceg8r3O+SNyjF8rDYHJxsAm"Uk{JsГo"Uk{JsГos!aH*C2K\ /}&"[9ox@En"[9ox@Ens#cAGV0<j^8rzq B)kIsi7NewNiagaraScriptScriptg8r WJ8J:`PF8rI7ioRO*(?&)V0A-pJx&)V0A-pJxsOç*dGvނ&Ő-GDo/n&Ő-GDo/nsN:liDŃEj^8rM@iC۫Ni7InitializeParticleg8rEFEEoK6Y 8r#"G_!'yA)MBq'yA)MBqsM \O!v'=>A؝f>z'=>A؝f>zs*m"h~MiFj^8r!SVA(7M i7ParticleOwnerPositiong8rQeODy:n)F[k>Dy:nPNewEnumerator0)2?ͧ$)KY)2?ͧ$)KYPNewEnumerator0) @dL"d) @dL"dsfalse)o|ʰ-[E3Q& )o|ʰ-[E3Q& sfalse);ΕGbT8);ΕGbT8sʓ>-OOLjTj^8r`?A w ;i7TorusLocationg8rh5AaÚ iJP 8rt]'D^6,*m"h~MiF*m"h~MiFs'=>A؝f>z*Aޕ*47*Aޕ*47*sfalse*qެ-RM,\$I+>RMs lꭇWB5$0,w`L?FKbNǃ5,w`L?FKbNǃ5j,b}La:)p,b}La:)pj,y$GSmA,y$GSmAj,p'glL4fM,p'glL4fMsfalse,7e3JHaÄ8r>c%O1,-|{IMeJ-|{IMeJrjS=E?Lˀ(<-H 3N̐!-H 3N̐!s.ZԓF9+-e~$MNgn-e~$MNgnsPL $@H@*8Lx5kwue g8r瀂);Iau>`0@8rlD"В2Z LUVB2Z LUVBjO%t~AHU=8Lxkwueg8r[!6FCm$UP8rk!mHjVI>3H8JqGy3H8JqGyjN.+AF JX8Mxkwug8r!;Lxhp8rXFu))|4qAU }4qAU }s@I0%Jp8Mxkwug8r?:&LOP8r2\GN۱ 59KH 959KH 9s){ɾ&+Ab"8Lxkwug8r  UC~ZJM8ы:S*ĞB?\}:S*ĞB?\}szUEFN\@8Mxkwug8rh]Kp*DwP8rJ9LBA 17e;/tOOER(;/tOOER(s/t\LuR5g8rjuE唕f 8r6F|`<{u-NS&Zc<{u-NS&Zc#As1.01.0>^in_C點<[F1IJڠ`F<[F1IJڠ`F9Bs1.01.0Q1<.&;K[OI\/< Ů'\O< Ů'\OResults=[F1IJڠ`F<]-mpF0<]-mpF0%5g8rD5I>p8rI7B R={u-NS&Zc={u-NS&Zc#As1.01.0.ZԓF9+=[F1IJڠ`F=[F1IJڠ`F9Bs1.01.0< Ů'\O= Ů'\O= Ů'\OResultsP$FcLEbfA=]-mpF0=]-mpF0%5g8rj+B4s&Ȅ8r)'` DH.>u>; cKЀܲ >; cKЀܲ #As1.01.0JGLM=>^in_C點>^in_C點Results<{u-NS&Zc-88Lxkwu Q>Ag8r@E|8rdnz@oM9fjD\5΋?qZf F!n?qZf F!nsKu2B Jgvw-88Lxkwu Q>?g8rf>XbI1Zz8rЮ !CGs@I0%Jp@I0%Jps4qAU }-88Lxkwu Q>@g8rP첒Ciw=8rи;7 J)TW&AHPKt~AHPKt~̢sw$C~Nvێ-88Mxkwu Q>Cg8r9LGᢖ 4i 8rHclepD5qrUmB!I(PB!I(PsտHsH-88Lxkwu Q>Eg8rkNTiF8r'X6dO, Cy}7B.ތF}Cy}7B.ތF}s%`+yIN;-88Mxkwu Q>Ag8rԬ|kVB,Җ@`R8rʮ^Gcr=/`DS V~lArExDS V~lArExsPvX+JG˭~-88Lxkwu Q>Fg8rٴ~AB ^8r?B->NES;3BaC~ES;3BaC~sQMEʺ&-88Lxkwu Q>Gg8rR}$PO?ޤ8r*(Ay?H@*Hm>H@*s19OAo+Hڛ(sB5WHڛ(sB5W%(88:}OebR|oDw]MUjg8r$AMj5P~8r2NOBJ"%6^I%$DF!)]I%$DF!)]s*KpqC_m]IIMRlؗIIMRlؗsL,(J7޿r:}OeI ^@HM]8[dI ^@HM]8[d%Iˏce1CeU:pIˏce1CeU:pҋ\Default value for Particles.Position if no other module has set it previously in the stack.s0.000,0.000,0.000bR|oDw]MUj88dFɓv_a_ hvF81SCcTv=Oy/ ۯ78AL#Oo MPLܗ{>30,M!x2*֙L3n(mifotAE;㉇I}3 }cg8r_EY|Cv$6ܻل@8ru~ *Dj*3~ J?DC3By  HVJy$>3By  HVcDefault value for Module.New Audio Spectrum if no other module has set it previously in the stack.j_ hvF81JGLM=JGLM=s>; cKЀܲ  ۯ78AL#OJzwGMrJzwGMrdDefault value for Module.NormalaizedPosition if no other module has set it previously in the stack.s 0.000000Tv=Oy/J-PGU{DgJ-PGU{Dg!9373EC004ED3200C31A775A89110CF78Module.RadiussQ*OB hV >30,M!x2J9aAMJDp J9aAMJDp ]Default value for Particles.Direction if no other module has set it previously in the stack.s0.000,0.000,0.000o MPLܗ{Jý`MJJý`MJ!0D8CB9E649A8E1D8960013A5BB451347 Module.ColorjRC?Dgv<fotAE;J/rO^J/rO^WDefault value for Module.Radius if no other module has set it previously in the stack.s 0.000000*֙L3n(miJMF$9W{JMF$9W{%JaRM”jWs2JaRM”jWs2VDefault value for Module.Color if no other module has set it previously in the stack.j㉇I}3 }cg8r MID q<8rɩr@QqaKi~Fe ]Ki~Fe ]s0WM_V4,zB|JKu2B JgvwKu2B Jgvws?qZf F!ngFNWBP,wKEKE`AS5KE`AS5sG|5@7E6#^rPyBJ-J^ !KuZLJi/KuZLJi/%\*LAߏsQg8r- ,K.)W 8rf:IqALoCNR0y[LoCNR0y[s*KpqC_m]RnBxKY>!!L,(J7޿rL,(J7޿rsIIMRlؗئS@p Lo-|N{4OLo-|N{4Os^5L i,V|[;IT:LIG~WCqf8.LIG~WCqf8.%}PIDlg8rI:'0 8raHvC<=xMj+McvMj+Mcvs6.hH=bKw5KkMVѼD]F/ MVѼD]F/ !410DF1C24DBAD57EE4B2C99C05C900CA$InitializeParticle.Write SpriteSizestrue"r9C+ϾMDMJcR4MDMJcR4!9B92FCA541F2CF41DBE346BF63F0C1A3InitializeParticle.Write ColorstrueIB+KOC~MA1')FwfZMA1')FwfZ!C3B110E7431866D7EB6CF88CCEFC13FB"InitializeParticle.Write PositionsfalseIb섍EkhtMWnHrv@dE2MWnHrv@dE2!D9CA4424477BB10DD0B899BA8A45F563InitializeParticle.Positions(pvb vF uCLiD@RC)"M \O!vM \O!vs'yA)MBq8+$@2M@WdKL=M@WdKL=%=FJF4)g8r&UV@vƂnEF8r5ҕL@N:liDŃEN:liDŃEs&Ő-GDo/nJ!6G9ex N.+AF JXN.+AF JXnj3H8JqGyN7ۃ_GFCU,N7ۃ_GFCU,oj8 C!*GRC?Dgv<RC?Dgv<jJý`MJRp@kG/ Rp@kG/ jSQb9=B>7W"g8rvMONJ 2 8rmtC}&EvSQb9=B>7W"SQb9=B>7W"ĉjRp@kG/ S=E?Lˀ(?Q898{`7ZVNiagaraScript /Niagara/DefaultAssets/DefaultEmitter.DefaultEmitter:EmitterSpawnScript_8~u8r M-RعeQ+ Q>?&-&7Emitter.LocalspaceCPUSim;8A;-]xSu_{i֊vl@;:E-88Q;-]āMnM[_+rb7-]}cF&b, P-]W47-$ 4ި ?-]˷ZȠjRڜv-]*%LR?L1%-]wj.C=Wc~E*AQ>@Q898'`-I88|kwukwukwukwu kwukwukwu- ]?@E?PCG7[WNiagaraScript /Niagara/DefaultAssets/DefaultEmitter.DefaultEmitter:EmitterUpdateScript_8~u8r M-RعeQ+ Q>@&-&7Emitter.LocalspaceCPUSim;8A;-]āMnM[_+rb7-88Q;-]xSu_{i֊vl@;:E-]}cF&b, P-]W47-$ 4ި ?-]˷ZȠjRڜv-]*%LR?L1%-]wj.C=Wc~E*AQ>BQ898<`-u808@|wkwuxkwuykwuzkwu {kwu|kwu}kwu ~kwu$kwu(kwu,kwu0kwu<kwu@kwuDkwuHkwuXkwu\kwu`kwulkwupkwuxkwu|kwukwukwukwukwukwukwukwukwukwukwukwukwukwukwukwukwukwukwukwukwukwukwukwukwukwu- ]o;o:@F? A?????@????@@PG?@<FzD@B????? A?BL?@F7XTNiagaraScript /Niagara/DefaultAssets/DefaultEmitter.DefaultEmitter:GPUComputeScript_b8~u8rO}`,@| 'iß Q>B&-7InterpolatedSpawnEmitter.LocalspacefNiagaraEmitter /Game/NiagaraAudioVisualization/Effects/NS_DansingSmoke.NS_DansingSmoke:DansingSmoke_0GPUComputeSimEL;8A;-]p^w@¾l-8F8;-]p^w@¾l-]4ޕ(f:~-]ie(٩85&-]]{Fis{U-]@,AS~VnW-]4ޕ(f:~-]/ !Y!4׋-]E{UѳH`u-]@,AS~VnW-]E{UѳH`u-]@,AS~VnW-]E{UѳH`u-]@,AS~VnW-]ovh j0kT-]t E#(֢PNЕ-]ȑ#7&kBz-]ȑ#7&kBz-]r|G8^)J2(݋-]/2eb:^|롵 =.-]r|G8^)J2(݋-]r|G8^)J2(݋-]}߉i|=QS]-]k:PhjRhfu!_3z-] [ ɡa|jV-] [ ɡa|jV-] [ ɡa|jV-]4ޕ(f:~-]v4ŵ񊑍-=R-]؉x6d(Z1qSj)--]v4ŵ񊑍-=R-]؉x6d(Z1qSj)--]v4ŵ񊑍-=R-]؉x6d(Z1qSj)--]Kq(j)Kԋ-]ciҏNnZgв8Dvҋ-] s68CV2L>؋-]4ޕ(f:~-]r|G8^)J2(݋-]r|G8^)J2(݋-]r|G8^)J2(݋-].'HDPR(E-] PlAGtnGq|R-] s68CV2L>؋-]4ޕ(f:~-]r|G8^)J2(݋-]r|G8^)J2(݋-]r|G8^)J2(݋-].'HDPR(E-] PlAGtnGq|R-].$7LjXaU^-]4ޕ(f:~-]̩"Ew0_%Zps-]؉x6d(Z1qSj)--]N>) &8|\[^P- *-]O"gZ5V.h[΋-]4ޕ(f:~-]H<|H+-]r|G8^)J2(݋-]UJ\핛GKʄn-]4ޕ(f:~-]r|G8^)J2(݋-]r|G8^)J2(݋-]=?NB&-7InterpolatedSpawnEmitter.LocalspacefNiagaraEmitter /Game/NiagaraAudioVisualization/Effects/NS_DansingSmoke.NS_DansingSmoke:DansingSmoke_0GPUComputeSimEL;8A;-]p^w@¾l-8F8;-]p^w@¾l-]4ޕ(f:~-]ie(٩85&-]]{Fis{U-]@,AS~VnW-]4ޕ(f:~-]/ !Y!4׋-]E{UѳH`u-]@,AS~VnW-]E{UѳH`u-]@,AS~VnW-]E{UѳH`u-]@,AS~VnW-]ovh j0kT-]t E#(֢PNЕ-]ȑ#7&kBz-]ȑ#7&kBz-]r|G8^)J2(݋-]/2eb:^|롵 =.-]r|G8^)J2(݋-]r|G8^)J2(݋-]}߉i|=QS]-]k:PhjRhfu!_3z-] [ ɡa|jV-] [ ɡa|jV-] [ ɡa|jV-]4ޕ(f:~-]v4ŵ񊑍-=R-]؉x6d(Z1qSj)--]v4ŵ񊑍-=R-]؉x6d(Z1qSj)--]v4ŵ񊑍-=R-]؉x6d(Z1qSj)--]Kq(j)Kԋ-]ciҏNnZgв8Dvҋ-] s68CV2L>؋-]4ޕ(f:~-]r|G8^)J2(݋-]r|G8^)J2(݋-]r|G8^)J2(݋-].'HDPR(E-] PlAGtnGq|R-] s68CV2L>؋-]4ޕ(f:~-]r|G8^)J2(݋-]r|G8^)J2(݋-]r|G8^)J2(݋-].'HDPR(E-] PlAGtnGq|R-].$7LjXaU^-]4ޕ(f:~-]̩"Ew0_%Zps-]؉x6d(Z1qSj)--]N>) &8|\[^P- *-]O"gZ5V.h[΋-]4ޕ(f:~-]H<|H+-]r|G8^)J2(݋-]UJ\핛GKʄn-]4ޕ(f:~-]r|G8^)J2(݋-]r|G8^)J2(݋-]=?N Context.MapUpdate.Constants.Emitter.PointAttractionForce.AttractionRadius); float Constant132 = 0; float Result83 = pow(Context.MapUpdate.Local.PointAttractionForce.PointOriginVecLength,Context.MapUpdate.Constants.Emitter.PointAttractionForce.FalloffExponent); float Falloff_IfResult; if(Context.MapUpdate.PointAttractionForce.UseFalloff) { Falloff_IfResult = Result83; } else { Falloff_IfResult = Context.MapUpdate.Local.PointAttractionForce.PointOriginVecLength; } float Result84 = Context.MapUpdate.Constants.Emitter.PointAttractionForce.AttractionStrength * Falloff_IfResult; float float_IfResult; if(Result82) { float_IfResult = Constant132; } else { float_IfResult = Result84; } float3 Result85 = Result81 * float_IfResult; float3 Result86 = Context.MapUpdate.Transient.PhysicsForce + Result85; Context.MapUpdate.Transient.PhysicsForce = Result86; bool Result87 = NiagaraAll(Context.MapUpdate.Local.PointAttractionForce.PointOriginVecLength < Context.MapUpdate.Constants.Emitter.PointAttractionForce.KillRadius); bool Result88 = !Result87; bool Constant133 = true; bool RadiusCheck_IfResult; if(Context.MapUpdate.PointAttractionForce.KillWithinRadius) { RadiusCheck_IfResult = Result88; } else { RadiusCheck_IfResult = Constant133; } bool Result89 = Context.MapUpdate.DataInstance.Alive && RadiusCheck_IfResult; Context.MapUpdate.DataInstance.Alive = Result89; } void Drag_Emitter_Func_(inout FSimulationContext Context) { float Result90 = Context.MapUpdate.Constants.Emitter.Drag.Drag + Context.MapUpdate.Transient.PhysicsDrag; Context.MapUpdate.Transient.PhysicsDrag = Result90; Context.MapUpdate.Transient.PhysicsRotationalDrag = Context.MapUpdate.Transient.PhysicsRotationalDrag; } void VortexForce_SimulationPosition_Emitter_Func_(out float3 Out_OutPosition, inout FSimulationContext Context) { bool Constant136 = true; float3 Constant137 = float3(0,0,0); float3 Vector_IfResult5; if(Constant136) { Vector_IfResult5 = Constant137; } else { Vector_IfResult5 = Context.MapUpdate.Engine.Owner.Position; } Out_OutPosition = Vector_IfResult5; } void DirectionAndLengthSafe_Func_(float3 In_V, float3 In_Fallback, float In_Threshold, float In_FallbackLength, out float3 Out_Direction, out float Out_Length, out bool Out_BelowThreshold, inout FSimulationContext Context) { float Result92 = length(In_V); bool Result93 = NiagaraAll(Result92 < In_Threshold); float Result94 = length(In_Fallback); float3 Vector_IfResult6; float float_IfResult1; if(Result93) { Vector_IfResult6 = In_Fallback; float_IfResult1 = In_FallbackLength; } else { Vector_IfResult6 = In_V; float_IfResult1 = Result92; } float3 Result95 = Vector_IfResult6 / float_IfResult1; float3 Vector_IfResult7; float float_IfResult2; if(Result93) { Vector_IfResult7 = In_Fallback; float_IfResult2 = Result94; } else { Vector_IfResult7 = Result95; float_IfResult2 = float_IfResult1; } Out_Direction = Vector_IfResult7; Out_Length = float_IfResult2; Out_BelowThreshold = Result93; } void NormalizeDistanceRange_Func_(float3 In_StartPosition, float3 In_EndPosition, float In_Distance, float3 In_FallbackVector, out float Out_NormalizedRange, out float Out_InverseNormalizedRange, out float3 Out_NormalizedVectorBetweenPositions, out bool Out_WithinRange, inout FSimulationContext Context) { float3 Result91 = In_StartPosition - In_EndPosition; float Constant144 = 1e-05; float Constant145 = 1; float3 DirectionAndLengthSafe_Func_Output_Direction; float DirectionAndLengthSafe_Func_Output_Length; bool DirectionAndLengthSafe_Func_Output_BelowThreshold; DirectionAndLengthSafe_Func_(Result91, In_FallbackVector, Constant144, Constant145, DirectionAndLengthSafe_Func_Output_Direction, DirectionAndLengthSafe_Func_Output_Length, DirectionAndLengthSafe_Func_Output_BelowThreshold, Context); float Constant146 = 0; float float_IfResult3; if(DirectionAndLengthSafe_Func_Output_BelowThreshold) { float_IfResult3 = Constant146; } else { float_IfResult3 = DirectionAndLengthSafe_Func_Output_Length; } float Result96 = min(float_IfResult3, In_Distance); float Constant147 = 0.0001; float Result97 = max(In_Distance, Constant147); float Result98 = Result96 / Result97; float Result99 = 1 - Result98; bool Result100 = NiagaraAll(float_IfResult3 <= In_Distance); Out_NormalizedRange = Result98; Out_InverseNormalizedRange = Result99; Out_NormalizedVectorBetweenPositions = DirectionAndLengthSafe_Func_Output_Direction; Out_WithinRange = Result100; } void VortexForce_Emitter_Func_(inout FSimulationContext Context) { Context.MapUpdate.Local.VortexForce.VortexOrigin = Context.MapUpdate.VortexForce.VortexOrigin; Context.MapUpdate.Local.VortexForce.ParticlesPosition = Context.MapUpdate.Particles.Position; float3 Constant143 = float3(0,0,1); float NormalizeDistanceRange_Func_Output_NormalizedRange; float NormalizeDistanceRange_Func_Output_InverseNormalizedRange; float3 NormalizeDistanceRange_Func_Output_NormalizedVectorBetweenPositions; bool NormalizeDistanceRange_Func_Output_WithinRange; NormalizeDistanceRange_Func_(Context.MapUpdate.Local.VortexForce.VortexOrigin, Context.MapUpdate.Local.VortexForce.ParticlesPosition, Context.MapUpdate.Constants.Emitter.VortexForce.InfluenceFalloffRadius, Constant143, NormalizeDistanceRange_Func_Output_NormalizedRange, NormalizeDistanceRange_Func_Output_InverseNormalizedRange, NormalizeDistanceRange_Func_Output_NormalizedVectorBetweenPositions, NormalizeDistanceRange_Func_Output_WithinRange, Context); float3 Result101 = cross(NormalizeDistanceRange_Func_Output_NormalizedVectorBetweenPositions,Context.MapUpdate.Constants.Emitter.VortexForce.VortexAxis); Context.MapUpdate.Local.VortexForce.NormalizedRange = NormalizeDistanceRange_Func_Output_NormalizedRange; Context.MapUpdate.Local.VortexForce.InverseNormalizedRange = NormalizeDistanceRange_Func_Output_InverseNormalizedRange; Context.MapUpdate.Local.VortexForce.OriginVector = NormalizeDistanceRange_Func_Output_NormalizedVectorBetweenPositions; Context.MapUpdate.Local.VortexForce.VortexVector = Result101; Context.MapUpdate.Local.VortexForce.ForceAmount = Context.MapUpdate.Constants.Emitter.VortexForce.VortexForceAmount; float3 Constant148 = float3(0,0,0); float Result102 = -(Context.MapUpdate.Constants.Emitter.VortexForce.OriginPullAmount); float3 Result103 = lerp(Context.MapUpdate.Local.VortexForce.OriginVector,Constant148,Result102); float3 Result104 = Context.MapUpdate.Local.VortexForce.VortexVector + Result103; float3 Result105 = normalize(Result104); float3 Result106 = Result105 * Context.MapUpdate.Local.VortexForce.ForceAmount + Context.MapUpdate.Transient.PhysicsForce; Context.MapUpdate.Transient.PhysicsForce = Result106; } void SolveForcesAndVelocity_Emitter_Func_(inout FSimulationContext Context) { Context.MapUpdate.Local.SolveForcesAndVelocity.DeltaTime = Context.MapUpdate.SolveForcesAndVelocity.DeltaTime; Context.MapUpdate.Local.SolveForcesAndVelocity.PhysicsForce = Context.MapUpdate.SolveForcesAndVelocity.Force; Context.MapUpdate.OUTPUT_VAR.SolveForcesAndVelocity.IncomingPhysicsForce = Context.MapUpdate.SolveForcesAndVelocity.Force; Context.MapUpdate.OUTPUT_VAR.SolveForcesAndVelocity.Velocity = Context.MapUpdate.SolveForcesAndVelocity.Velocity; Context.MapUpdate.Local.SolveForcesAndVelocity.Mass = Context.MapUpdate.SolveForcesAndVelocity.Mass; Context.MapUpdate.OUTPUT_VAR.SolveForcesAndVelocity.Position = Context.MapUpdate.SolveForcesAndVelocity.Position; Context.MapUpdate.Particles.Presolve.Velocity = Context.MapUpdate.OUTPUT_VAR.SolveForcesAndVelocity.Velocity; Context.MapUpdate.Particles.Presolve.Position = Context.MapUpdate.OUTPUT_VAR.SolveForcesAndVelocity.Position; Context.MapUpdate.Particles.Presolve.PhysicsForce = Context.MapUpdate.OUTPUT_VAR.SolveForcesAndVelocity.IncomingPhysicsForce; float Constant156 = 0.0001; float Result107 = max(Context.MapUpdate.Local.SolveForcesAndVelocity.Mass, Constant156); float Result108 = Reciprocal(Result107); float3 Result109 = Result108 * Context.MapUpdate.Local.SolveForcesAndVelocity.PhysicsForce; Context.MapUpdate.Local.SolveForcesAndVelocity.PhysicsForce = Result109; float3 Result110 = Context.MapUpdate.Local.SolveForcesAndVelocity.PhysicsForce * Context.MapUpdate.Local.SolveForcesAndVelocity.DeltaTime + Context.MapUpdate.OUTPUT_VAR.SolveForcesAndVelocity.Velocity; float Constant157 = 0; float Result111 = max(Context.MapUpdate.Transient.PhysicsDrag, Constant157); float Result112 = Context.MapUpdate.Local.SolveForcesAndVelocity.DeltaTime * Result111; float Constant158 = 1; float Result113 = Result112 + Constant158; float3 Result114 = Result110 / Result113; Context.MapUpdate.OUTPUT_VAR.SolveForcesAndVelocity.Velocity = Result114; Context.MapUpdate.OUTPUT_VAR.SolveForcesAndVelocity.IncomingPhysicsDrag = Context.MapUpdate.Transient.PhysicsDrag; Context.MapUpdate.OUTPUT_VAR.SolveForcesAndVelocity.Velocity = Context.MapUpdate.OUTPUT_VAR.SolveForcesAndVelocity.Velocity; Context.MapUpdate.OUTPUT_VAR.SolveForcesAndVelocity.Velocity = Context.MapUpdate.OUTPUT_VAR.SolveForcesAndVelocity.Velocity; float3 Result115 = Context.MapUpdate.OUTPUT_VAR.SolveForcesAndVelocity.Velocity * Context.MapUpdate.Local.SolveForcesAndVelocity.DeltaTime + Context.MapUpdate.OUTPUT_VAR.SolveForcesAndVelocity.Position; Context.MapUpdate.OUTPUT_VAR.SolveForcesAndVelocity.Position = Result115; float3 Position_IfResult; float3 Velocity_IfResult; if(Context.MapUpdate.SolveForcesAndVelocity.WritetoIntrinsicProperties) { Position_IfResult = Context.MapUpdate.OUTPUT_VAR.SolveForcesAndVelocity.Position; Velocity_IfResult = Context.MapUpdate.OUTPUT_VAR.SolveForcesAndVelocity.Velocity; } else { Position_IfResult = Context.MapUpdate.Particles.Position; Velocity_IfResult = Context.MapUpdate.Particles.Velocity; } Context.MapUpdate.Particles.Position = Position_IfResult; Context.MapUpdate.Particles.Velocity = Velocity_IfResult; float3 Constant159 = float3(0,0,0); float Constant160 = 0; float3 ForceVector_IfResult; float Drag_IfResult; if(Context.MapUpdate.SolveForcesAndVelocity.WritetoIntrinsicProperties) { ForceVector_IfResult = Constant159; Drag_IfResult = Constant160; } else { ForceVector_IfResult = Context.MapUpdate.Transient.PhysicsForce; Drag_IfResult = Context.MapUpdate.Transient.PhysicsDrag; } Context.MapUpdate.Transient.PhysicsForce = ForceVector_IfResult; Context.MapUpdate.Transient.PhysicsDrag = Drag_IfResult; } void NewNiagaraScriptScript_Emitter_Func_(inout FSimulationContext Context) { float X; float Y; float Z; X = Context.MapUpdate.Particles.Velocity.x; Y = Context.MapUpdate.Particles.Velocity.y; Z = Context.MapUpdate.Particles.Velocity.z; int Constant161 = 0; float AudioSpectrum_EmitterAudioSpectrumOutput_Amplitude; AudioSpectrum_EmitterAudioSpectrum(Context.MapUpdate.Particles.NormalizedAge, Constant161, AudioSpectrum_EmitterAudioSpectrumOutput_Amplitude); float Constant162 = 1.2; float Output12; Output12 = Constant162; float Result116 = X * AudioSpectrum_EmitterAudioSpectrumOutput_Amplitude * Output12; float Constant163 = 1; float Output13; Output13 = Constant163; float Result117 = Result116 + Output13; float Result118 = Y * AudioSpectrum_EmitterAudioSpectrumOutput_Amplitude * Output12; float Result119 = Result118 + Output13; float Result120 = Z * AudioSpectrum_EmitterAudioSpectrumOutput_Amplitude * Output12; float Result121 = Result120 + Output13; float3 Output14; Output14.x = Result117; Output14.y = Result119; Output14.z = Result121; Context.MapUpdate.Particles.Velocity = Output14; } void NormalizedExecutionIndex_Func_(int In_EngineExecutionCount, bool In_NormalizedRangeIncludesOne, out float Out_NormalizedExecIndex, inout FSimulationContext Context) { int Result123 = ExecIndex(); float Output0; Output0 = Result123; int Constant165 = -1; int Result124 = In_EngineExecutionCount + Constant165; int int32_IfResult; if(In_NormalizedRangeIncludesOne) { int32_IfResult = Result124; } else { int32_IfResult = In_EngineExecutionCount; } float Output01; Output01 = int32_IfResult; float Result125 = Output0 / Output01; Out_NormalizedExecIndex = Result125; } void ColorByAudioSpectrum_GetAudioVolume_Emitter_Func_(out float Out_Volume, inout FSimulationContext Context) { int Result128 = ExecIndex(); bool Constant169 = true; float NormalizedExecutionIndex_Func_Output_NormalizedExecIndex1; NormalizedExecutionIndex_Func_(Result128, Constant169, NormalizedExecutionIndex_Func_Output_NormalizedExecIndex1, Context); int Constant170 = 0; float SampleAudioBuffer_EmitterAudioOscilloscopeOutput_Amplitude; SampleAudioBuffer_EmitterAudioOscilloscope(NormalizedExecutionIndex_Func_Output_NormalizedExecIndex1, Constant170, SampleAudioBuffer_EmitterAudioOscilloscopeOutput_Amplitude); int Constant171 = 1; float SampleAudioBuffer_EmitterAudioOscilloscopeOutput_Amplitude1; SampleAudioBuffer_EmitterAudioOscilloscope(NormalizedExecutionIndex_Func_Output_NormalizedExecIndex1, Constant171, SampleAudioBuffer_EmitterAudioOscilloscopeOutput_Amplitude1); float Result129 = SampleAudioBuffer_EmitterAudioOscilloscopeOutput_Amplitude + SampleAudioBuffer_EmitterAudioOscilloscopeOutput_Amplitude1; Out_Volume = Result129; } void ColorByAudioSpectrum_Emitter_Func_(inout FSimulationContext Context) { int Result122 = ExecIndex(); bool Constant164 = true; float NormalizedExecutionIndex_Func_Output_NormalizedExecIndex; NormalizedExecutionIndex_Func_(Result122, Constant164, NormalizedExecutionIndex_Func_Output_NormalizedExecIndex, Context); int Constant166 = 0; float AudioSpectrum_EmitterAudioSpectrum001Output_Amplitude; AudioSpectrum_EmitterAudioSpectrum001(NormalizedExecutionIndex_Func_Output_NormalizedExecIndex, Constant166, AudioSpectrum_EmitterAudioSpectrum001Output_Amplitude); float Constant167 = 0.5; float Result126 = AudioSpectrum_EmitterAudioSpectrum001Output_Amplitude * Constant167; float R; float G; float B; float A; R = Context.MapUpdate.Particles.Color.r; G = Context.MapUpdate.Particles.Color.g; B = Context.MapUpdate.Particles.Color.b; A = Context.MapUpdate.Particles.Color.a; float Constant168 = 0.96; float Result127 = lerp(Result126,R,Constant168); float ColorByAudioSpectrum_GetAudioVolume_Emitter_Func_Output_Volume; ColorByAudioSpectrum_GetAudioVolume_Emitter_Func_(ColorByAudioSpectrum_GetAudioVolume_Emitter_Func_Output_Volume, Context); float Constant172 = 6; float Result130 = ColorByAudioSpectrum_GetAudioVolume_Emitter_Func_Output_Volume * Constant172; float Constant173 = 0.98; float Result131 = lerp(Result130,G,Constant173); float Constant174 = 1; float Constant175 = 0; float Constant176 = 0.4; float Result132 = lerp(Constant175,Constant176,AudioSpectrum_EmitterAudioSpectrum001Output_Amplitude); float4 Output15; Output15.r = Result127; Output15.g = Result131; Output15.b = Constant174; Output15.a = Result132; Context.MapUpdate.Particles.Color = Output15; } float GetSpawnInterpolation() { return HackSpawnInterp; } void InterpolateParameters(inout FSimulationContext Context) { int InterpSpawn_Index = ExecIndex(); float InterpSpawn_SpawnTime = Emitter_InterpSpawnStartDt + (Emitter_SpawnInterval * InterpSpawn_Index); float InterpSpawn_UpdateTime = Engine_DeltaTime - InterpSpawn_SpawnTime; float InterpSpawn_InvSpawnTime = 1.0 / InterpSpawn_SpawnTime; float InterpSpawn_InvUpdateTime = 1.0 / InterpSpawn_UpdateTime; float SpawnInterp = InterpSpawn_SpawnTime * Engine_InverseDeltaTime ; HackSpawnInterp = SpawnInterp; Context.MapSpawn.Interpolation.InterpSpawn_Index = InterpSpawn_Index; Context.MapSpawn.Interpolation.InterpSpawn_SpawnTime = InterpSpawn_SpawnTime; Context.MapSpawn.Interpolation.InterpSpawn_UpdateTime = InterpSpawn_UpdateTime; Context.MapSpawn.Interpolation.InterpSpawn_InvSpawnTime = InterpSpawn_InvSpawnTime; Context.MapSpawn.Interpolation.InterpSpawn_InvUpdateTime = InterpSpawn_InvUpdateTime; Context.MapSpawn.Interpolation.SpawnInterp = SpawnInterp; Context.MapSpawn.Interpolation.Emitter_SpawnInterval = Emitter_SpawnInterval; Context.MapSpawn.Interpolation.Emitter_InterpSpawnStartDt = Emitter_InterpSpawnStartDt; Context.MapSpawn.Interpolation.Emitter_SpawnGroup = Emitter_SpawnGroup; Context.MapSpawn.Engine.Time = lerp(PREV_Engine_Time, Engine_Time, SpawnInterp); Context.MapSpawn.Engine.RealTime = lerp(PREV_Engine_RealTime, Engine_RealTime, SpawnInterp); Context.MapSpawn.Engine.Owner.TimeSinceRendered = lerp(PREV_Engine_Owner_TimeSinceRendered, Engine_Owner_TimeSinceRendered, SpawnInterp); Context.MapSpawn.Engine.Owner.LODDistance = lerp(PREV_Engine_Owner_LODDistance, Engine_Owner_LODDistance, SpawnInterp); Context.MapSpawn.Engine.Owner.LODDistanceFraction = lerp(PREV_Engine_Owner_LODDistanceFraction, Engine_Owner_LODDistanceFraction, SpawnInterp); Context.MapSpawn.Engine.System.Age = lerp(PREV_Engine_System_Age, Engine_System_Age, SpawnInterp); Context.MapSpawn.Engine.Owner.Rotation = lerp(PREV_Engine_Owner_Rotation, Engine_Owner_Rotation, SpawnInterp); Context.MapSpawn.Engine.Owner.Position = lerp(PREV_Engine_Owner_Position.xyz, Engine_Owner_Position.xyz, SpawnInterp); Context.MapSpawn.Engine.Owner.Velocity = lerp(PREV_Engine_Owner_Velocity.xyz, Engine_Owner_Velocity.xyz, SpawnInterp); Context.MapSpawn.Engine.Owner.SystemXAxis = lerp(PREV_Engine_Owner_SystemXAxis.xyz, Engine_Owner_SystemXAxis.xyz, SpawnInterp); Context.MapSpawn.Engine.Owner.SystemYAxis = lerp(PREV_Engine_Owner_SystemYAxis.xyz, Engine_Owner_SystemYAxis.xyz, SpawnInterp); Context.MapSpawn.Engine.Owner.SystemZAxis = lerp(PREV_Engine_Owner_SystemZAxis.xyz, Engine_Owner_SystemZAxis.xyz, SpawnInterp); Context.MapSpawn.Engine.Owner.Scale = lerp(PREV_Engine_Owner_Scale.xyz, Engine_Owner_Scale.xyz, SpawnInterp); Context.MapSpawn.Emitter.Age = lerp(PREV_Emitter_Age, Emitter_Age, SpawnInterp); Context.MapUpdate.Engine.DeltaTime = InterpSpawn_UpdateTime; Context.MapUpdate.Engine.InverseDeltaTime = InterpSpawn_InvUpdateTime; } void ReadDataSets(inout FSimulationContext Context) { } void WriteDataSets(inout FSimulationContext Context) { } void SimulateMapSpawn(inout FSimulationContext Context) { //Begin Interpolated Spawn Script! //Begin Initialize Parameter Map Defaults float Constant = 0; Context.MapSpawn.Particles.MaterialRandom = Constant; float Constant1 = 1; Context.MapSpawn.Particles.Lifetime = Constant1; float4 Constant2 = float4(1,1,1,1); Context.MapSpawn.Particles.Color = Constant2; float Constant3 = 1; Context.MapSpawn.Particles.Mass = Constant3; float2 Constant4 = float2(10,10); Context.MapSpawn.Particles.SpriteSize = Constant4; float Constant5 = 0; Context.MapSpawn.Particles.SpriteRotation = Constant5; float3 Constant6 = float3(1,1,1); Context.MapSpawn.Particles.Scale = Constant6; float3 Constant7 = float3(0.0, 0.0, 0.0); Context.MapSpawn.Particles.Direction = Constant7; float Constant8 = 0; Context.MapSpawn.Particles.Age = Constant8; float Constant9 = (0.0); Context.MapSpawn.Particles.NormalizedAge = Constant9; float3 Constant10 = float3(0,0,0); Context.MapSpawn.Particles.Velocity = Constant10; float3 Constant11 = float3(0.0, 0.0, 0.0); Context.MapSpawn.Particles.Presolve.Velocity = Constant11; float3 Constant12 = float3(0.0, 0.0, 0.0); Context.MapSpawn.Particles.Presolve.Position = Constant12; float3 Constant13 = float3(0.0, 0.0, 0.0); Context.MapSpawn.Particles.Presolve.PhysicsForce = Constant13; float3 Constant14 = float3(0,0,0); Context.MapSpawn.Particles.Previous.Velocity = Constant14; float3 Constant15 = float3(0,0,0); Context.MapSpawn.Particles.Previous.Position = Constant15; //End Initialize Parameter Map Defaults bool Constant16 = true; bool Constant17 = true; bool Constant18 = false; bool Constant19 = true; float3 ParticleOwnerPosition_Emitter_Func_Output_OutPosition; ParticleOwnerPosition_Emitter_Func_(ParticleOwnerPosition_Emitter_Func_Output_OutPosition, Context); Context.MapSpawn.InitializeParticle.WriteSpriteSize = Constant16; Context.MapSpawn.InitializeParticle.WriteColor = Constant17; Context.MapSpawn.InitializeParticle.WritePosition = Constant18; Context.MapSpawn.InitializeParticle.Position = ParticleOwnerPosition_Emitter_Func_Output_OutPosition; bool Constant22 = true; Context.MapSpawn.InitializeParticle.WriteMaterialRandom = Constant22; float Constant23 = 0; float Constant24 = 1; int Constant25 = -1; int Constant26 = 0; bool Constant27 = false; float RandomRangeFloat_Func_Output_Result; RandomRangeFloat_Func_(Constant23, Constant24, Constant25, Constant26, Constant27, RandomRangeFloat_Func_Output_Result, Context); Context.MapSpawn.InitializeParticle.MaterialRandom = RandomRangeFloat_Func_Output_Result; bool Constant41 = true; Context.MapSpawn.InitializeParticle.WriteLifetime = Constant41; bool Constant42 = true; Context.MapSpawn.InitializeParticle.WriteMass = Constant42; bool Constant43 = false; Context.MapSpawn.InitializeParticle.WriteSpriteRotation = Constant43; bool Constant44 = false; Context.MapSpawn.InitializeParticle.WriteScale = Constant44; float3 InitializeParticle_SimulationPosition_Emitter_Func_Output_OutPosition; InitializeParticle_SimulationPosition_Emitter_Func_(InitializeParticle_SimulationPosition_Emitter_Func_Output_OutPosition, Context); Context.MapSpawn.Particles.Position = InitializeParticle_SimulationPosition_Emitter_Func_Output_OutPosition; EnterStatScope(1 /**InitializeParticle_Emitter_Func_*/); InitializeParticle_Emitter_Func_(Context); ExitStatScope(/**InitializeParticle_Emitter_Func_*/); bool Constant47 = false; Context.MapSpawn.TorusLocation.OverrideRandomness = Constant47; int Constant48 = 0; Context.MapSpawn.TorusLocation.RandomnessMode = Constant48; bool Constant49 = false; Context.MapSpawn.TorusLocation.OverrideSeed = Constant49; bool Constant50 = false; Context.MapSpawn.TorusLocation.FixedRandomSeed = Constant50; float Constant51 = (0.0); Context.MapSpawn.Local.TorusLocation.RandomRadius = Constant51; float Constant52 = (0.0); Context.MapSpawn.Local.TorusLocation.RandomU = Constant52; float Constant53 = (0.0); Context.MapSpawn.Local.TorusLocation.RandomV = Constant53; float3 Constant54 = float3(0.0, 0.0, 0.0); Context.MapSpawn.Local.TorusLocation.TorusVector = Constant54; float3 Constant55 = float3(0.0, 0.0, 0.0); Context.MapSpawn.Local.TorusLocation.TorusTangent = Constant55; float3 Constant56 = float3(0.0, 0.0, 0.0); Context.MapSpawn.Local.TorusLocation.TorusNormal = Constant56; bool Constant57 = false; Context.MapSpawn.TorusLocation.EnableScale = Constant57; int Constant58 = 2; Context.MapSpawn.TorusLocation.CoordinateSpace = Constant58; Context.MapSpawn.TorusLocation.TorusOrigin = Context.MapSpawn.Particles.Position; EnterStatScope(2 /**TorusLocation_Emitter_Func_*/); TorusLocation_Emitter_Func_(Context); ExitStatScope(/**TorusLocation_Emitter_Func_*/); Context.MapSpawn.SetVariables_619FBC7841F4E96144B94D92F32F22FE.Particles.Direction = Context.MapSpawn.Particles.Position; EnterStatScope(3 /**SetVariables_619FBC7841F4E96144B94D92F32F22FE_Emitter_Func_*/); SetVariables_619FBC7841F4E96144B94D92F32F22FE_Emitter_Func_(Context); ExitStatScope(/**SetVariables_619FBC7841F4E96144B94D92F32F22FE_Emitter_Func_*/); //End Spawn Script! // Begin HandleMissingDefaultValues // End HandleMissingDefaultValues } void SimulateMapUpdate(inout FSimulationContext Context) { //Begin Update Script! RandomCounterDeterministic = 0; bool Constant91 = true; Context.MapUpdate.DataInstance.Alive = Constant91; Context.MapUpdate.ParticleState.DeltaTime = Context.MapUpdate.Engine.DeltaTime; Context.MapUpdate.ParticleState.Lifetime = Context.MapUpdate.Particles.Lifetime; EnterStatScope(4 /**ParticleState_Emitter_Func_*/); ParticleState_Emitter_Func_(Context); ExitStatScope(/**ParticleState_Emitter_Func_*/); bool Constant95 = false; int Constant96 = (0); float Constant97 = (0.0); Context.MapUpdate.Local.CurlNoiseForce001.AgeAdvancement = Constant97; float Constant98 = (0.0); Context.MapUpdate.Local.CurlNoiseForce001.DeterministicOffset = Constant98; bool Constant99 = true; Context.MapUpdate.CurlNoiseForce001.SamplePosition = Context.MapUpdate.Particles.Position; float3 Constant100 = float3(0.0, 0.0, 0.0); Context.MapUpdate.Local.CurlNoiseForce001.SamplePosition = Constant100; float3 Constant101 = float3(0.0, 0.0, 0.0); Context.MapUpdate.Local.CurlNoiseForce001.SampledNoise = Constant101; float Constant102 = 1; Context.MapUpdate.Local.CurlNoiseForce001.Falloff = Constant102; Context.MapUpdate.CurlNoiseForce001.CurlNoiseConeMaskAxis = Context.MapUpdate.Particles.Velocity; float3 Constant103 = float3(0,0,0); Context.MapUpdate.Transient.PhysicsForce = Constant103; EnterStatScope(5 /**CurlNoiseForce001_Emitter_Func_*/); CurlNoiseForce001_Emitter_Func_(Constant96, Context); ExitStatScope(/**CurlNoiseForce001_Emitter_Func_*/); bool Constant109 = false; int Constant110 = (0); float Constant111 = (0.0); Context.MapUpdate.Local.CurlNoiseForce.AgeAdvancement = Constant111; float Constant112 = (0.0); Context.MapUpdate.Local.CurlNoiseForce.DeterministicOffset = Constant112; Context.MapUpdate.CurlNoiseForce.SamplePosition = Context.MapUpdate.Particles.Position; float3 Constant113 = float3(0.0, 0.0, 0.0); Context.MapUpdate.Local.CurlNoiseForce.SamplePosition = Constant113; float3 Constant114 = float3(0.0, 0.0, 0.0); Context.MapUpdate.Local.CurlNoiseForce.SampledNoise = Constant114; float Constant115 = 1; Context.MapUpdate.Local.CurlNoiseForce.Falloff = Constant115; Context.MapUpdate.CurlNoiseForce.CurlNoiseConeMaskAxis = Context.MapUpdate.Particles.Velocity; EnterStatScope(6 /**CurlNoiseForce_Emitter_Func_*/); CurlNoiseForce_Emitter_Func_(Constant110, Context); ExitStatScope(/**CurlNoiseForce_Emitter_Func_*/); float3 PointAttractionForce_SimulationPosition_Emitter_Func_Output_OutPosition; PointAttractionForce_SimulationPosition_Emitter_Func_(PointAttractionForce_SimulationPosition_Emitter_Func_Output_OutPosition, Context); Context.MapUpdate.PointAttractionForce.AttractorPosition = PointAttractionForce_SimulationPosition_Emitter_Func_Output_OutPosition; float3 Constant123 = float3(0.0, 0.0, 0.0); Context.MapUpdate.Local.PointAttractionForce.PointOriginVec = Constant123; float Constant124 = (0.0); Context.MapUpdate.Local.PointAttractionForce.PointOriginVecLength = Constant124; bool Constant125 = true; Context.MapUpdate.PointAttractionForce.UseFalloff = Constant125; bool Constant126 = false; Context.MapUpdate.PointAttractionForce.KillWithinRadius = Constant126; EnterStatScope(7 /**PointAttractionForce_Emitter_Func_*/); PointAttractionForce_Emitter_Func_(Context); ExitStatScope(/**PointAttractionForce_Emitter_Func_*/); float Constant134 = 0; Context.MapUpdate.Transient.PhysicsDrag = Constant134; float Constant135 = 0; Context.MapUpdate.Transient.PhysicsRotationalDrag = Constant135; EnterStatScope(8 /**Drag_Emitter_Func_*/); Drag_Emitter_Func_(Context); ExitStatScope(/**Drag_Emitter_Func_*/); float3 VortexForce_SimulationPosition_Emitter_Func_Output_OutPosition; VortexForce_SimulationPosition_Emitter_Func_(VortexForce_SimulationPosition_Emitter_Func_Output_OutPosition, Context); Context.MapUpdate.VortexForce.VortexOrigin = VortexForce_SimulationPosition_Emitter_Func_Output_OutPosition; float3 Constant138 = float3(0.0, 0.0, 0.0); Context.MapUpdate.Local.VortexForce.VortexOrigin = Constant138; float3 Constant139 = float3(0.0, 0.0, 0.0); Context.MapUpdate.Local.VortexForce.ParticlesPosition = Constant139; float3 Constant140 = float3(0.0, 0.0, 0.0); Context.MapUpdate.Local.VortexForce.OriginVector = Constant140; float3 Constant141 = float3(0.0, 0.0, 0.0); Context.MapUpdate.Local.VortexForce.VortexVector = Constant141; float Constant142 = (0.0); Context.MapUpdate.Local.VortexForce.ForceAmount = Constant142; EnterStatScope(9 /**VortexForce_Emitter_Func_*/); VortexForce_Emitter_Func_(Context); ExitStatScope(/**VortexForce_Emitter_Func_*/); Context.MapUpdate.Transient.PhysicsDeltaTime = Context.MapUpdate.Engine.DeltaTime; Context.MapUpdate.SolveForcesAndVelocity.DeltaTime = Context.MapUpdate.Transient.PhysicsDeltaTime; float Constant149 = (0.0); Context.MapUpdate.Local.SolveForcesAndVelocity.DeltaTime = Constant149; Context.MapUpdate.SolveForcesAndVelocity.Force = Context.MapUpdate.Transient.PhysicsForce; Context.MapUpdate.SolveForcesAndVelocity.Velocity = Context.MapUpdate.Particles.Velocity; Context.MapUpdate.SolveForcesAndVelocity.Mass = Context.MapUpdate.Particles.Mass; Context.MapUpdate.SolveForcesAndVelocity.Position = Context.MapUpdate.Particles.Position; float3 Constant150 = float3(0.0, 0.0, 0.0); Context.MapUpdate.Local.SolveForcesAndVelocity.PhysicsForce = Constant150; float3 Constant151 = float3(0.0, 0.0, 0.0); Context.MapUpdate.OUTPUT_VAR.SolveForcesAndVelocity.IncomingPhysicsForce = Constant151; float3 Constant152 = float3(0.0, 0.0, 0.0); Context.MapUpdate.OUTPUT_VAR.SolveForcesAndVelocity.Velocity = Constant152; float Constant153 = (0.0); Context.MapUpdate.Local.SolveForcesAndVelocity.Mass = Constant153; float3 Constant154 = float3(0.0, 0.0, 0.0); Context.MapUpdate.OUTPUT_VAR.SolveForcesAndVelocity.Position = Constant154; Context.MapUpdate.SolveForcesAndVelocity.PreviousVelocity = Context.MapUpdate.Particles.Previous.Velocity; bool Constant155 = true; Context.MapUpdate.SolveForcesAndVelocity.WritetoIntrinsicProperties = Constant155; EnterStatScope(10 /**SolveForcesAndVelocity_Emitter_Func_*/); SolveForcesAndVelocity_Emitter_Func_(Context); ExitStatScope(/**SolveForcesAndVelocity_Emitter_Func_*/); EnterStatScope(11 /**NewNiagaraScriptScript_Emitter_Func_*/); NewNiagaraScriptScript_Emitter_Func_(Context); ExitStatScope(/**NewNiagaraScriptScript_Emitter_Func_*/); EnterStatScope(12 /**ColorByAudioSpectrum_Emitter_Func_*/); ColorByAudioSpectrum_Emitter_Func_(Context); ExitStatScope(/**ColorByAudioSpectrum_Emitter_Func_*/); //End Update Script! } float3 TilingAxes_Local_CurlNoiseForce001_VectorField; float3 Dimensions_Local_CurlNoiseForce001_VectorField; float3 MinBounds_Local_CurlNoiseForce001_VectorField; float3 MaxBounds_Local_CurlNoiseForce001_VectorField; Texture3D VectorFieldTexture_Local_CurlNoiseForce001_VectorField; SamplerState VectorFieldSampler_Local_CurlNoiseForce001_VectorField; float3 TilingAxes_Emitter_VectorField32; float3 Dimensions_Emitter_VectorField32; float3 MinBounds_Emitter_VectorField32; float3 MaxBounds_Emitter_VectorField32; Texture3D VectorFieldTexture_Emitter_VectorField32; SamplerState VectorFieldSampler_Emitter_VectorField32; float3 TilingAxes_Local_CurlNoiseForce_VectorField; float3 Dimensions_Local_CurlNoiseForce_VectorField; float3 MinBounds_Local_CurlNoiseForce_VectorField; float3 MaxBounds_Local_CurlNoiseForce_VectorField; Texture3D VectorFieldTexture_Local_CurlNoiseForce_VectorField; SamplerState VectorFieldSampler_Local_CurlNoiseForce_VectorField; Buffer SpectrumBuffer_Emitter_AudioSpectrum; int NumChannels_Emitter_AudioSpectrum; int Resolution_Emitter_AudioSpectrum; Buffer AudioBuffer_Emitter_AudioOscilloscope; int NumChannels_Emitter_AudioOscilloscope; Buffer SpectrumBuffer_Emitter_AudioSpectrum001; int NumChannels_Emitter_AudioSpectrum001; int Resolution_Emitter_AudioSpectrum001; void SampleField_EmitterVectorField32(float3 In_SamplePoint, out float3 Out_Sample) { float3 SamplePoint = (In_SamplePoint - MinBounds_Emitter_VectorField32) / (MaxBounds_Emitter_VectorField32 - MinBounds_Emitter_VectorField32); Out_Sample = Texture3DSample(VectorFieldTexture_Emitter_VectorField32, VectorFieldSampler_Emitter_VectorField32, SamplePoint).xyz; } void AudioSpectrum_EmitterAudioSpectrum(float In_NormalizedPosition, int In_ChannelIndex, out float Out_Val) { float FrameIndex = In_NormalizedPosition * Resolution_Emitter_AudioSpectrum; int MaxIndex = Resolution_Emitter_AudioSpectrum - 1; int LowerIndex = floor(FrameIndex); LowerIndex = LowerIndex < Resolution_Emitter_AudioSpectrum ? LowerIndex : MaxIndex; LowerIndex = LowerIndex >= 0 ? LowerIndex : 0; int UpperIndex = LowerIndex < MaxIndex ? LowerIndex + 1 : LowerIndex; float Fraction = FrameIndex - LowerIndex; Fraction = Fraction > 1.0 ? 1.0 : Fraction; Fraction = Fraction < 0.0 ? 0.0 : Fraction; float LowerValue = SpectrumBuffer_Emitter_AudioSpectrum.Load(In_ChannelIndex * Resolution_Emitter_AudioSpectrum + LowerIndex); float UpperValue = SpectrumBuffer_Emitter_AudioSpectrum.Load(In_ChannelIndex * Resolution_Emitter_AudioSpectrum + UpperIndex); Out_Val = lerp(LowerValue, UpperValue, Fraction); } void SampleAudioBuffer_EmitterAudioOscilloscope(float In_NormalizedPosition, int In_ChannelIndex, out float Out_Val) { float FrameIndex = In_NormalizedPosition * 512 / NumChannels_Emitter_AudioOscilloscope; int LowerIndex = floor(FrameIndex); int UpperIndex = LowerIndex < 512 ? LowerIndex + 1.0 : LowerIndex; float Fraction = FrameIndex - LowerIndex; float LowerValue = AudioBuffer_Emitter_AudioOscilloscope.Load(LowerIndex * NumChannels_Emitter_AudioOscilloscope + In_ChannelIndex); float UpperValue = AudioBuffer_Emitter_AudioOscilloscope.Load(UpperIndex * NumChannels_Emitter_AudioOscilloscope + In_ChannelIndex); Out_Val = lerp(LowerValue, UpperValue, Fraction); } void AudioSpectrum_EmitterAudioSpectrum001(float In_NormalizedPosition, int In_ChannelIndex, out float Out_Val) { float FrameIndex = In_NormalizedPosition * Resolution_Emitter_AudioSpectrum001; int MaxIndex = Resolution_Emitter_AudioSpectrum001 - 1; int LowerIndex = floor(FrameIndex); LowerIndex = LowerIndex < Resolution_Emitter_AudioSpectrum001 ? LowerIndex : MaxIndex; LowerIndex = LowerIndex >= 0 ? LowerIndex : 0; int UpperIndex = LowerIndex < MaxIndex ? LowerIndex + 1 : LowerIndex; float Fraction = FrameIndex - LowerIndex; Fraction = Fraction > 1.0 ? 1.0 : Fraction; Fraction = Fraction < 0.0 ? 0.0 : Fraction; float LowerValue = SpectrumBuffer_Emitter_AudioSpectrum001.Load(In_ChannelIndex * Resolution_Emitter_AudioSpectrum001 + LowerIndex); float UpperValue = SpectrumBuffer_Emitter_AudioSpectrum001.Load(In_ChannelIndex * Resolution_Emitter_AudioSpectrum001 + UpperIndex); Out_Val = lerp(LowerValue, UpperValue, Fraction); } void InitConstants(inout FSimulationContext Context) { Context.MapSpawn.Engine.Owner.Position = Engine_Owner_Position.xyz; Context.MapSpawn.Emitter.RandomSeed = Emitter_RandomSeed; Context.MapSpawn.Engine.System.TickCount = Engine_System_TickCount; Context.MapSpawn.Constants.Emitter.InitializeParticle.Lifetime = Constants_Emitter_InitializeParticle_Lifetime; Context.MapSpawn.Constants.Emitter.InitializeParticle.Color = Constants_Emitter_InitializeParticle_Color; Context.MapSpawn.Constants.Emitter.InitializeParticle.Mass = Constants_Emitter_InitializeParticle_Mass; Context.MapSpawn.Constants.Emitter.InitializeParticle.SpriteSize = Constants_Emitter_InitializeParticle_SpriteSize.xy; Context.MapSpawn.Constants.Emitter.InitializeParticle.SpriteRotation = Constants_Emitter_InitializeParticle_SpriteRotation; Context.MapSpawn.Constants.Emitter.InitializeParticle.MeshScale = Constants_Emitter_InitializeParticle_MeshScale.xyz; Context.MapSpawn.Constants.Emitter.TorusLocation.SurfacePosition = Constants_Emitter_TorusLocation_SurfacePosition; Context.MapSpawn.Constants.Emitter.TorusLocation.UDistribution = Constants_Emitter_TorusLocation_UDistribution; Context.MapSpawn.Constants.Emitter.TorusLocation.VDistribution = Constants_Emitter_TorusLocation_VDistribution; Context.MapSpawn.Constants.Emitter.TorusLocation.RandomSeed = Constants_Emitter_TorusLocation_RandomSeed; Context.MapSpawn.Constants.Emitter.TorusLocation.HandleRadius = Constants_Emitter_TorusLocation_HandleRadius; Context.MapSpawn.Constants.Emitter.TorusLocation.LargeRadius = Constants_Emitter_TorusLocation_LargeRadius; Context.MapSpawn.Constants.Emitter.TorusLocation.NonUniformScale = Constants_Emitter_TorusLocation_NonUniformScale.xyz; Context.MapSpawn.Constants.Emitter.TorusLocation.TorusAxis = Constants_Emitter_TorusLocation_TorusAxis.xyz; Context.MapSpawn.Constants.Emitter.TorusLocation.NormalizedAngleAroundTorusAxis = Constants_Emitter_TorusLocation_NormalizedAngleAroundTorusAxis; Context.MapSpawn.Constants.Emitter.TorusLocation.Offset = Constants_Emitter_TorusLocation_Offset.xyz; Context.MapSpawn.Constants.Emitter.TorusLocation.SpawnGroupMask = Constants_Emitter_TorusLocation_SpawnGroupMask; Context.MapSpawn.Engine.Owner.SystemLocalToWorld = Engine_Owner_SystemLocalToWorld; Context.MapSpawn.Engine.Owner.SystemWorldToLocal = Engine_Owner_SystemWorldToLocal; Context.MapSpawn.Engine.Owner.SystemLocalToWorldNoScale = Engine_Owner_SystemLocalToWorldNoScale; Context.MapSpawn.Engine.Owner.SystemWorldToLocalNoScale = Engine_Owner_SystemWorldToLocalNoScale; Context.MapUpdate.Engine.DeltaTime = Engine_DeltaTime; Context.MapUpdate.Emitter.Age = Emitter_Age; Context.MapUpdate.Engine.Time = Engine_Time; Context.MapUpdate.Constants.Emitter.CurlNoiseForce001.RandomSeed = Constants_Emitter_CurlNoiseForce001_RandomSeed; Context.MapUpdate.Engine.Owner.Position = Engine_Owner_Position.xyz; Context.MapUpdate.Constants.Emitter.CurlNoiseForce001.NoiseFrequency = Constants_Emitter_CurlNoiseForce001_NoiseFrequency; Context.MapUpdate.Constants.Emitter.CurlNoiseForce001.PanNoiseField = Constants_Emitter_CurlNoiseForce001_PanNoiseField.xyz; Context.MapUpdate.Constants.Emitter.CurlNoiseForce001.CurlNoiseConeMaskAngle = Constants_Emitter_CurlNoiseForce001_CurlNoiseConeMaskAngle; Context.MapUpdate.Constants.Emitter.CurlNoiseForce001.CurlNoiseConeMaskFalloffAngle = Constants_Emitter_CurlNoiseForce001_CurlNoiseConeMaskFalloffAngle; Context.MapUpdate.Constants.Emitter.CurlNoiseForce001.NoiseStrength = Constants_Emitter_CurlNoiseForce001_NoiseStrength; Context.MapUpdate.Emitter.RandomSeed = Emitter_RandomSeed; Context.MapUpdate.Constants.Emitter.CurlNoiseForce.RandomSeed = Constants_Emitter_CurlNoiseForce_RandomSeed; Context.MapUpdate.Constants.Emitter.CurlNoiseForce.NoiseFrequency = Constants_Emitter_CurlNoiseForce_NoiseFrequency; Context.MapUpdate.Constants.Emitter.CurlNoiseForce.PanNoiseField = Constants_Emitter_CurlNoiseForce_PanNoiseField.xyz; Context.MapUpdate.Constants.Emitter.CurlNoiseForce.CurlNoiseConeMaskAngle = Constants_Emitter_CurlNoiseForce_CurlNoiseConeMaskAngle; Context.MapUpdate.Constants.Emitter.CurlNoiseForce.CurlNoiseConeMaskFalloffAngle = Constants_Emitter_CurlNoiseForce_CurlNoiseConeMaskFalloffAngle; Context.MapUpdate.Constants.Emitter.CurlNoiseForce.NoiseStrength = Constants_Emitter_CurlNoiseForce_NoiseStrength; Context.MapUpdate.Engine.Owner.SystemLocalToWorld = Engine_Owner_SystemLocalToWorld; Context.MapUpdate.Engine.Owner.SystemWorldToLocal = Engine_Owner_SystemWorldToLocal; Context.MapUpdate.Engine.Owner.SystemLocalToWorldNoScale = Engine_Owner_SystemLocalToWorldNoScale; Context.MapUpdate.Engine.Owner.SystemWorldToLocalNoScale = Engine_Owner_SystemWorldToLocalNoScale; Context.MapUpdate.Constants.Emitter.PointAttractionForce.AttractionRadius = Constants_Emitter_PointAttractionForce_AttractionRadius; Context.MapUpdate.Constants.Emitter.PointAttractionForce.AttractionStrength = Constants_Emitter_PointAttractionForce_AttractionStrength; Context.MapUpdate.Constants.Emitter.PointAttractionForce.FalloffExponent = Constants_Emitter_PointAttractionForce_FalloffExponent; Context.MapUpdate.Constants.Emitter.PointAttractionForce.KillRadius = Constants_Emitter_PointAttractionForce_KillRadius; Context.MapUpdate.Constants.Emitter.Drag.Drag = Constants_Emitter_Drag_Drag; Context.MapUpdate.Constants.Emitter.Drag.RotationalDrag = Constants_Emitter_Drag_RotationalDrag; Context.MapUpdate.Constants.Emitter.VortexForce.InfluenceFalloffRadius = Constants_Emitter_VortexForce_InfluenceFalloffRadius; Context.MapUpdate.Constants.Emitter.VortexForce.VortexAxis = Constants_Emitter_VortexForce_VortexAxis.xyz; Context.MapUpdate.Constants.Emitter.VortexForce.VortexForceAmount = Constants_Emitter_VortexForce_VortexForceAmount; Context.MapUpdate.Constants.Emitter.VortexForce.OriginPullAmount = Constants_Emitter_VortexForce_OriginPullAmount; Context.MapUpdate.Constants.Emitter.SolveForcesAndVelocity.SpeedLimit = Constants_Emitter_SolveForcesAndVelocity_SpeedLimit; Context.MapUpdate.Constants.Emitter.SolveForcesAndVelocity.AccelerationLimit = Constants_Emitter_SolveForcesAndVelocity_AccelerationLimit; Context.MapUpdate.Engine.InverseDeltaTime = Engine_InverseDeltaTime; Context.MapUpdate.Engine.ExecutionCount = Engine_ExecutionCount; Context.MapUpdate.Emitter.SpawnRate = Emitter_SpawnRate; Context.MapUpdate.Engine.Emitter.TotalSpawnedParticles = Engine_Emitter_TotalSpawnedParticles; Context.MapUpdate.Engine.Emitter.InstanceSeed = Engine_Emitter_InstanceSeed; } void InitSpawnVariables(inout FSimulationContext Context) { Context.MapSpawn.Particles.Age = 0.0f; Context.MapSpawn.Particles.Color.r = 0.0f; Context.MapSpawn.Particles.Color.g = 0.0f; Context.MapSpawn.Particles.Color.b = 0.0f; Context.MapSpawn.Particles.Color.a = 0.0f; Context.MapSpawn.Particles.Direction.x = 0.0f; Context.MapSpawn.Particles.Direction.y = 0.0f; Context.MapSpawn.Particles.Direction.z = 0.0f; Context.MapSpawn.Particles.Lifetime = 0.0f; Context.MapSpawn.Particles.Mass = 0.0f; Context.MapSpawn.Particles.MaterialRandom = 0.0f; Context.MapSpawn.Particles.NormalizedAge = 0.0f; Context.MapSpawn.Particles.Position.x = 0.0f; Context.MapSpawn.Particles.Position.y = 0.0f; Context.MapSpawn.Particles.Position.z = 0.0f; Context.MapSpawn.Particles.Presolve.PhysicsForce.x = 0.0f; Context.MapSpawn.Particles.Presolve.PhysicsForce.y = 0.0f; Context.MapSpawn.Particles.Presolve.PhysicsForce.z = 0.0f; Context.MapSpawn.Particles.Presolve.Position.x = 0.0f; Context.MapSpawn.Particles.Presolve.Position.y = 0.0f; Context.MapSpawn.Particles.Presolve.Position.z = 0.0f; Context.MapSpawn.Particles.Presolve.Velocity.x = 0.0f; Context.MapSpawn.Particles.Presolve.Velocity.y = 0.0f; Context.MapSpawn.Particles.Presolve.Velocity.z = 0.0f; Context.MapSpawn.Particles.Previous.Position.x = 0.0f; Context.MapSpawn.Particles.Previous.Position.y = 0.0f; Context.MapSpawn.Particles.Previous.Position.z = 0.0f; Context.MapSpawn.Particles.Previous.Velocity.x = 0.0f; Context.MapSpawn.Particles.Previous.Velocity.y = 0.0f; Context.MapSpawn.Particles.Previous.Velocity.z = 0.0f; Context.MapSpawn.Particles.Scale.x = 0.0f; Context.MapSpawn.Particles.Scale.y = 0.0f; Context.MapSpawn.Particles.Scale.z = 0.0f; Context.MapSpawn.Particles.SpriteRotation = 0.0f; Context.MapSpawn.Particles.SpriteSize.x = 0.0f; Context.MapSpawn.Particles.SpriteSize.y = 0.0f; Context.MapSpawn.Particles.UniqueID = 0; Context.MapSpawn.Particles.Velocity.x = 0.0f; Context.MapSpawn.Particles.Velocity.y = 0.0f; Context.MapSpawn.Particles.Velocity.z = 0.0f; Context.MapSpawn.DataInstance.Alive=true; } void LoadUpdateVariables(inout FSimulationContext Context, int InstanceIdx) { Context.MapUpdate.Particles.Age = InputDataFloat(0, 0, InstanceIdx); Context.MapUpdate.Particles.Color.r = InputDataFloat(0, 1, InstanceIdx); Context.MapUpdate.Particles.Color.g = InputDataFloat(0, 2, InstanceIdx); Context.MapUpdate.Particles.Color.b = InputDataFloat(0, 3, InstanceIdx); Context.MapUpdate.Particles.Color.a = InputDataFloat(0, 4, InstanceIdx); Context.MapUpdate.Particles.Direction.x = InputDataFloat(0, 5, InstanceIdx); Context.MapUpdate.Particles.Direction.y = InputDataFloat(0, 6, InstanceIdx); Context.MapUpdate.Particles.Direction.z = InputDataFloat(0, 7, InstanceIdx); Context.MapUpdate.Particles.Lifetime = InputDataFloat(0, 8, InstanceIdx); Context.MapUpdate.Particles.Mass = InputDataFloat(0, 9, InstanceIdx); Context.MapUpdate.Particles.MaterialRandom = InputDataFloat(0, 10, InstanceIdx); Context.MapUpdate.Particles.NormalizedAge = InputDataFloat(0, 11, InstanceIdx); Context.MapUpdate.Particles.Position.x = InputDataFloat(0, 12, InstanceIdx); Context.MapUpdate.Particles.Position.y = InputDataFloat(0, 13, InstanceIdx); Context.MapUpdate.Particles.Position.z = InputDataFloat(0, 14, InstanceIdx); Context.MapUpdate.Particles.Presolve.PhysicsForce.x = InputDataFloat(0, 15, InstanceIdx); Context.MapUpdate.Particles.Presolve.PhysicsForce.y = InputDataFloat(0, 16, InstanceIdx); Context.MapUpdate.Particles.Presolve.PhysicsForce.z = InputDataFloat(0, 17, InstanceIdx); Context.MapUpdate.Particles.Presolve.Position.x = InputDataFloat(0, 18, InstanceIdx); Context.MapUpdate.Particles.Presolve.Position.y = InputDataFloat(0, 19, InstanceIdx); Context.MapUpdate.Particles.Presolve.Position.z = InputDataFloat(0, 20, InstanceIdx); Context.MapUpdate.Particles.Presolve.Velocity.x = InputDataFloat(0, 21, InstanceIdx); Context.MapUpdate.Particles.Presolve.Velocity.y = InputDataFloat(0, 22, InstanceIdx); Context.MapUpdate.Particles.Presolve.Velocity.z = InputDataFloat(0, 23, InstanceIdx); Context.MapUpdate.Particles.Scale.x = InputDataFloat(0, 30, InstanceIdx); Context.MapUpdate.Particles.Scale.y = InputDataFloat(0, 31, InstanceIdx); Context.MapUpdate.Particles.Scale.z = InputDataFloat(0, 32, InstanceIdx); Context.MapUpdate.Particles.SpriteRotation = InputDataFloat(0, 33, InstanceIdx); Context.MapUpdate.Particles.SpriteSize.x = InputDataFloat(0, 34, InstanceIdx); Context.MapUpdate.Particles.SpriteSize.y = InputDataFloat(0, 35, InstanceIdx); Context.MapUpdate.Particles.UniqueID = InputDataInt(0, 0, InstanceIdx); Context.MapUpdate.Particles.Velocity.x = InputDataFloat(0, 36, InstanceIdx); Context.MapUpdate.Particles.Velocity.y = InputDataFloat(0, 37, InstanceIdx); Context.MapUpdate.Particles.Velocity.z = InputDataFloat(0, 38, InstanceIdx); Context.MapUpdate.Particles.Previous.Position = Context.MapUpdate.Particles.Position; Context.MapUpdate.Particles.Previous.Velocity = Context.MapUpdate.Particles.Velocity; Context.MapUpdate.DataInstance.Alive=true; } void ConditionalInterpolateParameters(inout FSimulationContext Context) { InterpolateParameters(Context); } void TransferAttributes(inout FSimulationContext Context) { Context.MapUpdate.Particles = Context.MapSpawn.Particles; Context.MapUpdate.Particles.Previous.Velocity = Context.MapSpawn.Particles.Velocity; Context.MapUpdate.Particles.Previous.Position = Context.MapSpawn.Particles.Position; } void StoreUpdateVariables(in FSimulationContext Context) { const bool bValid = Context.MapUpdate.DataInstance.Alive; const int WriteIndex = OutputIndex(0, true, bValid); if (bValid) { OutputDataFloat(0, 0, WriteIndex, Context.MapUpdate.Particles.Age); OutputDataFloat(0, 1, WriteIndex, Context.MapUpdate.Particles.Color.r); OutputDataFloat(0, 2, WriteIndex, Context.MapUpdate.Particles.Color.g); OutputDataFloat(0, 3, WriteIndex, Context.MapUpdate.Particles.Color.b); OutputDataFloat(0, 4, WriteIndex, Context.MapUpdate.Particles.Color.a); OutputDataFloat(0, 5, WriteIndex, Context.MapUpdate.Particles.Direction.x); OutputDataFloat(0, 6, WriteIndex, Context.MapUpdate.Particles.Direction.y); OutputDataFloat(0, 7, WriteIndex, Context.MapUpdate.Particles.Direction.z); OutputDataFloat(0, 8, WriteIndex, Context.MapUpdate.Particles.Lifetime); OutputDataFloat(0, 9, WriteIndex, Context.MapUpdate.Particles.Mass); OutputDataFloat(0, 10, WriteIndex, Context.MapUpdate.Particles.MaterialRandom); OutputDataFloat(0, 11, WriteIndex, Context.MapUpdate.Particles.NormalizedAge); OutputDataFloat(0, 12, WriteIndex, Context.MapUpdate.Particles.Position.x); OutputDataFloat(0, 13, WriteIndex, Context.MapUpdate.Particles.Position.y); OutputDataFloat(0, 14, WriteIndex, Context.MapUpdate.Particles.Position.z); OutputDataFloat(0, 15, WriteIndex, Context.MapUpdate.Particles.Presolve.PhysicsForce.x); OutputDataFloat(0, 16, WriteIndex, Context.MapUpdate.Particles.Presolve.PhysicsForce.y); OutputDataFloat(0, 17, WriteIndex, Context.MapUpdate.Particles.Presolve.PhysicsForce.z); OutputDataFloat(0, 18, WriteIndex, Context.MapUpdate.Particles.Presolve.Position.x); OutputDataFloat(0, 19, WriteIndex, Context.MapUpdate.Particles.Presolve.Position.y); OutputDataFloat(0, 20, WriteIndex, Context.MapUpdate.Particles.Presolve.Position.z); OutputDataFloat(0, 21, WriteIndex, Context.MapUpdate.Particles.Presolve.Velocity.x); OutputDataFloat(0, 22, WriteIndex, Context.MapUpdate.Particles.Presolve.Velocity.y); OutputDataFloat(0, 23, WriteIndex, Context.MapUpdate.Particles.Presolve.Velocity.z); OutputDataFloat(0, 24, WriteIndex, Context.MapUpdate.Particles.Previous.Position.x); OutputDataFloat(0, 25, WriteIndex, Context.MapUpdate.Particles.Previous.Position.y); OutputDataFloat(0, 26, WriteIndex, Context.MapUpdate.Particles.Previous.Position.z); OutputDataFloat(0, 27, WriteIndex, Context.MapUpdate.Particles.Previous.Velocity.x); OutputDataFloat(0, 28, WriteIndex, Context.MapUpdate.Particles.Previous.Velocity.y); OutputDataFloat(0, 29, WriteIndex, Context.MapUpdate.Particles.Previous.Velocity.z); OutputDataFloat(0, 30, WriteIndex, Context.MapUpdate.Particles.Scale.x); OutputDataFloat(0, 31, WriteIndex, Context.MapUpdate.Particles.Scale.y); OutputDataFloat(0, 32, WriteIndex, Context.MapUpdate.Particles.Scale.z); OutputDataFloat(0, 33, WriteIndex, Context.MapUpdate.Particles.SpriteRotation); OutputDataFloat(0, 34, WriteIndex, Context.MapUpdate.Particles.SpriteSize.x); OutputDataFloat(0, 35, WriteIndex, Context.MapUpdate.Particles.SpriteSize.y); OutputDataInt(0, 0, WriteIndex, Context.MapUpdate.Particles.UniqueID); OutputDataFloat(0, 36, WriteIndex, Context.MapUpdate.Particles.Velocity.x); OutputDataFloat(0, 37, WriteIndex, Context.MapUpdate.Particles.Velocity.y); OutputDataFloat(0, 38, WriteIndex, Context.MapUpdate.Particles.Velocity.z); } } void CopyInstance(in int InstanceIdx) { // TODO! } /* * CS wrapper for our generated code; calls spawn and update functions on the corresponding instances in the buffer */ [numthreads(THREADGROUP_SIZE, 1, 1)] void SimulateMainComputeCS( uint3 DispatchThreadId : SV_DispatchThreadID, uint3 GroupThreadId : SV_GroupThreadID) { GLinearThreadId = DispatchThreadId.x + (DispatchThreadId.y * DispatchThreadIdToLinear); GDispatchThreadId = DispatchThreadId; GGroupThreadId = GroupThreadId; GCurrentPhase = -1; GEmitterTickCounter = EmitterTickCounter; GSimStart = SimStart; GRandomSeedOffset = 0; /* if(CopyInstancesBeforeStart == 1) { UpdateStartInstance = 0; } */ // The CPU code will set UpdateStartInstance to 0 and ReadInstanceCountOffset to -1 for stages. const uint InstanceID = UpdateStartInstance + GLinearThreadId; if (ReadInstanceCountOffset == 0xFFFFFFFF) { GSpawnStartInstance = 0; } else { GSpawnStartInstance = RWInstanceCounts[ReadInstanceCountOffset]; // needed by ExecIndex() } bool bRunUpdateLogic, bRunSpawnLogic; #if USE_SIMULATION_STAGES int IterationInterfaceInstanceCount = SimulationStage_GetInstanceCount(); if (IterationInterfaceInstanceCount > 0) { bRunUpdateLogic = InstanceID < IterationInterfaceInstanceCount && GSimStart != 1; bRunSpawnLogic = InstanceID < IterationInterfaceInstanceCount && GSimStart == 1; } else #endif // USE_SIMULATION_STAGES { const int MaxInstances = GSpawnStartInstance + SpawnedInstances; bRunUpdateLogic = InstanceID < GSpawnStartInstance && InstanceID < UpdateStartInstance + MaxInstances; bRunSpawnLogic = InstanceID >= GSpawnStartInstance && InstanceID < UpdateStartInstance + MaxInstances; } const float RandomSeedInitialisation = NiagaraInternalNoise(InstanceID * 16384, 0 * 8196, (bRunUpdateLogic ? 4096 : 0) + EmitterTickCounter); // initialise the random state seed FSimulationContext Context = (FSimulationContext)0; BRANCH if (bRunUpdateLogic) { GCurrentPhase = GUpdatePhase; SetupExecIndexForGPU(); InitConstants(Context); LoadUpdateVariables(Context, InstanceID); ReadDataSets(Context); } else if (bRunSpawnLogic) { GCurrentPhase = GSpawnPhase; #if USE_SIMULATION_STAGES // Only process the spawn info for particle-based stages. Stages with an iteration interface expect the exec index to simply be the thread index. if (IterationInterfaceInstanceCount > 0) { SetupExecIndexForGPU(); } else #endif { SetupExecIndexAndSpawnInfoForGPU(); } InitConstants(Context); InitSpawnVariables(Context); ReadDataSets(Context); Context.MapSpawn.Particles.UniqueID = Engine_Emitter_TotalSpawnedParticles + ExecIndex(); ConditionalInterpolateParameters(Context); SimulateMapSpawn(Context); GCurrentPhase = GUpdatePhase; TransferAttributes(Context); } if (bRunUpdateLogic || bRunSpawnLogic) { SimulateMapUpdate(Context); WriteDataSets(Context); } StoreUpdateVariables(Context); } -88@$Local_CurlNoiseForce001_VectorField NiagaraDataInterfaceVectorFieldEmitter_VectorField32 NiagaraDataInterfaceVectorField!SampleField_EmitterVectorField32!Local_CurlNoiseForce_VectorField NiagaraDataInterfaceVectorFieldEmitter_AudioSpectrum"NiagaraDataInterfaceAudioSpectrum8#AudioSpectrum_EmitterAudioSpectrumEmitter_AudioOscilloscope&NiagaraDataInterfaceAudioOscilloscope+SampleAudioBuffer_EmitterAudioOscilloscopeEmitter_AudioSpectrum001"NiagaraDataInterfaceAudioSpectrum8&AudioSpectrum_EmitterAudioSpectrum001Q67_-8_8i45s8@tkwu5545s8@tkwu5545s8@tkwu5545s8@tkwu5545s8@tkwu55 45s8@tkwu55Q>A38`7NiagaraScript /Game/Audio4.Audio4:Empty.NiagaraScriptSource_0.NiagaraGraph_0.NiagaraNodeAssignment_0.SetVariables_619FBC7841F4E96144B94D92F32F22FESbNiagaraNodeAssigmentAssignmentNodeDesc)Sets one or more variables in the stack.`Q>DQ898O`- 88|kwukwukwukwukwu$kwu(kwu0kwu4kwu8kwu<kwu@kwuLkwuPkwu\kwu`kwudkwuhkwulkwuxkwu|kwukwukwu-]????@????@@@B????? A7SONiagaraScript /Niagara/DefaultAssets/DefaultEmitter.DefaultEmitter:SpawnScript_b8~u8rO}`,@| 'iß Q>D&-7InterpolatedSpawnEmitter.LocalspacefNiagaraEmitter /Game/NiagaraAudioVisualization/Effects/NS_DansingSmoke.NS_DansingSmoke:DansingSmoke_0GPUComputeSimEL;8A;-]p^w@¾l-8E8;-]4ޕ(f:~-]ie(٩85&-]]{Fis{U-]@,AS~VnW-]4ޕ(f:~-]/ !Y!4׋-]E{UѳH`u-]@,AS~VnW-]E{UѳH`u-]@,AS~VnW-]E{UѳH`u-]@,AS~VnW-]ovh j0kT-]t E#(֢PNЕ-]ȑ#7&kBz-]ȑ#7&kBz-]r|G8^)J2(݋-]/2eb:^|롵 =.-]r|G8^)J2(݋-]r|G8^)J2(݋-]}߉i|=QS]-]k:PhjRhfu!_3z-] [ ɡa|jV-] [ ɡa|jV-] [ ɡa|jV-]4ޕ(f:~-]v4ŵ񊑍-=R-]؉x6d(Z1qSj)--]v4ŵ񊑍-=R-]؉x6d(Z1qSj)--]v4ŵ񊑍-=R-]؉x6d(Z1qSj)--]Kq(j)Kԋ-]ciҏNnZgв8Dvҋ-] s68CV2L>؋-]4ޕ(f:~-]r|G8^)J2(݋-]r|G8^)J2(݋-]r|G8^)J2(݋-].'HDPR(E-] PlAGtnGq|R-] s68CV2L>؋-]4ޕ(f:~-]r|G8^)J2(݋-]r|G8^)J2(݋-]r|G8^)J2(݋-].'HDPR(E-] PlAGtnGq|R-].$7LjXaU^-]4ޕ(f:~-]̩"Ew0_%Zps-]؉x6d(Z1qSj)--]N>) &8|\[^P- *-]O"gZ5V.h[΋-]4ޕ(f:~-]H<|H+-]r|G8^)J2(݋-]UJ\핛GKʄn-]4ޕ(f:~-]r|G8^)J2(݋-]r|G8^)J2(݋-]=?ND&-7InterpolatedSpawnEmitter.LocalspacefNiagaraEmitter /Game/NiagaraAudioVisualization/Effects/NS_DansingSmoke.NS_DansingSmoke:DansingSmoke_0GPUComputeSimEL;8A;-]p^w@¾l-8E8;-]4ޕ(f:~-]ie(٩85&-]]{Fis{U-]@,AS~VnW-]4ޕ(f:~-]/ !Y!4׋-]E{UѳH`u-]@,AS~VnW-]E{UѳH`u-]@,AS~VnW-]E{UѳH`u-]@,AS~VnW-]ovh j0kT-]t E#(֢PNЕ-]ȑ#7&kBz-]ȑ#7&kBz-]r|G8^)J2(݋-]/2eb:^|롵 =.-]r|G8^)J2(݋-]r|G8^)J2(݋-]}߉i|=QS]-]k:PhjRhfu!_3z-] [ ɡa|jV-] [ ɡa|jV-] [ ɡa|jV-]4ޕ(f:~-]v4ŵ񊑍-=R-]؉x6d(Z1qSj)--]v4ŵ񊑍-=R-]؉x6d(Z1qSj)--]v4ŵ񊑍-=R-]؉x6d(Z1qSj)--]Kq(j)Kԋ-]ciҏNnZgв8Dvҋ-] s68CV2L>؋-]4ޕ(f:~-]r|G8^)J2(݋-]r|G8^)J2(݋-]r|G8^)J2(݋-].'HDPR(E-] PlAGtnGq|R-] s68CV2L>؋-]4ޕ(f:~-]r|G8^)J2(݋-]r|G8^)J2(݋-]r|G8^)J2(݋-].'HDPR(E-] PlAGtnGq|R-].$7LjXaU^-]4ޕ(f:~-]̩"Ew0_%Zps-]؉x6d(Z1qSj)--]N>) &8|\[^P- *-]O"gZ5V.h[΋-]4ޕ(f:~-]H<|H+-]r|G8^)J2(݋-]UJ\핛GKʄn-]4ޕ(f:~-]r|G8^)J2(݋-]r|G8^)J2(݋-]=?N4-848x(kwulkwukwukwukwukwukwukwukwukwukwukwu kwu kwu0kwu2kwuykwukwu-M88h45s8@tkwu-588I55HL45s8@tkwu-[88&I45-88xkwukwu-88Lxkwu5PLQLKL@LVS lvTLUL[LSL3k55S 45-88xkwukwu-88Lxkwu5PLQLKL@LVS lvTLUL[LSL3k55S 55HL45s8@tkwu-588I55HL45s8@tkwu-88I458-88x,kwukwuhkwu-88Lx,kwu5PLQLKL@LVS lvTLUL[LSL3k55S 55HL45s8@tkwu-88I45-88xkwukwuhkwu-88Lx,kwu5PLQLKL@LVS lvTLUL[LSL3k55S 45-88xkwukwuhkwu-88Lx,kwu5PLQLKL@LVS lvTLUL[LSL3k55S 55HL45s8@tkwu-88I458-88x,kwukwuhkwu-88Lx,kwu5PLQLKL@LVS lvTLUL[LSL3k55S 55HLd-8d8Z455-Lk-58k8455-Lk-58k84585-Lk-58k84585-Lk-58k8455-Lk-58k8455-Lk-58k86-868oh5dg5dh5g5h5ag5`h5g5h5g5h5g5h5g5h5g5h5g5h5g5h5g5h59g58h5qg5ph5(g5h5)g5h5*g57ll// Shader generated by Niagara HLSL Translator struct NiagaraRandInfo { int Seed1; int Seed2; int Seed3; }; struct NiagaraID { int Index; int AcquireTag; }; cbuffer FNiagaraGlobalParameters { float Engine_DeltaTime; float Engine_InverseDeltaTime; float Engine_Time; float Engine_RealTime; int Engine_QualityLevel; int Engine_PaddingInt32_0; int Engine_PaddingInt32_1; int Engine_PaddingInt32_2; } cbuffer FNiagaraSystemParameters { float Engine_Owner_TimeSinceRendered; float Engine_Owner_LODDistance; float Engine_Owner_LODDistanceFraction; float Engine_System_Age; int Engine_Owner_ExecutionState; int Engine_System_TickCount; int Engine_System_NumEmitters; int Engine_System_NumEmittersAlive; int Engine_System_SignificanceIndex; int Engine_System_PaddingInt32_0; int Engine_System_PaddingInt32_1; int Engine_System_PaddingInt32_2; } cbuffer FNiagaraOwnerParameters { float4x4 Engine_Owner_SystemLocalToWorld; float4x4 Engine_Owner_SystemWorldToLocal; float4x4 Engine_Owner_SystemLocalToWorldTransposed; float4x4 Engine_Owner_SystemWorldToLocalTransposed; float4x4 Engine_Owner_SystemLocalToWorldNoScale; float4x4 Engine_Owner_SystemWorldToLocalNoScale; float4 Engine_Owner_Rotation; float4 Engine_Owner_Position; float4 Engine_Owner_Velocity; float4 Engine_Owner_SystemXAxis; float4 Engine_Owner_SystemYAxis; float4 Engine_Owner_SystemZAxis; float4 Engine_Owner_Scale; } cbuffer FNiagaraEmitterParameters { int Engine_Emitter_NumParticles; int Engine_Emitter_TotalSpawnedParticles; float Engine_Emitter_SpawnCountScale; float Emitter_Age; int Emitter_RandomSeed; int Engine_Emitter_InstanceSeed; int Engine_Emitter_PaddingInt32_0; int Engine_Emitter_PaddingInt32_1; } cbuffer FNiagaraExternalParameters { float Constants_Emitter_InitializeParticle_Lifetime; float4 Constants_Emitter_InitializeParticle_Color; float Constants_Emitter_InitializeParticle_Mass; float2 Constants_Emitter_InitializeParticle_SpriteSize; float Constants_Emitter_InitializeParticle_SpriteRotation; float3 Constants_Emitter_InitializeParticle_MeshScale; float Constants_Emitter_TorusLocation_SurfacePosition; float Constants_Emitter_TorusLocation_UDistribution; float Constants_Emitter_TorusLocation_VDistribution; int Constants_Emitter_TorusLocation_RandomSeed; float Constants_Emitter_TorusLocation_HandleRadius; float Constants_Emitter_TorusLocation_LargeRadius; float3 Constants_Emitter_TorusLocation_NonUniformScale; float3 Constants_Emitter_TorusLocation_TorusAxis; float Constants_Emitter_TorusLocation_NormalizedAngleAroundTorusAxis; float3 Constants_Emitter_TorusLocation_Offset; int Constants_Emitter_TorusLocation_SpawnGroupMask; int Constants_Emitter_CurlNoiseForce001_RandomSeed; float Constants_Emitter_CurlNoiseForce001_NoiseFrequency; float3 Constants_Emitter_CurlNoiseForce001_PanNoiseField; float Constants_Emitter_CurlNoiseForce001_CurlNoiseConeMaskAngle; float Constants_Emitter_CurlNoiseForce001_CurlNoiseConeMaskFalloffAngle; float Constants_Emitter_CurlNoiseForce001_NoiseStrength; int Constants_Emitter_CurlNoiseForce_RandomSeed; float Constants_Emitter_CurlNoiseForce_NoiseFrequency; float3 Constants_Emitter_CurlNoiseForce_PanNoiseField; float Constants_Emitter_CurlNoiseForce_CurlNoiseConeMaskAngle; float Constants_Emitter_CurlNoiseForce_CurlNoiseConeMaskFalloffAngle; float Constants_Emitter_CurlNoiseForce_NoiseStrength; float Constants_Emitter_PointAttractionForce_AttractionRadius; float Constants_Emitter_PointAttractionForce_AttractionStrength; float Constants_Emitter_PointAttractionForce_FalloffExponent; float Constants_Emitter_PointAttractionForce_KillRadius; float Constants_Emitter_Drag_Drag; float Constants_Emitter_Drag_RotationalDrag; float Constants_Emitter_VortexForce_InfluenceFalloffRadius; float3 Constants_Emitter_VortexForce_VortexAxis; float Constants_Emitter_VortexForce_VortexForceAmount; float Constants_Emitter_VortexForce_OriginPullAmount; float Constants_Emitter_SolveForcesAndVelocity_SpeedLimit; float Constants_Emitter_SolveForcesAndVelocity_AccelerationLimit; int Engine_ExecutionCount; float Emitter_SpawnRate; float Emitter_SpawnInterval; float Emitter_InterpSpawnStartDt; int Emitter_SpawnGroup; } cbuffer PREV_FNiagaraGlobalParameters { float PREV_Engine_DeltaTime; float PREV_Engine_InverseDeltaTime; float PREV_Engine_Time; float PREV_Engine_RealTime; int PREV_Engine_QualityLevel; int PREV_Engine_PaddingInt32_0; int PREV_Engine_PaddingInt32_1; int PREV_Engine_PaddingInt32_2; } cbuffer PREV_FNiagaraSystemParameters { float PREV_Engine_Owner_TimeSinceRendered; float PREV_Engine_Owner_LODDistance; float PREV_Engine_Owner_LODDistanceFraction; float PREV_Engine_System_Age; int PREV_Engine_Owner_ExecutionState; int PREV_Engine_System_TickCount; int PREV_Engine_System_NumEmitters; int PREV_Engine_System_NumEmittersAlive; int PREV_Engine_System_SignificanceIndex; int PREV_Engine_System_PaddingInt32_0; int PREV_Engine_System_PaddingInt32_1; int PREV_Engine_System_PaddingInt32_2; } cbuffer PREV_FNiagaraOwnerParameters { float4x4 PREV_Engine_Owner_SystemLocalToWorld; float4x4 PREV_Engine_Owner_SystemWorldToLocal; float4x4 PREV_Engine_Owner_SystemLocalToWorldTransposed; float4x4 PREV_Engine_Owner_SystemWorldToLocalTransposed; float4x4 PREV_Engine_Owner_SystemLocalToWorldNoScale; float4x4 PREV_Engine_Owner_SystemWorldToLocalNoScale; float4 PREV_Engine_Owner_Rotation; float4 PREV_Engine_Owner_Position; float4 PREV_Engine_Owner_Velocity; float4 PREV_Engine_Owner_SystemXAxis; float4 PREV_Engine_Owner_SystemYAxis; float4 PREV_Engine_Owner_SystemZAxis; float4 PREV_Engine_Owner_Scale; } cbuffer PREV_FNiagaraEmitterParameters { int PREV_Engine_Emitter_NumParticles; int PREV_Engine_Emitter_TotalSpawnedParticles; float PREV_Engine_Emitter_SpawnCountScale; float PREV_Emitter_Age; int PREV_Emitter_RandomSeed; int PREV_Engine_Emitter_InstanceSeed; int PREV_Engine_Emitter_PaddingInt32_0; int PREV_Engine_Emitter_PaddingInt32_1; } cbuffer PREV_FNiagaraExternalParameters { float PREV_Constants_Emitter_InitializeParticle_Lifetime; float4 PREV_Constants_Emitter_InitializeParticle_Color; float PREV_Constants_Emitter_InitializeParticle_Mass; float2 PREV_Constants_Emitter_InitializeParticle_SpriteSize; float PREV_Constants_Emitter_InitializeParticle_SpriteRotation; float3 PREV_Constants_Emitter_InitializeParticle_MeshScale; float PREV_Constants_Emitter_TorusLocation_SurfacePosition; float PREV_Constants_Emitter_TorusLocation_UDistribution; float PREV_Constants_Emitter_TorusLocation_VDistribution; int PREV_Constants_Emitter_TorusLocation_RandomSeed; float PREV_Constants_Emitter_TorusLocation_HandleRadius; float PREV_Constants_Emitter_TorusLocation_LargeRadius; float3 PREV_Constants_Emitter_TorusLocation_NonUniformScale; float3 PREV_Constants_Emitter_TorusLocation_TorusAxis; float PREV_Constants_Emitter_TorusLocation_NormalizedAngleAroundTorusAxis; float3 PREV_Constants_Emitter_TorusLocation_Offset; int PREV_Constants_Emitter_TorusLocation_SpawnGroupMask; int PREV_Constants_Emitter_CurlNoiseForce001_RandomSeed; float PREV_Constants_Emitter_CurlNoiseForce001_NoiseFrequency; float3 PREV_Constants_Emitter_CurlNoiseForce001_PanNoiseField; float PREV_Constants_Emitter_CurlNoiseForce001_CurlNoiseConeMaskAngle; float PREV_Constants_Emitter_CurlNoiseForce001_CurlNoiseConeMaskFalloffAngle; float PREV_Constants_Emitter_CurlNoiseForce001_NoiseStrength; int PREV_Constants_Emitter_CurlNoiseForce_RandomSeed; float PREV_Constants_Emitter_CurlNoiseForce_NoiseFrequency; float3 PREV_Constants_Emitter_CurlNoiseForce_PanNoiseField; float PREV_Constants_Emitter_CurlNoiseForce_CurlNoiseConeMaskAngle; float PREV_Constants_Emitter_CurlNoiseForce_CurlNoiseConeMaskFalloffAngle; float PREV_Constants_Emitter_CurlNoiseForce_NoiseStrength; float PREV_Constants_Emitter_PointAttractionForce_AttractionRadius; float PREV_Constants_Emitter_PointAttractionForce_AttractionStrength; float PREV_Constants_Emitter_PointAttractionForce_FalloffExponent; float PREV_Constants_Emitter_PointAttractionForce_KillRadius; float PREV_Constants_Emitter_Drag_Drag; float PREV_Constants_Emitter_Drag_RotationalDrag; float PREV_Constants_Emitter_VortexForce_InfluenceFalloffRadius; float3 PREV_Constants_Emitter_VortexForce_VortexAxis; float PREV_Constants_Emitter_VortexForce_VortexForceAmount; float PREV_Constants_Emitter_VortexForce_OriginPullAmount; float PREV_Constants_Emitter_SolveForcesAndVelocity_SpeedLimit; float PREV_Constants_Emitter_SolveForcesAndVelocity_AccelerationLimit; int PREV_Engine_ExecutionCount; float PREV_Emitter_SpawnRate; float PREV_Emitter_SpawnInterval; float PREV_Emitter_InterpSpawnStartDt; int PREV_Emitter_SpawnGroup; } struct FParamMap0_VortexForce { float3 VortexOrigin; }; struct FParamMap0_Transient { bool FirstFrame; float PhysicsDeltaTime; float PhysicsDrag; float3 PhysicsForce; float PhysicsRotationalDrag; }; struct FParamMap0_TorusLocation { int CoordinateSpace; bool EnableScale; bool FixedRandomSeed; float NormalizedAngleAroundTorusAxis; bool OverrideRandomness; bool OverrideSeed; int RandomnessMode; float3 TorusAxis; float3 TorusOrigin; }; struct FParamMap0_SolveForcesAndVelocity { float DeltaTime; float3 Force; float Mass; float3 Position; float3 PreviousVelocity; float3 Velocity; bool WritetoIntrinsicProperties; }; struct FParamMap0_SetVariables_619FBC7841F4E96144B94D92F32F22FE_Particles { float3 Direction; }; struct FParamMap0_SetVariables_619FBC7841F4E96144B94D92F32F22FE { FParamMap0_SetVariables_619FBC7841F4E96144B94D92F32F22FE_Particles Particles; }; struct FParamMap0_PointAttractionForce { float3 AttractorPosition; bool KillWithinRadius; bool UseFalloff; }; struct FParamMap0_ParticleState { float DeltaTime; float Lifetime; }; struct FParamMap0_Particles_Previous { float3 Position; float3 Velocity; }; struct FParamMap0_Particles_Presolve { float3 PhysicsForce; float3 Position; float3 Velocity; }; struct FParamMap0_Particles { float Age; float4 Color; float3 Direction; float Lifetime; float Mass; float MaterialRandom; float NormalizedAge; float3 Position; FParamMap0_Particles_Presolve Presolve; FParamMap0_Particles_Previous Previous; float3 Scale; float SpriteRotation; float2 SpriteSize; int UniqueID; float3 Velocity; }; struct FParamMap0_OUTPUT_VAR_TorusLocation { float3 TorusBitangent; float3 TorusNormal; float3 TorusTangent; float3 TorusVector; }; struct FParamMap0_OUTPUT_VAR_SolveForcesAndVelocity { float IncomingPhysicsDrag; float3 IncomingPhysicsForce; float3 Position; float3 Velocity; }; struct FParamMap0_OUTPUT_VAR_ParticleState { bool FirstFrame; }; struct FParamMap0_OUTPUT_VAR_CurlNoiseForce001 { float3 CurlNoiseForce; }; struct FParamMap0_OUTPUT_VAR_CurlNoiseForce { float3 CurlNoiseForce; }; struct FParamMap0_OUTPUT_VAR { FParamMap0_OUTPUT_VAR_CurlNoiseForce CurlNoiseForce; FParamMap0_OUTPUT_VAR_CurlNoiseForce001 CurlNoiseForce001; FParamMap0_OUTPUT_VAR_ParticleState ParticleState; FParamMap0_OUTPUT_VAR_SolveForcesAndVelocity SolveForcesAndVelocity; FParamMap0_OUTPUT_VAR_TorusLocation TorusLocation; }; struct FParamMap0_Local_VortexForce { float ForceAmount; float InverseNormalizedRange; float NormalizedRange; float3 OriginVector; float3 ParticlesPosition; float3 VortexOrigin; float3 VortexVector; }; struct FParamMap0_Local_TorusLocation { float RandomRadius; float RandomU; float RandomV; float3 TorusBitangent; float3 TorusNormal; float3 TorusTangent; float3 TorusVector; }; struct FParamMap0_Local_SolveForcesAndVelocity { float DeltaTime; float Mass; float3 PhysicsForce; }; struct FParamMap0_Local_PointAttractionForce { float3 PointOriginVec; float PointOriginVecLength; }; struct FParamMap0_Local_CurlNoiseForce001 { float AgeAdvancement; float DeterministicOffset; float Falloff; float3 SampledNoise; float3 SamplePosition; }; struct FParamMap0_Local_CurlNoiseForce { float AgeAdvancement; float DeterministicOffset; float Falloff; float3 SampledNoise; float3 SamplePosition; }; struct FParamMap0_Local { FParamMap0_Local_CurlNoiseForce CurlNoiseForce; FParamMap0_Local_CurlNoiseForce001 CurlNoiseForce001; FParamMap0_Local_PointAttractionForce PointAttractionForce; FParamMap0_Local_SolveForcesAndVelocity SolveForcesAndVelocity; FParamMap0_Local_TorusLocation TorusLocation; FParamMap0_Local_VortexForce VortexForce; }; struct FParamMap0_Interpolation { float Emitter_InterpSpawnStartDt; int Emitter_SpawnGroup; float Emitter_SpawnInterval; int InterpSpawn_Index; float InterpSpawn_InvSpawnTime; float InterpSpawn_InvUpdateTime; float InterpSpawn_SpawnTime; float InterpSpawn_UpdateTime; float SpawnInterp; }; struct FParamMap0_InitializeParticle { float MaterialRandom; float3 Position; bool WriteColor; bool WriteLifetime; bool WriteMass; bool WriteMaterialRandom; bool WritePosition; bool WriteScale; bool WriteSpriteRotation; bool WriteSpriteSize; }; struct FParamMap0_Engine_System { float Age; int NumEmitters; int NumEmittersAlive; int PaddingInt32_0; int PaddingInt32_1; int PaddingInt32_2; int SignificanceIndex; int TickCount; }; struct FParamMap0_Engine_Owner { int ExecutionState; float LODDistance; float LODDistanceFraction; float3 Position; float4 Rotation; float3 Scale; float4x4 SystemLocalToWorld; float4x4 SystemLocalToWorldNoScale; float4x4 SystemLocalToWorldTransposed; float4x4 SystemWorldToLocal; float4x4 SystemWorldToLocalNoScale; float4x4 SystemWorldToLocalTransposed; float3 SystemXAxis; float3 SystemYAxis; float3 SystemZAxis; float TimeSinceRendered; float3 Velocity; }; struct FParamMap0_Engine_Emitter { int InstanceSeed; int NumParticles; int PaddingInt32_0; int PaddingInt32_1; float SpawnCountScale; int TotalSpawnedParticles; }; struct FParamMap0_Engine { float DeltaTime; FParamMap0_Engine_Emitter Emitter; int ExecutionCount; float InverseDeltaTime; FParamMap0_Engine_Owner Owner; int PaddingInt32_0; int PaddingInt32_1; int PaddingInt32_2; int QualityLevel; float RealTime; FParamMap0_Engine_System System; float Time; }; struct FParamMap0_Emitter { float Age; float InterpSpawnStartDt; int RandomSeed; int SpawnGroup; float SpawnInterval; float SpawnRate; }; struct FParamMap0_DataInstance { bool Alive; }; struct FParamMap0_CurlNoiseForce001 { float CurlNoiseConeMaskAngle; float3 CurlNoiseConeMaskAxis; float CurlNoiseConeMaskFalloffAngle; float3 SamplePosition; }; struct FParamMap0_CurlNoiseForce { float CurlNoiseConeMaskAngle; float3 CurlNoiseConeMaskAxis; float CurlNoiseConeMaskFalloffAngle; float3 SamplePosition; }; struct FParamMap0_Constants_Emitter_VortexForce { float InfluenceFalloffRadius; float OriginPullAmount; float3 VortexAxis; float VortexForceAmount; }; struct FParamMap0_Constants_Emitter_TorusLocation { float HandleRadius; float LargeRadius; float3 NonUniformScale; float NormalizedAngleAroundTorusAxis; float3 Offset; int RandomSeed; int SpawnGroupMask; float SurfacePosition; float3 TorusAxis; float UDistribution; float VDistribution; }; struct FParamMap0_Constants_Emitter_SolveForcesAndVelocity { float AccelerationLimit; float SpeedLimit; }; struct FParamMap0_Constants_Emitter_PointAttractionForce { float AttractionRadius; float AttractionStrength; float FalloffExponent; float KillRadius; }; struct FParamMap0_Constants_Emitter_InitializeParticle { float4 Color; float Lifetime; float Mass; float3 MeshScale; float SpriteRotation; float2 SpriteSize; }; struct FParamMap0_Constants_Emitter_Drag { float Drag; float RotationalDrag; }; struct FParamMap0_Constants_Emitter_CurlNoiseForce001 { float CurlNoiseConeMaskAngle; float CurlNoiseConeMaskFalloffAngle; float NoiseFrequency; float NoiseStrength; float3 PanNoiseField; int RandomSeed; }; struct FParamMap0_Constants_Emitter_CurlNoiseForce { float CurlNoiseConeMaskAngle; float CurlNoiseConeMaskFalloffAngle; float NoiseFrequency; float NoiseStrength; float3 PanNoiseField; int RandomSeed; }; struct FParamMap0_Constants_Emitter { FParamMap0_Constants_Emitter_CurlNoiseForce CurlNoiseForce; FParamMap0_Constants_Emitter_CurlNoiseForce001 CurlNoiseForce001; FParamMap0_Constants_Emitter_Drag Drag; FParamMap0_Constants_Emitter_InitializeParticle InitializeParticle; FParamMap0_Constants_Emitter_PointAttractionForce PointAttractionForce; FParamMap0_Constants_Emitter_SolveForcesAndVelocity SolveForcesAndVelocity; FParamMap0_Constants_Emitter_TorusLocation TorusLocation; FParamMap0_Constants_Emitter_VortexForce VortexForce; }; struct FParamMap0_Constants { FParamMap0_Constants_Emitter Emitter; }; struct FParamMap0 { FParamMap0_Constants Constants; FParamMap0_CurlNoiseForce CurlNoiseForce; FParamMap0_CurlNoiseForce001 CurlNoiseForce001; FParamMap0_DataInstance DataInstance; FParamMap0_Emitter Emitter; FParamMap0_Engine Engine; FParamMap0_InitializeParticle InitializeParticle; FParamMap0_Interpolation Interpolation; FParamMap0_Local Local; FParamMap0_OUTPUT_VAR OUTPUT_VAR; FParamMap0_Particles Particles; FParamMap0_ParticleState ParticleState; FParamMap0_PointAttractionForce PointAttractionForce; FParamMap0_SetVariables_619FBC7841F4E96144B94D92F32F22FE SetVariables_619FBC7841F4E96144B94D92F32F22FE; FParamMap0_SolveForcesAndVelocity SolveForcesAndVelocity; FParamMap0_TorusLocation TorusLocation; FParamMap0_Transient Transient; FParamMap0_VortexForce VortexForce; }; struct FSimulationContext { FParamMap0 MapSpawn; FParamMap0 MapUpdate; }; static float HackSpawnInterp = 1.0; void ParticleOwnerPosition_Emitter_Func_(out float3 Out_OutPosition, inout FSimulationContext Context); void GetRandomInfo_Emitter_Determinism_false_Func_(int In_Seed, int In_Engine_System_TickCount, bool In_OverrideSeed, int In_Particles_UniqueID, int In_Emitter_RandomSeed, bool In_FixedOverrideSeed, int In_RandomnessMode, out NiagaraRandInfo Out_RandomInfo, out bool Out_UseDeterministicRandoms, inout FSimulationContext Context); void RandomRangeFloat_Func_(float In_Min, float In_Max, int In_Seed, int In_RandomnessMode, bool In_OverrideSeed, out float Out_Result, inout FSimulationContext Context); void InitializeParticle_SimulationPosition_Emitter_Func_(out float3 Out_OutPosition, inout FSimulationContext Context); void InitializeParticle_Emitter_Func_(inout FSimulationContext Context); void RandomRange_Func_(float In_Min, float In_Max, int In_Seed, int In_RandomnessMode, bool In_OverrideSeed, bool In_FixedOverrideSeed, out float Out_Result, inout FSimulationContext Context); void CustomHlslE548EF1441649C36D35230847F667303_Func_(float In_a, float In_c, float In_cosu, float In_sinu, float In_cosv, float In_sinv, out float3 Out_Torus, out float3 Out_TorusTangent, out float3 Out_TorusBitangent, out float3 Out_TorusNormal); void ParametricTorus_Func_(float In_HandleRadius, float In_LargeRadius, float In_U, float In_V, out float3 Out_TorusVector, out float3 Out_TorusTangent, out float3 Out_TorusBitangent, out float3 Out_TorusNormal, inout FSimulationContext Context); void TransformBase_Func_(int In_SourceSpace, int In_DestinationSpace, float4x4 In_LocalToWorldTransform, float4x4 In_WorldToLocalTransform, bool In_bLocalSpace, out bool Out_bUseOriginal, out float4x4 Out_OutTransform, out bool Out_LocalToWorld, inout FSimulationContext Context); void TorusLocation_NF_TransformVector_Emitter_Func_(float3 In_InVector, int In_SourceSpace, int In_DestinationSpace, bool In_ApplyScale, out float3 Out_OutVector, inout FSimulationContext Context); void TorusLocation_Emitter_Func_(inout FSimulationContext Context); void SetVariables_619FBC7841F4E96144B94D92F32F22FE_Emitter_Func_(inout FSimulationContext Context); void ParticleState_Emitter_Func_(inout FSimulationContext Context); void SampleField_EmitterVectorField32(float3 In_SamplePoint, out float3 Out_SampledValue); void CurlNoiseForce001_Emitter_Func_(int In_Emitter_RandomSeed, inout FSimulationContext Context); void CurlNoiseForce_Emitter_Func_(int In_Emitter_RandomSeed, inout FSimulationContext Context); void PointAttractionForce_SimulationPosition_Emitter_Func_(out float3 Out_OutPosition, inout FSimulationContext Context); void PointAttractionForce_NF_TransformPosition_Emitter_Func_(float3 In_InPosition, int In_SourceSpace, int In_DestinationSpace, bool In_ApplyScale, out float3 Out_OutPosition, inout FSimulationContext Context); void PointAttractionForce_Emitter_Func_(inout FSimulationContext Context); void Drag_Emitter_Func_(inout FSimulationContext Context); void VortexForce_SimulationPosition_Emitter_Func_(out float3 Out_OutPosition, inout FSimulationContext Context); void DirectionAndLengthSafe_Func_(float3 In_V, float3 In_Fallback, float In_Threshold, float In_FallbackLength, out float3 Out_Direction, out float Out_Length, out bool Out_BelowThreshold, inout FSimulationContext Context); void NormalizeDistanceRange_Func_(float3 In_StartPosition, float3 In_EndPosition, float In_Distance, float3 In_FallbackVector, out float Out_NormalizedRange, out float Out_InverseNormalizedRange, out float3 Out_NormalizedVectorBetweenPositions, out bool Out_WithinRange, inout FSimulationContext Context); void VortexForce_Emitter_Func_(inout FSimulationContext Context); void SolveForcesAndVelocity_Emitter_Func_(inout FSimulationContext Context); void AudioSpectrum_EmitterAudioSpectrum(float In_NormalizedPositionInSpectrum, int In_ChannelIndex, out float Out_Amplitude); void NewNiagaraScriptScript_Emitter_Func_(inout FSimulationContext Context); void NormalizedExecutionIndex_Func_(int In_EngineExecutionCount, bool In_NormalizedRangeIncludesOne, out float Out_NormalizedExecIndex, inout FSimulationContext Context); void AudioSpectrum_EmitterAudioSpectrum001(float In_NormalizedPositionInSpectrum, int In_ChannelIndex, out float Out_Amplitude); void SampleAudioBuffer_EmitterAudioOscilloscope(float In_NormalizedPositionInBuffer, int In_ChannelIndex, out float Out_Amplitude); void ColorByAudioSpectrum_GetAudioVolume_Emitter_Func_(out float Out_Volume, inout FSimulationContext Context); void ColorByAudioSpectrum_Emitter_Func_(inout FSimulationContext Context); float GetSpawnInterpolation(); void ParticleOwnerPosition_Emitter_Func_(out float3 Out_OutPosition, inout FSimulationContext Context) { bool Constant20 = true; float3 Constant21 = float3(0,0,0); float3 Vector_IfResult; if(Constant20) { Vector_IfResult = Constant21; } else { Vector_IfResult = Context.MapSpawn.Engine.Owner.Position; } Out_OutPosition = Vector_IfResult; } void GetRandomInfo_Emitter_Determinism_false_Func_(int In_Seed, int In_Engine_System_TickCount, bool In_OverrideSeed, int In_Particles_UniqueID, int In_Emitter_RandomSeed, bool In_FixedOverrideSeed, int In_RandomnessMode, out NiagaraRandInfo Out_RandomInfo, out bool Out_UseDeterministicRandoms, inout FSimulationContext Context) { bool Constant33 = false; int Constant34 = 0; bool Result = NiagaraAll(In_RandomnessMode == Constant34); bool Result1 = Constant33 && Result; int Constant35 = 1; bool Result2 = NiagaraAll(In_RandomnessMode == Constant35); bool Result3 = Result1 || Result2; int Seed_IfResult; if(In_OverrideSeed) { Seed_IfResult = In_Seed; } else { Seed_IfResult = Context.MapSpawn.Emitter.RandomSeed; } int Constant36 = 0; int Constant37 = 0; int Seed1_IfResult; int Seed2_IfResult; int Seed3_IfResult; if(In_FixedOverrideSeed) { Seed1_IfResult = Seed_IfResult; Seed2_IfResult = Constant36; Seed3_IfResult = Constant37; } else { Seed1_IfResult = Context.MapSpawn.Particles.UniqueID; Seed2_IfResult = Context.MapSpawn.Engine.System.TickCount; Seed3_IfResult = Seed_IfResult; } int Constant38 = -1; int Constant39 = -1; int Constant40 = -1; int Seed1_IfResult1; int Seed2_IfResult1; int Seed3_IfResult1; if(Result3) { Seed1_IfResult1 = Seed1_IfResult; Seed2_IfResult1 = Seed2_IfResult; Seed3_IfResult1 = Seed3_IfResult; } else { Seed1_IfResult1 = Constant38; Seed2_IfResult1 = Constant39; Seed3_IfResult1 = Constant40; } NiagaraRandInfo Output1; Output1.Seed1 = Seed1_IfResult1; Output1.Seed2 = Seed2_IfResult1; Output1.Seed3 = Seed3_IfResult1; Out_RandomInfo = Output1; Out_UseDeterministicRandoms = Result3; } void RandomRangeFloat_Func_(float In_Min, float In_Max, int In_Seed, int In_RandomnessMode, bool In_OverrideSeed, out float Out_Result, inout FSimulationContext Context) { int Constant28 = (0); bool Constant29 = false; int Constant30 = 0; int Constant31 = (0); bool Constant32 = false; NiagaraRandInfo GetRandomInfo_Emitter_Determinism_false_Func_Output_RandomInfo; bool GetRandomInfo_Emitter_Determinism_false_Func_Output_UseDeterministicRandoms; GetRandomInfo_Emitter_Determinism_false_Func_(In_Seed, Constant28, In_OverrideSeed, Constant30, Constant31, Constant32, In_RandomnessMode, GetRandomInfo_Emitter_Determinism_false_Func_Output_RandomInfo, GetRandomInfo_Emitter_Determinism_false_Func_Output_UseDeterministicRandoms, Context); float Result4 = In_Max - In_Min; int Seed1; int Seed2; int Seed3; Seed1 = GetRandomInfo_Emitter_Determinism_false_Func_Output_RandomInfo.Seed1; Seed2 = GetRandomInfo_Emitter_Determinism_false_Func_Output_RandomInfo.Seed2; Seed3 = GetRandomInfo_Emitter_Determinism_false_Func_Output_RandomInfo.Seed3; float Result5 = rand_float(Result4, Seed1, Seed2, Seed3); float Result6 = rand_float(Result4); float Random_IfResult; if(GetRandomInfo_Emitter_Determinism_false_Func_Output_UseDeterministicRandoms) { Random_IfResult = Result5; } else { Random_IfResult = Result6; } float Result7 = In_Min + Random_IfResult; Out_Result = Result7; } void InitializeParticle_SimulationPosition_Emitter_Func_(out float3 Out_OutPosition, inout FSimulationContext Context) { bool Constant45 = true; float3 Constant46 = float3(0,0,0); float3 Vector_IfResult1; if(Constant45) { Vector_IfResult1 = Constant46; } else { Vector_IfResult1 = Context.MapSpawn.Engine.Owner.Position; } Out_OutPosition = Vector_IfResult1; } void InitializeParticle_Emitter_Func_(inout FSimulationContext Context) { float MaterialRandom_IfResult; if(Context.MapSpawn.InitializeParticle.WriteMaterialRandom) { MaterialRandom_IfResult = Context.MapSpawn.InitializeParticle.MaterialRandom; } else { MaterialRandom_IfResult = Context.MapSpawn.Particles.MaterialRandom; } Context.MapSpawn.Particles.MaterialRandom = MaterialRandom_IfResult; float Lifetime_IfResult; if(Context.MapSpawn.InitializeParticle.WriteLifetime) { Lifetime_IfResult = Context.MapSpawn.Constants.Emitter.InitializeParticle.Lifetime; } else { Lifetime_IfResult = Context.MapSpawn.Particles.Lifetime; } Context.MapSpawn.Particles.Lifetime = Lifetime_IfResult; float4 Color_IfResult; if(Context.MapSpawn.InitializeParticle.WriteColor) { Color_IfResult = Context.MapSpawn.Constants.Emitter.InitializeParticle.Color; } else { Color_IfResult = Context.MapSpawn.Particles.Color; } Context.MapSpawn.Particles.Color = Color_IfResult; float Mass_IfResult; if(Context.MapSpawn.InitializeParticle.WriteMass) { Mass_IfResult = Context.MapSpawn.Constants.Emitter.InitializeParticle.Mass; } else { Mass_IfResult = Context.MapSpawn.Particles.Mass; } Context.MapSpawn.Particles.Mass = Mass_IfResult; float2 SpriteSize_IfResult; if(Context.MapSpawn.InitializeParticle.WriteSpriteSize) { SpriteSize_IfResult = Context.MapSpawn.Constants.Emitter.InitializeParticle.SpriteSize; } else { SpriteSize_IfResult = Context.MapSpawn.Particles.SpriteSize; } Context.MapSpawn.Particles.SpriteSize = SpriteSize_IfResult; float SpriteRotation_IfResult; if(Context.MapSpawn.InitializeParticle.WriteSpriteRotation) { SpriteRotation_IfResult = Context.MapSpawn.Constants.Emitter.InitializeParticle.SpriteRotation; } else { SpriteRotation_IfResult = Context.MapSpawn.Particles.SpriteRotation; } Context.MapSpawn.Particles.SpriteRotation = SpriteRotation_IfResult; float3 Scale_IfResult; if(Context.MapSpawn.InitializeParticle.WriteScale) { Scale_IfResult = Context.MapSpawn.Constants.Emitter.InitializeParticle.MeshScale; } else { Scale_IfResult = Context.MapSpawn.Particles.Scale; } Context.MapSpawn.Particles.Scale = Scale_IfResult; float3 Scale_IfResult1; if(Context.MapSpawn.InitializeParticle.WritePosition) { Scale_IfResult1 = Context.MapSpawn.InitializeParticle.Position; } else { Scale_IfResult1 = Context.MapSpawn.Particles.Position; } Context.MapSpawn.Particles.Position = Scale_IfResult1; } void RandomRange_Func_(float In_Min, float In_Max, int In_Seed, int In_RandomnessMode, bool In_OverrideSeed, bool In_FixedOverrideSeed, out float Out_Result, inout FSimulationContext Context) { int Constant64 = (0); bool Constant65 = false; int Constant66 = 0; int Constant67 = (0); NiagaraRandInfo GetRandomInfo_Emitter_Determinism_false_Func_Output_RandomInfo1; bool GetRandomInfo_Emitter_Determinism_false_Func_Output_UseDeterministicRandoms1; GetRandomInfo_Emitter_Determinism_false_Func_(In_Seed, Constant64, In_OverrideSeed, Constant66, Constant67, In_FixedOverrideSeed, In_RandomnessMode, GetRandomInfo_Emitter_Determinism_false_Func_Output_RandomInfo1, GetRandomInfo_Emitter_Determinism_false_Func_Output_UseDeterministicRandoms1, Context); float Result9 = In_Max - In_Min; int Seed11; int Seed21; int Seed31; Seed11 = GetRandomInfo_Emitter_Determinism_false_Func_Output_RandomInfo1.Seed1; Seed21 = GetRandomInfo_Emitter_Determinism_false_Func_Output_RandomInfo1.Seed2; Seed31 = GetRandomInfo_Emitter_Determinism_false_Func_Output_RandomInfo1.Seed3; float Result10 = rand(Result9, Seed11, Seed21, Seed31); float Result11 = rand(Result9); float Random_IfResult1; if(GetRandomInfo_Emitter_Determinism_false_Func_Output_UseDeterministicRandoms1) { Random_IfResult1 = Result10; } else { Random_IfResult1 = Result11; } float Result12 = In_Min + Random_IfResult1; Out_Result = Result12; } void CustomHlslE548EF1441649C36D35230847F667303_Func_(float In_a, float In_c, float In_cosu, float In_sinu, float In_cosv, float In_sinv, out float3 Out_Torus, out float3 Out_TorusTangent, out float3 Out_TorusBitangent, out float3 Out_TorusNormal) { // Parametric Torus float c_add_a_mul_cosv = float(In_c + In_a * In_cosv); Out_Torus.x = c_add_a_mul_cosv * In_cosu; Out_Torus.y = c_add_a_mul_cosv * In_sinu; Out_Torus.z = In_a * In_sinv; Out_TorusTangent = normalize(float3(1 + 1 * In_cosv, 1 + 1 * In_cosv, 1 + 1 * In_cosv) * float3(-In_sinu, In_cosu, 0)); Out_TorusBitangent = normalize(float3(-In_sinv * In_cosu, -In_sinv * In_sinu, In_cosv)); Out_TorusNormal = cross(Out_TorusTangent, Out_TorusBitangent); } void ParametricTorus_Func_(float In_HandleRadius, float In_LargeRadius, float In_U, float In_V, out float3 Out_TorusVector, out float3 Out_TorusTangent, out float3 Out_TorusBitangent, out float3 Out_TorusNormal, inout FSimulationContext Context) { float Constant74 = 1; float Result17 = cos(In_U*(TWO_PI/Constant74)); float Constant75 = 1; float Result18 = sin(In_U*(TWO_PI/Constant75)); float Constant76 = 1; float Result19 = cos(In_V*(TWO_PI/Constant76)); float Constant77 = 1; float Result20 = sin(In_V*(TWO_PI/Constant77)); float3 CustomHlslE548EF1441649C36D35230847F667303_Func_Output_Torus; float3 CustomHlslE548EF1441649C36D35230847F667303_Func_Output_TorusTangent; float3 CustomHlslE548EF1441649C36D35230847F667303_Func_Output_TorusBitangent; float3 CustomHlslE548EF1441649C36D35230847F667303_Func_Output_TorusNormal; CustomHlslE548EF1441649C36D35230847F667303_Func_(In_HandleRadius, In_LargeRadius, Result17, Result18, Result19, Result20, CustomHlslE548EF1441649C36D35230847F667303_Func_Output_Torus, CustomHlslE548EF1441649C36D35230847F667303_Func_Output_TorusTangent, CustomHlslE548EF1441649C36D35230847F667303_Func_Output_TorusBitangent, CustomHlslE548EF1441649C36D35230847F667303_Func_Output_TorusNormal); Out_TorusVector = CustomHlslE548EF1441649C36D35230847F667303_Func_Output_Torus; Out_TorusTangent = CustomHlslE548EF1441649C36D35230847F667303_Func_Output_TorusTangent; Out_TorusBitangent = CustomHlslE548EF1441649C36D35230847F667303_Func_Output_TorusBitangent; Out_TorusNormal = CustomHlslE548EF1441649C36D35230847F667303_Func_Output_TorusNormal; } void TransformBase_Func_(int In_SourceSpace, int In_DestinationSpace, float4x4 In_LocalToWorldTransform, float4x4 In_WorldToLocalTransform, bool In_bLocalSpace, out bool Out_bUseOriginal, out float4x4 Out_OutTransform, out bool Out_LocalToWorld, inout FSimulationContext Context) { int Constant81 = 0; bool Result26 = NiagaraAll(In_SourceSpace == Constant81); int Constant82 = 0; bool Result27 = NiagaraAll(In_DestinationSpace == Constant82); bool Result28 = Result26 && Result27; int Constant83 = 1; bool Result29 = NiagaraAll(In_SourceSpace == Constant83); int Constant84 = 1; bool Result30 = NiagaraAll(In_DestinationSpace == Constant84); bool Result31 = Result29 && Result30; bool Result32 = Result28 || Result31; int Constant85 = 2; bool Result33 = NiagaraAll(In_SourceSpace == Constant85); int Constant86 = 2; bool Result34 = NiagaraAll(In_DestinationSpace == Constant86); bool Result35 = Result33 && Result34; bool Result36 = Result32 || Result35; bool Result37 = Result26 && Result34; bool Result38 = Result33 && Result27; bool Result39 = Result37 || Result38; bool Result40 = In_bLocalSpace && Result39; bool Result41 = Result36 || Result40; bool Result42 = !In_bLocalSpace; bool Result43 = Result26 && Result30; bool Result44 = Result29 && Result27; bool Result45 = Result43 || Result44; bool Result46 = Result42 && Result45; bool Result47 = Result41 || Result46; bool Result48 = In_bLocalSpace && Result43; bool Result49 = Result33 && Result30; bool Result50 = Result48 || Result49; bool Result51 = Result42 && Result38; bool Result52 = Result50 || Result51; float4x4 Matrix_IfResult1; if(Result52) { Matrix_IfResult1 = In_LocalToWorldTransform; } else { Matrix_IfResult1 = In_WorldToLocalTransform; } Out_bUseOriginal = Result47; Out_OutTransform = Matrix_IfResult1; Out_LocalToWorld = Result52; } void TorusLocation_NF_TransformVector_Emitter_Func_(float3 In_InVector, int In_SourceSpace, int In_DestinationSpace, bool In_ApplyScale, out float3 Out_OutVector, inout FSimulationContext Context) { bool Constant80 = true; float4x4 Matrix_IfResult; float4x4 Matrix001_IfResult; if(In_ApplyScale) { Matrix_IfResult = Context.MapSpawn.Engine.Owner.SystemLocalToWorld; Matrix001_IfResult = Context.MapSpawn.Engine.Owner.SystemWorldToLocal; } else { Matrix_IfResult = Context.MapSpawn.Engine.Owner.SystemLocalToWorldNoScale; Matrix001_IfResult = Context.MapSpawn.Engine.Owner.SystemWorldToLocalNoScale; } bool TransformBase_Func_Output_bUseOriginal; float4x4 TransformBase_Func_Output_OutTransform; bool TransformBase_Func_Output_LocalToWorld; TransformBase_Func_(In_SourceSpace, In_DestinationSpace, Matrix_IfResult, Matrix001_IfResult, Constant80, TransformBase_Func_Output_bUseOriginal, TransformBase_Func_Output_OutTransform, TransformBase_Func_Output_LocalToWorld, Context); float3 Result53 = mul(float4(In_InVector,0.0),TransformBase_Func_Output_OutTransform).xyz; float3 Vector_IfResult2; if(TransformBase_Func_Output_bUseOriginal) { Vector_IfResult2 = In_InVector; } else { Vector_IfResult2 = Result53; } Out_OutVector = Vector_IfResult2; } void TorusLocation_Emitter_Func_(inout FSimulationContext Context) { float Constant59 = 0; float Constant60 = 999; float Result8 = clamp(Context.MapSpawn.Constants.Emitter.TorusLocation.SurfacePosition,Constant59,Constant60); float Constant61 = 1; int Constant62 = 0; bool Constant63 = false; int Mode_IfResult; bool Override_IfResult; if(Context.MapSpawn.TorusLocation.OverrideRandomness) { Mode_IfResult = Context.MapSpawn.TorusLocation.RandomnessMode; Override_IfResult = Context.MapSpawn.TorusLocation.OverrideSeed; } else { Mode_IfResult = Constant62; Override_IfResult = Constant63; } float RandomRange_Func_Output_Result; RandomRange_Func_(Result8, Constant61, Context.MapSpawn.Constants.Emitter.TorusLocation.RandomSeed, Mode_IfResult, Override_IfResult, Context.MapSpawn.TorusLocation.FixedRandomSeed, RandomRange_Func_Output_Result, Context); float Constant68 = 0; float Constant69 = 1; float Result13 = clamp(Context.MapSpawn.Constants.Emitter.TorusLocation.UDistribution,Constant68,Constant69); float Constant70 = 1; float RandomRange_Func_Output_Result1; RandomRange_Func_(Result13, Constant70, Context.MapSpawn.Constants.Emitter.TorusLocation.RandomSeed, Mode_IfResult, Override_IfResult, Context.MapSpawn.TorusLocation.FixedRandomSeed, RandomRange_Func_Output_Result1, Context); float Constant71 = 0; float Constant72 = 1; float Result14 = clamp(Context.MapSpawn.Constants.Emitter.TorusLocation.VDistribution,Constant71,Constant72); float Constant73 = 1; float RandomRange_Func_Output_Result2; RandomRange_Func_(Result14, Constant73, Context.MapSpawn.Constants.Emitter.TorusLocation.RandomSeed, Mode_IfResult, Override_IfResult, Context.MapSpawn.TorusLocation.FixedRandomSeed, RandomRange_Func_Output_Result2, Context); Context.MapSpawn.Local.TorusLocation.RandomRadius = RandomRange_Func_Output_Result; Context.MapSpawn.Local.TorusLocation.RandomU = RandomRange_Func_Output_Result1; Context.MapSpawn.Local.TorusLocation.RandomV = RandomRange_Func_Output_Result2; float Result15 = sqrt(Context.MapSpawn.Local.TorusLocation.RandomRadius); float Result16 = Result15 * Context.MapSpawn.Constants.Emitter.TorusLocation.HandleRadius; float3 ParametricTorus_Func_Output_TorusVector; float3 ParametricTorus_Func_Output_TorusTangent; float3 ParametricTorus_Func_Output_TorusBitangent; float3 ParametricTorus_Func_Output_TorusNormal; ParametricTorus_Func_(Result16, Context.MapSpawn.Constants.Emitter.TorusLocation.LargeRadius, Context.MapSpawn.Local.TorusLocation.RandomU, Context.MapSpawn.Local.TorusLocation.RandomV, ParametricTorus_Func_Output_TorusVector, ParametricTorus_Func_Output_TorusTangent, ParametricTorus_Func_Output_TorusBitangent, ParametricTorus_Func_Output_TorusNormal, Context); Context.MapSpawn.Local.TorusLocation.TorusVector = ParametricTorus_Func_Output_TorusVector; Context.MapSpawn.Local.TorusLocation.TorusTangent = ParametricTorus_Func_Output_TorusTangent; Context.MapSpawn.Local.TorusLocation.TorusBitangent = ParametricTorus_Func_Output_TorusBitangent; Context.MapSpawn.Local.TorusLocation.TorusNormal = ParametricTorus_Func_Output_TorusNormal; float3 Result21 = Context.MapSpawn.Constants.Emitter.TorusLocation.NonUniformScale * Context.MapSpawn.Local.TorusLocation.TorusVector; float3 Result22 = Context.MapSpawn.Constants.Emitter.TorusLocation.NonUniformScale * Context.MapSpawn.Local.TorusLocation.TorusTangent; float3 Result23 = normalize(Result22); float3 Result24 = Context.MapSpawn.Constants.Emitter.TorusLocation.NonUniformScale * Context.MapSpawn.Local.TorusLocation.TorusNormal; float3 Result25 = normalize(Result24); float3 TorusVector_IfResult; float3 Tangent_IfResult; float3 Normal_IfResult; if(Context.MapSpawn.TorusLocation.EnableScale) { TorusVector_IfResult = Result21; Tangent_IfResult = Result23; Normal_IfResult = Result25; } else { TorusVector_IfResult = Context.MapSpawn.Local.TorusLocation.TorusVector; Tangent_IfResult = Context.MapSpawn.Local.TorusLocation.TorusTangent; Normal_IfResult = Context.MapSpawn.Local.TorusLocation.TorusNormal; } Context.MapSpawn.Local.TorusLocation.TorusVector = TorusVector_IfResult; Context.MapSpawn.Local.TorusLocation.TorusTangent = Tangent_IfResult; Context.MapSpawn.Local.TorusLocation.TorusNormal = Normal_IfResult; Context.MapSpawn.TorusLocation.TorusAxis = Context.MapSpawn.Constants.Emitter.TorusLocation.TorusAxis; Context.MapSpawn.TorusLocation.NormalizedAngleAroundTorusAxis = Context.MapSpawn.Constants.Emitter.TorusLocation.NormalizedAngleAroundTorusAxis; int Constant78 = 0; bool Constant79 = true; float3 TorusLocation_NF_TransformVector_Emitter_Func_Output_OutVector; TorusLocation_NF_TransformVector_Emitter_Func_(Context.MapSpawn.Local.TorusLocation.TorusVector, Context.MapSpawn.TorusLocation.CoordinateSpace, Constant78, Constant79, TorusLocation_NF_TransformVector_Emitter_Func_Output_OutVector, Context); float3 Result54 = Context.MapSpawn.Constants.Emitter.TorusLocation.Offset + Context.MapSpawn.TorusLocation.TorusOrigin; float3 Result55 = TorusLocation_NF_TransformVector_Emitter_Func_Output_OutVector + Result54; int Constant87 = 0; bool Constant88 = false; float3 TorusLocation_NF_TransformVector_Emitter_Func_Output_OutVector1; TorusLocation_NF_TransformVector_Emitter_Func_(Context.MapSpawn.Local.TorusLocation.TorusTangent, Context.MapSpawn.TorusLocation.CoordinateSpace, Constant87, Constant88, TorusLocation_NF_TransformVector_Emitter_Func_Output_OutVector1, Context); int Constant89 = 0; bool Constant90 = false; float3 TorusLocation_NF_TransformVector_Emitter_Func_Output_OutVector2; TorusLocation_NF_TransformVector_Emitter_Func_(Context.MapSpawn.Local.TorusLocation.TorusNormal, Context.MapSpawn.TorusLocation.CoordinateSpace, Constant89, Constant90, TorusLocation_NF_TransformVector_Emitter_Func_Output_OutVector2, Context); float3 Result56 = cross(TorusLocation_NF_TransformVector_Emitter_Func_Output_OutVector2,TorusLocation_NF_TransformVector_Emitter_Func_Output_OutVector1); Context.MapSpawn.Particles.Position = Result55; Context.MapSpawn.OUTPUT_VAR.TorusLocation.TorusVector = TorusLocation_NF_TransformVector_Emitter_Func_Output_OutVector; Context.MapSpawn.OUTPUT_VAR.TorusLocation.TorusTangent = TorusLocation_NF_TransformVector_Emitter_Func_Output_OutVector1; Context.MapSpawn.OUTPUT_VAR.TorusLocation.TorusBitangent = Result56; Context.MapSpawn.OUTPUT_VAR.TorusLocation.TorusNormal = TorusLocation_NF_TransformVector_Emitter_Func_Output_OutVector2; } void SetVariables_619FBC7841F4E96144B94D92F32F22FE_Emitter_Func_(inout FSimulationContext Context) { Context.MapSpawn.Particles.Direction = Context.MapSpawn.SetVariables_619FBC7841F4E96144B94D92F32F22FE.Particles.Direction; } void ParticleState_Emitter_Func_(inout FSimulationContext Context) { bool Result57 = NiagaraAll(Context.MapUpdate.Particles.Age <= Context.MapUpdate.Engine.DeltaTime); Context.MapUpdate.OUTPUT_VAR.ParticleState.FirstFrame = Result57; Context.MapUpdate.Transient.FirstFrame = Result57; float Result58 = Context.MapUpdate.Particles.Age + Context.MapUpdate.ParticleState.DeltaTime; float Constant92 = 1e-05; float Result59 = max(Context.MapUpdate.ParticleState.Lifetime, Constant92); float Constant93 = 0.0001; float Result60 = Result59 - Constant93; bool Result61 = NiagaraAll(Result58 < Result60); bool Constant94 = false; bool bool_IfResult; if(Result61) { bool_IfResult = Context.MapUpdate.DataInstance.Alive; } else { bool_IfResult = Constant94; } float Result62 = Result58 / Result59; Context.MapUpdate.DataInstance.Alive = bool_IfResult; Context.MapUpdate.Particles.Age = Result58; Context.MapUpdate.Particles.NormalizedAge = Result62; } void CurlNoiseForce001_Emitter_Func_(int In_Emitter_RandomSeed, inout FSimulationContext Context) { bool Constant104 = false; float AgeAdvancement_IfResult; if(Constant104) { AgeAdvancement_IfResult = Context.MapUpdate.Emitter.Age; } else { AgeAdvancement_IfResult = Context.MapUpdate.Engine.Time; } float Constant105 = 4096; int Constant106 = 0; float Result63 = rand_float(Constant105, Context.MapUpdate.Constants.Emitter.CurlNoiseForce001.RandomSeed, Context.MapUpdate.Emitter.RandomSeed, Constant106); Context.MapUpdate.Local.CurlNoiseForce001.AgeAdvancement = AgeAdvancement_IfResult; Context.MapUpdate.Local.CurlNoiseForce001.DeterministicOffset = Result63; Context.MapUpdate.Local.CurlNoiseForce001.SamplePosition = Context.MapUpdate.CurlNoiseForce001.SamplePosition; float3 Result64 = Context.MapUpdate.Local.CurlNoiseForce001.DeterministicOffset + Context.MapUpdate.Local.CurlNoiseForce001.SamplePosition; float3 Result65 = Result64 * Context.MapUpdate.Constants.Emitter.CurlNoiseForce001.NoiseFrequency; float3 Result66 = Context.MapUpdate.Constants.Emitter.CurlNoiseForce001.PanNoiseField * Context.MapUpdate.Local.CurlNoiseForce001.AgeAdvancement; float3 Result67 = Result65 - Result66; float Constant107 = 125; float3 Result68 = Result67 * Constant107; float3 SampleField_EmitterVectorField32Output_SampledValue; SampleField_EmitterVectorField32(Result68, SampleField_EmitterVectorField32Output_SampledValue); Context.MapUpdate.Local.CurlNoiseForce001.SampledNoise = SampleField_EmitterVectorField32Output_SampledValue; float Constant108 = 1; Context.MapUpdate.Local.CurlNoiseForce001.Falloff = Constant108; Context.MapUpdate.CurlNoiseForce001.CurlNoiseConeMaskAngle = Context.MapUpdate.Constants.Emitter.CurlNoiseForce001.CurlNoiseConeMaskAngle; Context.MapUpdate.CurlNoiseForce001.CurlNoiseConeMaskFalloffAngle = Context.MapUpdate.Constants.Emitter.CurlNoiseForce001.CurlNoiseConeMaskFalloffAngle; Context.MapUpdate.CurlNoiseForce001.CurlNoiseConeMaskAxis = Context.MapUpdate.CurlNoiseForce001.CurlNoiseConeMaskAxis; float3 Result69 = Context.MapUpdate.Local.CurlNoiseForce001.SampledNoise * Context.MapUpdate.Constants.Emitter.CurlNoiseForce001.NoiseStrength; float3 Result70 = Context.MapUpdate.Transient.PhysicsForce + Result69; Context.MapUpdate.Transient.PhysicsForce = Result70; Context.MapUpdate.OUTPUT_VAR.CurlNoiseForce001.CurlNoiseForce = Result69; } void CurlNoiseForce_Emitter_Func_(int In_Emitter_RandomSeed, inout FSimulationContext Context) { bool Constant116 = false; float AgeAdvancement_IfResult1; if(Constant116) { AgeAdvancement_IfResult1 = Context.MapUpdate.Emitter.Age; } else { AgeAdvancement_IfResult1 = Context.MapUpdate.Engine.Time; } float Constant117 = 4096; int Constant118 = 0; float Result71 = rand_float(Constant117, Context.MapUpdate.Constants.Emitter.CurlNoiseForce.RandomSeed, Context.MapUpdate.Emitter.RandomSeed, Constant118); Context.MapUpdate.Local.CurlNoiseForce.AgeAdvancement = AgeAdvancement_IfResult1; Context.MapUpdate.Local.CurlNoiseForce.DeterministicOffset = Result71; Context.MapUpdate.Local.CurlNoiseForce.SamplePosition = Context.MapUpdate.CurlNoiseForce.SamplePosition; float3 Result72 = Context.MapUpdate.Local.CurlNoiseForce.DeterministicOffset + Context.MapUpdate.Local.CurlNoiseForce.SamplePosition; float3 Result73 = Result72 * Context.MapUpdate.Constants.Emitter.CurlNoiseForce.NoiseFrequency; float Constant119 = 125; float3 Result74 = Result73 * Constant119; float3 SampleField_EmitterVectorField32Output_SampledValue1; SampleField_EmitterVectorField32(Result74, SampleField_EmitterVectorField32Output_SampledValue1); Context.MapUpdate.Local.CurlNoiseForce.SampledNoise = SampleField_EmitterVectorField32Output_SampledValue1; float Constant120 = 1; Context.MapUpdate.Local.CurlNoiseForce.Falloff = Constant120; Context.MapUpdate.CurlNoiseForce.CurlNoiseConeMaskAngle = Context.MapUpdate.Constants.Emitter.CurlNoiseForce.CurlNoiseConeMaskAngle; Context.MapUpdate.CurlNoiseForce.CurlNoiseConeMaskFalloffAngle = Context.MapUpdate.Constants.Emitter.CurlNoiseForce.CurlNoiseConeMaskFalloffAngle; Context.MapUpdate.CurlNoiseForce.CurlNoiseConeMaskAxis = Context.MapUpdate.CurlNoiseForce.CurlNoiseConeMaskAxis; float3 Result75 = Context.MapUpdate.Local.CurlNoiseForce.SampledNoise * Context.MapUpdate.Constants.Emitter.CurlNoiseForce.NoiseStrength; float3 Result76 = Context.MapUpdate.Transient.PhysicsForce + Result75; Context.MapUpdate.Transient.PhysicsForce = Result76; Context.MapUpdate.OUTPUT_VAR.CurlNoiseForce.CurlNoiseForce = Result75; } void PointAttractionForce_SimulationPosition_Emitter_Func_(out float3 Out_OutPosition, inout FSimulationContext Context) { bool Constant121 = true; float3 Constant122 = float3(0,0,0); float3 Vector_IfResult3; if(Constant121) { Vector_IfResult3 = Constant122; } else { Vector_IfResult3 = Context.MapUpdate.Engine.Owner.Position; } Out_OutPosition = Vector_IfResult3; } void PointAttractionForce_NF_TransformPosition_Emitter_Func_(float3 In_InPosition, int In_SourceSpace, int In_DestinationSpace, bool In_ApplyScale, out float3 Out_OutPosition, inout FSimulationContext Context) { bool Constant130 = true; float4x4 Matrix_IfResult2; float4x4 Matrix001_IfResult1; if(In_ApplyScale) { Matrix_IfResult2 = Context.MapUpdate.Engine.Owner.SystemLocalToWorld; Matrix001_IfResult1 = Context.MapUpdate.Engine.Owner.SystemWorldToLocal; } else { Matrix_IfResult2 = Context.MapUpdate.Engine.Owner.SystemLocalToWorldNoScale; Matrix001_IfResult1 = Context.MapUpdate.Engine.Owner.SystemWorldToLocalNoScale; } bool TransformBase_Func_Output_bUseOriginal1; float4x4 TransformBase_Func_Output_OutTransform1; bool TransformBase_Func_Output_LocalToWorld1; TransformBase_Func_(In_SourceSpace, In_DestinationSpace, Matrix_IfResult2, Matrix001_IfResult1, Constant130, TransformBase_Func_Output_bUseOriginal1, TransformBase_Func_Output_OutTransform1, TransformBase_Func_Output_LocalToWorld1, Context); float3 Result77 = mul(float4(In_InPosition,1.0),TransformBase_Func_Output_OutTransform1).xyz; float3 Vector_IfResult4; if(TransformBase_Func_Output_bUseOriginal1) { Vector_IfResult4 = In_InPosition; } else { Vector_IfResult4 = Result77; } Out_OutPosition = Vector_IfResult4; } void PointAttractionForce_Emitter_Func_(inout FSimulationContext Context) { int Constant127 = 0; int Output11; Output11 = Constant127; int Constant128 = 0; bool Constant129 = false; float3 PointAttractionForce_NF_TransformPosition_Emitter_Func_Output_OutPosition; PointAttractionForce_NF_TransformPosition_Emitter_Func_(Context.MapUpdate.Particles.Position, Output11, Constant128, Constant129, PointAttractionForce_NF_TransformPosition_Emitter_Func_Output_OutPosition, Context); float3 Result78 = Context.MapUpdate.PointAttractionForce.AttractorPosition - PointAttractionForce_NF_TransformPosition_Emitter_Func_Output_OutPosition; float3 Constant131 = float3(0,0,0.0001); float3 Result79 = Result78 + Constant131; float Result80 = length(Result79); Context.MapUpdate.Local.PointAttractionForce.PointOriginVec = Result79; Context.MapUpdate.Local.PointAttractionForce.PointOriginVecLength = Result80; float3 Result81 = normalize(Context.MapUpdate.Local.PointAttractionForce.PointOriginVec); bool Result82 = NiagaraAll(Context.MapUpdate.Local.PointAttractionForce.PointOriginVecLength > Context.MapUpdate.Constants.Emitter.PointAttractionForce.AttractionRadius); float Constant132 = 0; float Result83 = pow(Context.MapUpdate.Local.PointAttractionForce.PointOriginVecLength,Context.MapUpdate.Constants.Emitter.PointAttractionForce.FalloffExponent); float Falloff_IfResult; if(Context.MapUpdate.PointAttractionForce.UseFalloff) { Falloff_IfResult = Result83; } else { Falloff_IfResult = Context.MapUpdate.Local.PointAttractionForce.PointOriginVecLength; } float Result84 = Context.MapUpdate.Constants.Emitter.PointAttractionForce.AttractionStrength * Falloff_IfResult; float float_IfResult; if(Result82) { float_IfResult = Constant132; } else { float_IfResult = Result84; } float3 Result85 = Result81 * float_IfResult; float3 Result86 = Context.MapUpdate.Transient.PhysicsForce + Result85; Context.MapUpdate.Transient.PhysicsForce = Result86; bool Result87 = NiagaraAll(Context.MapUpdate.Local.PointAttractionForce.PointOriginVecLength < Context.MapUpdate.Constants.Emitter.PointAttractionForce.KillRadius); bool Result88 = !Result87; bool Constant133 = true; bool RadiusCheck_IfResult; if(Context.MapUpdate.PointAttractionForce.KillWithinRadius) { RadiusCheck_IfResult = Result88; } else { RadiusCheck_IfResult = Constant133; } bool Result89 = Context.MapUpdate.DataInstance.Alive && RadiusCheck_IfResult; Context.MapUpdate.DataInstance.Alive = Result89; } void Drag_Emitter_Func_(inout FSimulationContext Context) { float Result90 = Context.MapUpdate.Constants.Emitter.Drag.Drag + Context.MapUpdate.Transient.PhysicsDrag; Context.MapUpdate.Transient.PhysicsDrag = Result90; Context.MapUpdate.Transient.PhysicsRotationalDrag = Context.MapUpdate.Transient.PhysicsRotationalDrag; } void VortexForce_SimulationPosition_Emitter_Func_(out float3 Out_OutPosition, inout FSimulationContext Context) { bool Constant136 = true; float3 Constant137 = float3(0,0,0); float3 Vector_IfResult5; if(Constant136) { Vector_IfResult5 = Constant137; } else { Vector_IfResult5 = Context.MapUpdate.Engine.Owner.Position; } Out_OutPosition = Vector_IfResult5; } void DirectionAndLengthSafe_Func_(float3 In_V, float3 In_Fallback, float In_Threshold, float In_FallbackLength, out float3 Out_Direction, out float Out_Length, out bool Out_BelowThreshold, inout FSimulationContext Context) { float Result92 = length(In_V); bool Result93 = NiagaraAll(Result92 < In_Threshold); float Result94 = length(In_Fallback); float3 Vector_IfResult6; float float_IfResult1; if(Result93) { Vector_IfResult6 = In_Fallback; float_IfResult1 = In_FallbackLength; } else { Vector_IfResult6 = In_V; float_IfResult1 = Result92; } float3 Result95 = Vector_IfResult6 / float_IfResult1; float3 Vector_IfResult7; float float_IfResult2; if(Result93) { Vector_IfResult7 = In_Fallback; float_IfResult2 = Result94; } else { Vector_IfResult7 = Result95; float_IfResult2 = float_IfResult1; } Out_Direction = Vector_IfResult7; Out_Length = float_IfResult2; Out_BelowThreshold = Result93; } void NormalizeDistanceRange_Func_(float3 In_StartPosition, float3 In_EndPosition, float In_Distance, float3 In_FallbackVector, out float Out_NormalizedRange, out float Out_InverseNormalizedRange, out float3 Out_NormalizedVectorBetweenPositions, out bool Out_WithinRange, inout FSimulationContext Context) { float3 Result91 = In_StartPosition - In_EndPosition; float Constant144 = 1e-05; float Constant145 = 1; float3 DirectionAndLengthSafe_Func_Output_Direction; float DirectionAndLengthSafe_Func_Output_Length; bool DirectionAndLengthSafe_Func_Output_BelowThreshold; DirectionAndLengthSafe_Func_(Result91, In_FallbackVector, Constant144, Constant145, DirectionAndLengthSafe_Func_Output_Direction, DirectionAndLengthSafe_Func_Output_Length, DirectionAndLengthSafe_Func_Output_BelowThreshold, Context); float Constant146 = 0; float float_IfResult3; if(DirectionAndLengthSafe_Func_Output_BelowThreshold) { float_IfResult3 = Constant146; } else { float_IfResult3 = DirectionAndLengthSafe_Func_Output_Length; } float Result96 = min(float_IfResult3, In_Distance); float Constant147 = 0.0001; float Result97 = max(In_Distance, Constant147); float Result98 = Result96 / Result97; float Result99 = 1 - Result98; bool Result100 = NiagaraAll(float_IfResult3 <= In_Distance); Out_NormalizedRange = Result98; Out_InverseNormalizedRange = Result99; Out_NormalizedVectorBetweenPositions = DirectionAndLengthSafe_Func_Output_Direction; Out_WithinRange = Result100; } void VortexForce_Emitter_Func_(inout FSimulationContext Context) { Context.MapUpdate.Local.VortexForce.VortexOrigin = Context.MapUpdate.VortexForce.VortexOrigin; Context.MapUpdate.Local.VortexForce.ParticlesPosition = Context.MapUpdate.Particles.Position; float3 Constant143 = float3(0,0,1); float NormalizeDistanceRange_Func_Output_NormalizedRange; float NormalizeDistanceRange_Func_Output_InverseNormalizedRange; float3 NormalizeDistanceRange_Func_Output_NormalizedVectorBetweenPositions; bool NormalizeDistanceRange_Func_Output_WithinRange; NormalizeDistanceRange_Func_(Context.MapUpdate.Local.VortexForce.VortexOrigin, Context.MapUpdate.Local.VortexForce.ParticlesPosition, Context.MapUpdate.Constants.Emitter.VortexForce.InfluenceFalloffRadius, Constant143, NormalizeDistanceRange_Func_Output_NormalizedRange, NormalizeDistanceRange_Func_Output_InverseNormalizedRange, NormalizeDistanceRange_Func_Output_NormalizedVectorBetweenPositions, NormalizeDistanceRange_Func_Output_WithinRange, Context); float3 Result101 = cross(NormalizeDistanceRange_Func_Output_NormalizedVectorBetweenPositions,Context.MapUpdate.Constants.Emitter.VortexForce.VortexAxis); Context.MapUpdate.Local.VortexForce.NormalizedRange = NormalizeDistanceRange_Func_Output_NormalizedRange; Context.MapUpdate.Local.VortexForce.InverseNormalizedRange = NormalizeDistanceRange_Func_Output_InverseNormalizedRange; Context.MapUpdate.Local.VortexForce.OriginVector = NormalizeDistanceRange_Func_Output_NormalizedVectorBetweenPositions; Context.MapUpdate.Local.VortexForce.VortexVector = Result101; Context.MapUpdate.Local.VortexForce.ForceAmount = Context.MapUpdate.Constants.Emitter.VortexForce.VortexForceAmount; float3 Constant148 = float3(0,0,0); float Result102 = -(Context.MapUpdate.Constants.Emitter.VortexForce.OriginPullAmount); float3 Result103 = lerp(Context.MapUpdate.Local.VortexForce.OriginVector,Constant148,Result102); float3 Result104 = Context.MapUpdate.Local.VortexForce.VortexVector + Result103; float3 Result105 = normalize(Result104); float3 Result106 = Result105 * Context.MapUpdate.Local.VortexForce.ForceAmount + Context.MapUpdate.Transient.PhysicsForce; Context.MapUpdate.Transient.PhysicsForce = Result106; } void SolveForcesAndVelocity_Emitter_Func_(inout FSimulationContext Context) { Context.MapUpdate.Local.SolveForcesAndVelocity.DeltaTime = Context.MapUpdate.SolveForcesAndVelocity.DeltaTime; Context.MapUpdate.Local.SolveForcesAndVelocity.PhysicsForce = Context.MapUpdate.SolveForcesAndVelocity.Force; Context.MapUpdate.OUTPUT_VAR.SolveForcesAndVelocity.IncomingPhysicsForce = Context.MapUpdate.SolveForcesAndVelocity.Force; Context.MapUpdate.OUTPUT_VAR.SolveForcesAndVelocity.Velocity = Context.MapUpdate.SolveForcesAndVelocity.Velocity; Context.MapUpdate.Local.SolveForcesAndVelocity.Mass = Context.MapUpdate.SolveForcesAndVelocity.Mass; Context.MapUpdate.OUTPUT_VAR.SolveForcesAndVelocity.Position = Context.MapUpdate.SolveForcesAndVelocity.Position; Context.MapUpdate.Particles.Presolve.Velocity = Context.MapUpdate.OUTPUT_VAR.SolveForcesAndVelocity.Velocity; Context.MapUpdate.Particles.Presolve.Position = Context.MapUpdate.OUTPUT_VAR.SolveForcesAndVelocity.Position; Context.MapUpdate.Particles.Presolve.PhysicsForce = Context.MapUpdate.OUTPUT_VAR.SolveForcesAndVelocity.IncomingPhysicsForce; float Constant156 = 0.0001; float Result107 = max(Context.MapUpdate.Local.SolveForcesAndVelocity.Mass, Constant156); float Result108 = Reciprocal(Result107); float3 Result109 = Result108 * Context.MapUpdate.Local.SolveForcesAndVelocity.PhysicsForce; Context.MapUpdate.Local.SolveForcesAndVelocity.PhysicsForce = Result109; float3 Result110 = Context.MapUpdate.Local.SolveForcesAndVelocity.PhysicsForce * Context.MapUpdate.Local.SolveForcesAndVelocity.DeltaTime + Context.MapUpdate.OUTPUT_VAR.SolveForcesAndVelocity.Velocity; float Constant157 = 0; float Result111 = max(Context.MapUpdate.Transient.PhysicsDrag, Constant157); float Result112 = Context.MapUpdate.Local.SolveForcesAndVelocity.DeltaTime * Result111; float Constant158 = 1; float Result113 = Result112 + Constant158; float3 Result114 = Result110 / Result113; Context.MapUpdate.OUTPUT_VAR.SolveForcesAndVelocity.Velocity = Result114; Context.MapUpdate.OUTPUT_VAR.SolveForcesAndVelocity.IncomingPhysicsDrag = Context.MapUpdate.Transient.PhysicsDrag; Context.MapUpdate.OUTPUT_VAR.SolveForcesAndVelocity.Velocity = Context.MapUpdate.OUTPUT_VAR.SolveForcesAndVelocity.Velocity; Context.MapUpdate.OUTPUT_VAR.SolveForcesAndVelocity.Velocity = Context.MapUpdate.OUTPUT_VAR.SolveForcesAndVelocity.Velocity; float3 Result115 = Context.MapUpdate.OUTPUT_VAR.SolveForcesAndVelocity.Velocity * Context.MapUpdate.Local.SolveForcesAndVelocity.DeltaTime + Context.MapUpdate.OUTPUT_VAR.SolveForcesAndVelocity.Position; Context.MapUpdate.OUTPUT_VAR.SolveForcesAndVelocity.Position = Result115; float3 Position_IfResult; float3 Velocity_IfResult; if(Context.MapUpdate.SolveForcesAndVelocity.WritetoIntrinsicProperties) { Position_IfResult = Context.MapUpdate.OUTPUT_VAR.SolveForcesAndVelocity.Position; Velocity_IfResult = Context.MapUpdate.OUTPUT_VAR.SolveForcesAndVelocity.Velocity; } else { Position_IfResult = Context.MapUpdate.Particles.Position; Velocity_IfResult = Context.MapUpdate.Particles.Velocity; } Context.MapUpdate.Particles.Position = Position_IfResult; Context.MapUpdate.Particles.Velocity = Velocity_IfResult; float3 Constant159 = float3(0,0,0); float Constant160 = 0; float3 ForceVector_IfResult; float Drag_IfResult; if(Context.MapUpdate.SolveForcesAndVelocity.WritetoIntrinsicProperties) { ForceVector_IfResult = Constant159; Drag_IfResult = Constant160; } else { ForceVector_IfResult = Context.MapUpdate.Transient.PhysicsForce; Drag_IfResult = Context.MapUpdate.Transient.PhysicsDrag; } Context.MapUpdate.Transient.PhysicsForce = ForceVector_IfResult; Context.MapUpdate.Transient.PhysicsDrag = Drag_IfResult; } void NewNiagaraScriptScript_Emitter_Func_(inout FSimulationContext Context) { float X; float Y; float Z; X = Context.MapUpdate.Particles.Velocity.x; Y = Context.MapUpdate.Particles.Velocity.y; Z = Context.MapUpdate.Particles.Velocity.z; int Constant161 = 0; float AudioSpectrum_EmitterAudioSpectrumOutput_Amplitude; AudioSpectrum_EmitterAudioSpectrum(Context.MapUpdate.Particles.NormalizedAge, Constant161, AudioSpectrum_EmitterAudioSpectrumOutput_Amplitude); float Constant162 = 1.2; float Output12; Output12 = Constant162; float Result116 = X * AudioSpectrum_EmitterAudioSpectrumOutput_Amplitude * Output12; float Constant163 = 1; float Output13; Output13 = Constant163; float Result117 = Result116 + Output13; float Result118 = Y * AudioSpectrum_EmitterAudioSpectrumOutput_Amplitude * Output12; float Result119 = Result118 + Output13; float Result120 = Z * AudioSpectrum_EmitterAudioSpectrumOutput_Amplitude * Output12; float Result121 = Result120 + Output13; float3 Output14; Output14.x = Result117; Output14.y = Result119; Output14.z = Result121; Context.MapUpdate.Particles.Velocity = Output14; } void NormalizedExecutionIndex_Func_(int In_EngineExecutionCount, bool In_NormalizedRangeIncludesOne, out float Out_NormalizedExecIndex, inout FSimulationContext Context) { int Result123 = ExecIndex(); float Output0; Output0 = Result123; int Constant165 = -1; int Result124 = In_EngineExecutionCount + Constant165; int int32_IfResult; if(In_NormalizedRangeIncludesOne) { int32_IfResult = Result124; } else { int32_IfResult = In_EngineExecutionCount; } float Output01; Output01 = int32_IfResult; float Result125 = Output0 / Output01; Out_NormalizedExecIndex = Result125; } void ColorByAudioSpectrum_GetAudioVolume_Emitter_Func_(out float Out_Volume, inout FSimulationContext Context) { int Result128 = ExecIndex(); bool Constant169 = true; float NormalizedExecutionIndex_Func_Output_NormalizedExecIndex1; NormalizedExecutionIndex_Func_(Result128, Constant169, NormalizedExecutionIndex_Func_Output_NormalizedExecIndex1, Context); int Constant170 = 0; float SampleAudioBuffer_EmitterAudioOscilloscopeOutput_Amplitude; SampleAudioBuffer_EmitterAudioOscilloscope(NormalizedExecutionIndex_Func_Output_NormalizedExecIndex1, Constant170, SampleAudioBuffer_EmitterAudioOscilloscopeOutput_Amplitude); int Constant171 = 1; float SampleAudioBuffer_EmitterAudioOscilloscopeOutput_Amplitude1; SampleAudioBuffer_EmitterAudioOscilloscope(NormalizedExecutionIndex_Func_Output_NormalizedExecIndex1, Constant171, SampleAudioBuffer_EmitterAudioOscilloscopeOutput_Amplitude1); float Result129 = SampleAudioBuffer_EmitterAudioOscilloscopeOutput_Amplitude + SampleAudioBuffer_EmitterAudioOscilloscopeOutput_Amplitude1; Out_Volume = Result129; } void ColorByAudioSpectrum_Emitter_Func_(inout FSimulationContext Context) { int Result122 = ExecIndex(); bool Constant164 = true; float NormalizedExecutionIndex_Func_Output_NormalizedExecIndex; NormalizedExecutionIndex_Func_(Result122, Constant164, NormalizedExecutionIndex_Func_Output_NormalizedExecIndex, Context); int Constant166 = 0; float AudioSpectrum_EmitterAudioSpectrum001Output_Amplitude; AudioSpectrum_EmitterAudioSpectrum001(NormalizedExecutionIndex_Func_Output_NormalizedExecIndex, Constant166, AudioSpectrum_EmitterAudioSpectrum001Output_Amplitude); float Constant167 = 0.5; float Result126 = AudioSpectrum_EmitterAudioSpectrum001Output_Amplitude * Constant167; float R; float G; float B; float A; R = Context.MapUpdate.Particles.Color.r; G = Context.MapUpdate.Particles.Color.g; B = Context.MapUpdate.Particles.Color.b; A = Context.MapUpdate.Particles.Color.a; float Constant168 = 0.96; float Result127 = lerp(Result126,R,Constant168); float ColorByAudioSpectrum_GetAudioVolume_Emitter_Func_Output_Volume; ColorByAudioSpectrum_GetAudioVolume_Emitter_Func_(ColorByAudioSpectrum_GetAudioVolume_Emitter_Func_Output_Volume, Context); float Constant172 = 6; float Result130 = ColorByAudioSpectrum_GetAudioVolume_Emitter_Func_Output_Volume * Constant172; float Constant173 = 0.98; float Result131 = lerp(Result130,G,Constant173); float Constant174 = 1; float Constant175 = 0; float Constant176 = 0.4; float Result132 = lerp(Constant175,Constant176,AudioSpectrum_EmitterAudioSpectrum001Output_Amplitude); float4 Output15; Output15.r = Result127; Output15.g = Result131; Output15.b = Constant174; Output15.a = Result132; Context.MapUpdate.Particles.Color = Output15; } float GetSpawnInterpolation() { return HackSpawnInterp; } void InterpolateParameters(inout FSimulationContext Context) { int InterpSpawn_Index = ExecIndex(); float InterpSpawn_SpawnTime = Emitter_InterpSpawnStartDt + (Emitter_SpawnInterval * InterpSpawn_Index); float InterpSpawn_UpdateTime = Engine_DeltaTime - InterpSpawn_SpawnTime; float InterpSpawn_InvSpawnTime = 1.0 / InterpSpawn_SpawnTime; float InterpSpawn_InvUpdateTime = 1.0 / InterpSpawn_UpdateTime; float SpawnInterp = InterpSpawn_SpawnTime * Engine_InverseDeltaTime ; HackSpawnInterp = SpawnInterp; Context.MapSpawn.Interpolation.InterpSpawn_Index = InterpSpawn_Index; Context.MapSpawn.Interpolation.InterpSpawn_SpawnTime = InterpSpawn_SpawnTime; Context.MapSpawn.Interpolation.InterpSpawn_UpdateTime = InterpSpawn_UpdateTime; Context.MapSpawn.Interpolation.InterpSpawn_InvSpawnTime = InterpSpawn_InvSpawnTime; Context.MapSpawn.Interpolation.InterpSpawn_InvUpdateTime = InterpSpawn_InvUpdateTime; Context.MapSpawn.Interpolation.SpawnInterp = SpawnInterp; Context.MapSpawn.Interpolation.Emitter_SpawnInterval = Emitter_SpawnInterval; Context.MapSpawn.Interpolation.Emitter_InterpSpawnStartDt = Emitter_InterpSpawnStartDt; Context.MapSpawn.Interpolation.Emitter_SpawnGroup = Emitter_SpawnGroup; Context.MapSpawn.Engine.Time = lerp(PREV_Engine_Time, Engine_Time, SpawnInterp); Context.MapSpawn.Engine.RealTime = lerp(PREV_Engine_RealTime, Engine_RealTime, SpawnInterp); Context.MapSpawn.Engine.Owner.TimeSinceRendered = lerp(PREV_Engine_Owner_TimeSinceRendered, Engine_Owner_TimeSinceRendered, SpawnInterp); Context.MapSpawn.Engine.Owner.LODDistance = lerp(PREV_Engine_Owner_LODDistance, Engine_Owner_LODDistance, SpawnInterp); Context.MapSpawn.Engine.Owner.LODDistanceFraction = lerp(PREV_Engine_Owner_LODDistanceFraction, Engine_Owner_LODDistanceFraction, SpawnInterp); Context.MapSpawn.Engine.System.Age = lerp(PREV_Engine_System_Age, Engine_System_Age, SpawnInterp); Context.MapSpawn.Engine.Owner.Rotation = lerp(PREV_Engine_Owner_Rotation, Engine_Owner_Rotation, SpawnInterp); Context.MapSpawn.Engine.Owner.Position = lerp(PREV_Engine_Owner_Position.xyz, Engine_Owner_Position.xyz, SpawnInterp); Context.MapSpawn.Engine.Owner.Velocity = lerp(PREV_Engine_Owner_Velocity.xyz, Engine_Owner_Velocity.xyz, SpawnInterp); Context.MapSpawn.Engine.Owner.SystemXAxis = lerp(PREV_Engine_Owner_SystemXAxis.xyz, Engine_Owner_SystemXAxis.xyz, SpawnInterp); Context.MapSpawn.Engine.Owner.SystemYAxis = lerp(PREV_Engine_Owner_SystemYAxis.xyz, Engine_Owner_SystemYAxis.xyz, SpawnInterp); Context.MapSpawn.Engine.Owner.SystemZAxis = lerp(PREV_Engine_Owner_SystemZAxis.xyz, Engine_Owner_SystemZAxis.xyz, SpawnInterp); Context.MapSpawn.Engine.Owner.Scale = lerp(PREV_Engine_Owner_Scale.xyz, Engine_Owner_Scale.xyz, SpawnInterp); Context.MapSpawn.Emitter.Age = lerp(PREV_Emitter_Age, Emitter_Age, SpawnInterp); Context.MapUpdate.Engine.DeltaTime = InterpSpawn_UpdateTime; Context.MapUpdate.Engine.InverseDeltaTime = InterpSpawn_InvUpdateTime; } void ReadDataSets(inout FSimulationContext Context) { } void WriteDataSets(inout FSimulationContext Context) { } void SimulateMapSpawn(inout FSimulationContext Context) { //Begin Interpolated Spawn Script! //Begin Initialize Parameter Map Defaults float Constant = 0; Context.MapSpawn.Particles.MaterialRandom = Constant; float Constant1 = 1; Context.MapSpawn.Particles.Lifetime = Constant1; float4 Constant2 = float4(1,1,1,1); Context.MapSpawn.Particles.Color = Constant2; float Constant3 = 1; Context.MapSpawn.Particles.Mass = Constant3; float2 Constant4 = float2(10,10); Context.MapSpawn.Particles.SpriteSize = Constant4; float Constant5 = 0; Context.MapSpawn.Particles.SpriteRotation = Constant5; float3 Constant6 = float3(1,1,1); Context.MapSpawn.Particles.Scale = Constant6; float3 Constant7 = float3(0.0, 0.0, 0.0); Context.MapSpawn.Particles.Direction = Constant7; float Constant8 = 0; Context.MapSpawn.Particles.Age = Constant8; float Constant9 = (0.0); Context.MapSpawn.Particles.NormalizedAge = Constant9; float3 Constant10 = float3(0,0,0); Context.MapSpawn.Particles.Velocity = Constant10; float3 Constant11 = float3(0.0, 0.0, 0.0); Context.MapSpawn.Particles.Presolve.Velocity = Constant11; float3 Constant12 = float3(0.0, 0.0, 0.0); Context.MapSpawn.Particles.Presolve.Position = Constant12; float3 Constant13 = float3(0.0, 0.0, 0.0); Context.MapSpawn.Particles.Presolve.PhysicsForce = Constant13; float3 Constant14 = float3(0,0,0); Context.MapSpawn.Particles.Previous.Velocity = Constant14; float3 Constant15 = float3(0,0,0); Context.MapSpawn.Particles.Previous.Position = Constant15; //End Initialize Parameter Map Defaults bool Constant16 = true; bool Constant17 = true; bool Constant18 = false; bool Constant19 = true; float3 ParticleOwnerPosition_Emitter_Func_Output_OutPosition; ParticleOwnerPosition_Emitter_Func_(ParticleOwnerPosition_Emitter_Func_Output_OutPosition, Context); Context.MapSpawn.InitializeParticle.WriteSpriteSize = Constant16; Context.MapSpawn.InitializeParticle.WriteColor = Constant17; Context.MapSpawn.InitializeParticle.WritePosition = Constant18; Context.MapSpawn.InitializeParticle.Position = ParticleOwnerPosition_Emitter_Func_Output_OutPosition; bool Constant22 = true; Context.MapSpawn.InitializeParticle.WriteMaterialRandom = Constant22; float Constant23 = 0; float Constant24 = 1; int Constant25 = -1; int Constant26 = 0; bool Constant27 = false; float RandomRangeFloat_Func_Output_Result; RandomRangeFloat_Func_(Constant23, Constant24, Constant25, Constant26, Constant27, RandomRangeFloat_Func_Output_Result, Context); Context.MapSpawn.InitializeParticle.MaterialRandom = RandomRangeFloat_Func_Output_Result; bool Constant41 = true; Context.MapSpawn.InitializeParticle.WriteLifetime = Constant41; bool Constant42 = true; Context.MapSpawn.InitializeParticle.WriteMass = Constant42; bool Constant43 = false; Context.MapSpawn.InitializeParticle.WriteSpriteRotation = Constant43; bool Constant44 = false; Context.MapSpawn.InitializeParticle.WriteScale = Constant44; float3 InitializeParticle_SimulationPosition_Emitter_Func_Output_OutPosition; InitializeParticle_SimulationPosition_Emitter_Func_(InitializeParticle_SimulationPosition_Emitter_Func_Output_OutPosition, Context); Context.MapSpawn.Particles.Position = InitializeParticle_SimulationPosition_Emitter_Func_Output_OutPosition; EnterStatScope(1 /**InitializeParticle_Emitter_Func_*/); InitializeParticle_Emitter_Func_(Context); ExitStatScope(/**InitializeParticle_Emitter_Func_*/); bool Constant47 = false; Context.MapSpawn.TorusLocation.OverrideRandomness = Constant47; int Constant48 = 0; Context.MapSpawn.TorusLocation.RandomnessMode = Constant48; bool Constant49 = false; Context.MapSpawn.TorusLocation.OverrideSeed = Constant49; bool Constant50 = false; Context.MapSpawn.TorusLocation.FixedRandomSeed = Constant50; float Constant51 = (0.0); Context.MapSpawn.Local.TorusLocation.RandomRadius = Constant51; float Constant52 = (0.0); Context.MapSpawn.Local.TorusLocation.RandomU = Constant52; float Constant53 = (0.0); Context.MapSpawn.Local.TorusLocation.RandomV = Constant53; float3 Constant54 = float3(0.0, 0.0, 0.0); Context.MapSpawn.Local.TorusLocation.TorusVector = Constant54; float3 Constant55 = float3(0.0, 0.0, 0.0); Context.MapSpawn.Local.TorusLocation.TorusTangent = Constant55; float3 Constant56 = float3(0.0, 0.0, 0.0); Context.MapSpawn.Local.TorusLocation.TorusNormal = Constant56; bool Constant57 = false; Context.MapSpawn.TorusLocation.EnableScale = Constant57; int Constant58 = 2; Context.MapSpawn.TorusLocation.CoordinateSpace = Constant58; Context.MapSpawn.TorusLocation.TorusOrigin = Context.MapSpawn.Particles.Position; EnterStatScope(2 /**TorusLocation_Emitter_Func_*/); TorusLocation_Emitter_Func_(Context); ExitStatScope(/**TorusLocation_Emitter_Func_*/); Context.MapSpawn.SetVariables_619FBC7841F4E96144B94D92F32F22FE.Particles.Direction = Context.MapSpawn.Particles.Position; EnterStatScope(3 /**SetVariables_619FBC7841F4E96144B94D92F32F22FE_Emitter_Func_*/); SetVariables_619FBC7841F4E96144B94D92F32F22FE_Emitter_Func_(Context); ExitStatScope(/**SetVariables_619FBC7841F4E96144B94D92F32F22FE_Emitter_Func_*/); //End Spawn Script! // Begin HandleMissingDefaultValues // End HandleMissingDefaultValues } void SimulateMapUpdate(inout FSimulationContext Context) { //Begin Update Script! RandomCounterDeterministic = 0; bool Constant91 = true; Context.MapUpdate.DataInstance.Alive = Constant91; Context.MapUpdate.ParticleState.DeltaTime = Context.MapUpdate.Engine.DeltaTime; Context.MapUpdate.ParticleState.Lifetime = Context.MapUpdate.Particles.Lifetime; EnterStatScope(4 /**ParticleState_Emitter_Func_*/); ParticleState_Emitter_Func_(Context); ExitStatScope(/**ParticleState_Emitter_Func_*/); bool Constant95 = false; int Constant96 = (0); float Constant97 = (0.0); Context.MapUpdate.Local.CurlNoiseForce001.AgeAdvancement = Constant97; float Constant98 = (0.0); Context.MapUpdate.Local.CurlNoiseForce001.DeterministicOffset = Constant98; bool Constant99 = true; Context.MapUpdate.CurlNoiseForce001.SamplePosition = Context.MapUpdate.Particles.Position; float3 Constant100 = float3(0.0, 0.0, 0.0); Context.MapUpdate.Local.CurlNoiseForce001.SamplePosition = Constant100; float3 Constant101 = float3(0.0, 0.0, 0.0); Context.MapUpdate.Local.CurlNoiseForce001.SampledNoise = Constant101; float Constant102 = 1; Context.MapUpdate.Local.CurlNoiseForce001.Falloff = Constant102; Context.MapUpdate.CurlNoiseForce001.CurlNoiseConeMaskAxis = Context.MapUpdate.Particles.Velocity; float3 Constant103 = float3(0,0,0); Context.MapUpdate.Transient.PhysicsForce = Constant103; EnterStatScope(5 /**CurlNoiseForce001_Emitter_Func_*/); CurlNoiseForce001_Emitter_Func_(Constant96, Context); ExitStatScope(/**CurlNoiseForce001_Emitter_Func_*/); bool Constant109 = false; int Constant110 = (0); float Constant111 = (0.0); Context.MapUpdate.Local.CurlNoiseForce.AgeAdvancement = Constant111; float Constant112 = (0.0); Context.MapUpdate.Local.CurlNoiseForce.DeterministicOffset = Constant112; Context.MapUpdate.CurlNoiseForce.SamplePosition = Context.MapUpdate.Particles.Position; float3 Constant113 = float3(0.0, 0.0, 0.0); Context.MapUpdate.Local.CurlNoiseForce.SamplePosition = Constant113; float3 Constant114 = float3(0.0, 0.0, 0.0); Context.MapUpdate.Local.CurlNoiseForce.SampledNoise = Constant114; float Constant115 = 1; Context.MapUpdate.Local.CurlNoiseForce.Falloff = Constant115; Context.MapUpdate.CurlNoiseForce.CurlNoiseConeMaskAxis = Context.MapUpdate.Particles.Velocity; EnterStatScope(6 /**CurlNoiseForce_Emitter_Func_*/); CurlNoiseForce_Emitter_Func_(Constant110, Context); ExitStatScope(/**CurlNoiseForce_Emitter_Func_*/); float3 PointAttractionForce_SimulationPosition_Emitter_Func_Output_OutPosition; PointAttractionForce_SimulationPosition_Emitter_Func_(PointAttractionForce_SimulationPosition_Emitter_Func_Output_OutPosition, Context); Context.MapUpdate.PointAttractionForce.AttractorPosition = PointAttractionForce_SimulationPosition_Emitter_Func_Output_OutPosition; float3 Constant123 = float3(0.0, 0.0, 0.0); Context.MapUpdate.Local.PointAttractionForce.PointOriginVec = Constant123; float Constant124 = (0.0); Context.MapUpdate.Local.PointAttractionForce.PointOriginVecLength = Constant124; bool Constant125 = true; Context.MapUpdate.PointAttractionForce.UseFalloff = Constant125; bool Constant126 = false; Context.MapUpdate.PointAttractionForce.KillWithinRadius = Constant126; EnterStatScope(7 /**PointAttractionForce_Emitter_Func_*/); PointAttractionForce_Emitter_Func_(Context); ExitStatScope(/**PointAttractionForce_Emitter_Func_*/); float Constant134 = 0; Context.MapUpdate.Transient.PhysicsDrag = Constant134; float Constant135 = 0; Context.MapUpdate.Transient.PhysicsRotationalDrag = Constant135; EnterStatScope(8 /**Drag_Emitter_Func_*/); Drag_Emitter_Func_(Context); ExitStatScope(/**Drag_Emitter_Func_*/); float3 VortexForce_SimulationPosition_Emitter_Func_Output_OutPosition; VortexForce_SimulationPosition_Emitter_Func_(VortexForce_SimulationPosition_Emitter_Func_Output_OutPosition, Context); Context.MapUpdate.VortexForce.VortexOrigin = VortexForce_SimulationPosition_Emitter_Func_Output_OutPosition; float3 Constant138 = float3(0.0, 0.0, 0.0); Context.MapUpdate.Local.VortexForce.VortexOrigin = Constant138; float3 Constant139 = float3(0.0, 0.0, 0.0); Context.MapUpdate.Local.VortexForce.ParticlesPosition = Constant139; float3 Constant140 = float3(0.0, 0.0, 0.0); Context.MapUpdate.Local.VortexForce.OriginVector = Constant140; float3 Constant141 = float3(0.0, 0.0, 0.0); Context.MapUpdate.Local.VortexForce.VortexVector = Constant141; float Constant142 = (0.0); Context.MapUpdate.Local.VortexForce.ForceAmount = Constant142; EnterStatScope(9 /**VortexForce_Emitter_Func_*/); VortexForce_Emitter_Func_(Context); ExitStatScope(/**VortexForce_Emitter_Func_*/); Context.MapUpdate.Transient.PhysicsDeltaTime = Context.MapUpdate.Engine.DeltaTime; Context.MapUpdate.SolveForcesAndVelocity.DeltaTime = Context.MapUpdate.Transient.PhysicsDeltaTime; float Constant149 = (0.0); Context.MapUpdate.Local.SolveForcesAndVelocity.DeltaTime = Constant149; Context.MapUpdate.SolveForcesAndVelocity.Force = Context.MapUpdate.Transient.PhysicsForce; Context.MapUpdate.SolveForcesAndVelocity.Velocity = Context.MapUpdate.Particles.Velocity; Context.MapUpdate.SolveForcesAndVelocity.Mass = Context.MapUpdate.Particles.Mass; Context.MapUpdate.SolveForcesAndVelocity.Position = Context.MapUpdate.Particles.Position; float3 Constant150 = float3(0.0, 0.0, 0.0); Context.MapUpdate.Local.SolveForcesAndVelocity.PhysicsForce = Constant150; float3 Constant151 = float3(0.0, 0.0, 0.0); Context.MapUpdate.OUTPUT_VAR.SolveForcesAndVelocity.IncomingPhysicsForce = Constant151; float3 Constant152 = float3(0.0, 0.0, 0.0); Context.MapUpdate.OUTPUT_VAR.SolveForcesAndVelocity.Velocity = Constant152; float Constant153 = (0.0); Context.MapUpdate.Local.SolveForcesAndVelocity.Mass = Constant153; float3 Constant154 = float3(0.0, 0.0, 0.0); Context.MapUpdate.OUTPUT_VAR.SolveForcesAndVelocity.Position = Constant154; Context.MapUpdate.SolveForcesAndVelocity.PreviousVelocity = Context.MapUpdate.Particles.Previous.Velocity; bool Constant155 = true; Context.MapUpdate.SolveForcesAndVelocity.WritetoIntrinsicProperties = Constant155; EnterStatScope(10 /**SolveForcesAndVelocity_Emitter_Func_*/); SolveForcesAndVelocity_Emitter_Func_(Context); ExitStatScope(/**SolveForcesAndVelocity_Emitter_Func_*/); EnterStatScope(11 /**NewNiagaraScriptScript_Emitter_Func_*/); NewNiagaraScriptScript_Emitter_Func_(Context); ExitStatScope(/**NewNiagaraScriptScript_Emitter_Func_*/); EnterStatScope(12 /**ColorByAudioSpectrum_Emitter_Func_*/); ColorByAudioSpectrum_Emitter_Func_(Context); ExitStatScope(/**ColorByAudioSpectrum_Emitter_Func_*/); //End Update Script! } void SimulateMain() { EnterStatScope(13 /**SpawnScript_Main*/); FSimulationContext Context = (FSimulationContext)0; Context.MapSpawn.Particles.Age = 0.0f; Context.MapSpawn.Particles.Color.r = 0.0f; Context.MapSpawn.Particles.Color.g = 0.0f; Context.MapSpawn.Particles.Color.b = 0.0f; Context.MapSpawn.Particles.Color.a = 0.0f; Context.MapSpawn.Particles.Direction.x = 0.0f; Context.MapSpawn.Particles.Direction.y = 0.0f; Context.MapSpawn.Particles.Direction.z = 0.0f; Context.MapSpawn.Particles.Lifetime = 0.0f; Context.MapSpawn.Particles.Mass = 0.0f; Context.MapSpawn.Particles.MaterialRandom = 0.0f; Context.MapSpawn.Particles.NormalizedAge = 0.0f; Context.MapSpawn.Particles.Position.x = 0.0f; Context.MapSpawn.Particles.Position.y = 0.0f; Context.MapSpawn.Particles.Position.z = 0.0f; Context.MapSpawn.Particles.Presolve.PhysicsForce.x = 0.0f; Context.MapSpawn.Particles.Presolve.PhysicsForce.y = 0.0f; Context.MapSpawn.Particles.Presolve.PhysicsForce.z = 0.0f; Context.MapSpawn.Particles.Presolve.Position.x = 0.0f; Context.MapSpawn.Particles.Presolve.Position.y = 0.0f; Context.MapSpawn.Particles.Presolve.Position.z = 0.0f; Context.MapSpawn.Particles.Presolve.Velocity.x = 0.0f; Context.MapSpawn.Particles.Presolve.Velocity.y = 0.0f; Context.MapSpawn.Particles.Presolve.Velocity.z = 0.0f; Context.MapSpawn.Particles.Previous.Position.x = 0.0f; Context.MapSpawn.Particles.Previous.Position.y = 0.0f; Context.MapSpawn.Particles.Previous.Position.z = 0.0f; Context.MapSpawn.Particles.Previous.Velocity.x = 0.0f; Context.MapSpawn.Particles.Previous.Velocity.y = 0.0f; Context.MapSpawn.Particles.Previous.Velocity.z = 0.0f; Context.MapSpawn.Particles.Scale.x = 0.0f; Context.MapSpawn.Particles.Scale.y = 0.0f; Context.MapSpawn.Particles.Scale.z = 0.0f; Context.MapSpawn.Particles.SpriteRotation = 0.0f; Context.MapSpawn.Particles.SpriteSize.x = 0.0f; Context.MapSpawn.Particles.SpriteSize.y = 0.0f; Context.MapSpawn.Particles.UniqueID = 0; Context.MapSpawn.Particles.Velocity.x = 0.0f; Context.MapSpawn.Particles.Velocity.y = 0.0f; Context.MapSpawn.Particles.Velocity.z = 0.0f; Context.MapSpawn.Particles.UniqueID = Engine_Emitter_TotalSpawnedParticles + ExecIndex(); Context.MapSpawn.Engine.Owner.Position = Engine_Owner_Position.xyz; Context.MapSpawn.Emitter.RandomSeed = Emitter_RandomSeed; Context.MapSpawn.Engine.System.TickCount = Engine_System_TickCount; Context.MapSpawn.Constants.Emitter.InitializeParticle.Lifetime = Constants_Emitter_InitializeParticle_Lifetime; Context.MapSpawn.Constants.Emitter.InitializeParticle.Color = Constants_Emitter_InitializeParticle_Color; Context.MapSpawn.Constants.Emitter.InitializeParticle.Mass = Constants_Emitter_InitializeParticle_Mass; Context.MapSpawn.Constants.Emitter.InitializeParticle.SpriteSize = Constants_Emitter_InitializeParticle_SpriteSize; Context.MapSpawn.Constants.Emitter.InitializeParticle.SpriteRotation = Constants_Emitter_InitializeParticle_SpriteRotation; Context.MapSpawn.Constants.Emitter.InitializeParticle.MeshScale = Constants_Emitter_InitializeParticle_MeshScale; Context.MapSpawn.Constants.Emitter.TorusLocation.SurfacePosition = Constants_Emitter_TorusLocation_SurfacePosition; Context.MapSpawn.Constants.Emitter.TorusLocation.UDistribution = Constants_Emitter_TorusLocation_UDistribution; Context.MapSpawn.Constants.Emitter.TorusLocation.VDistribution = Constants_Emitter_TorusLocation_VDistribution; Context.MapSpawn.Constants.Emitter.TorusLocation.RandomSeed = Constants_Emitter_TorusLocation_RandomSeed; Context.MapSpawn.Constants.Emitter.TorusLocation.HandleRadius = Constants_Emitter_TorusLocation_HandleRadius; Context.MapSpawn.Constants.Emitter.TorusLocation.LargeRadius = Constants_Emitter_TorusLocation_LargeRadius; Context.MapSpawn.Constants.Emitter.TorusLocation.NonUniformScale = Constants_Emitter_TorusLocation_NonUniformScale; Context.MapSpawn.Constants.Emitter.TorusLocation.TorusAxis = Constants_Emitter_TorusLocation_TorusAxis; Context.MapSpawn.Constants.Emitter.TorusLocation.NormalizedAngleAroundTorusAxis = Constants_Emitter_TorusLocation_NormalizedAngleAroundTorusAxis; Context.MapSpawn.Constants.Emitter.TorusLocation.Offset = Constants_Emitter_TorusLocation_Offset; Context.MapSpawn.Constants.Emitter.TorusLocation.SpawnGroupMask = Constants_Emitter_TorusLocation_SpawnGroupMask; Context.MapSpawn.Engine.Owner.SystemLocalToWorld = Engine_Owner_SystemLocalToWorld; Context.MapSpawn.Engine.Owner.SystemWorldToLocal = Engine_Owner_SystemWorldToLocal; Context.MapSpawn.Engine.Owner.SystemLocalToWorldNoScale = Engine_Owner_SystemLocalToWorldNoScale; Context.MapSpawn.Engine.Owner.SystemWorldToLocalNoScale = Engine_Owner_SystemWorldToLocalNoScale; Context.MapUpdate.Engine.DeltaTime = Engine_DeltaTime; Context.MapUpdate.Emitter.Age = Emitter_Age; Context.MapUpdate.Engine.Time = Engine_Time; Context.MapUpdate.Constants.Emitter.CurlNoiseForce001.RandomSeed = Constants_Emitter_CurlNoiseForce001_RandomSeed; Context.MapUpdate.Engine.Owner.Position = Engine_Owner_Position.xyz; Context.MapUpdate.Constants.Emitter.CurlNoiseForce001.NoiseFrequency = Constants_Emitter_CurlNoiseForce001_NoiseFrequency; Context.MapUpdate.Constants.Emitter.CurlNoiseForce001.PanNoiseField = Constants_Emitter_CurlNoiseForce001_PanNoiseField; Context.MapUpdate.Constants.Emitter.CurlNoiseForce001.CurlNoiseConeMaskAngle = Constants_Emitter_CurlNoiseForce001_CurlNoiseConeMaskAngle; Context.MapUpdate.Constants.Emitter.CurlNoiseForce001.CurlNoiseConeMaskFalloffAngle = Constants_Emitter_CurlNoiseForce001_CurlNoiseConeMaskFalloffAngle; Context.MapUpdate.Constants.Emitter.CurlNoiseForce001.NoiseStrength = Constants_Emitter_CurlNoiseForce001_NoiseStrength; Context.MapUpdate.Emitter.RandomSeed = Emitter_RandomSeed; Context.MapUpdate.Constants.Emitter.CurlNoiseForce.RandomSeed = Constants_Emitter_CurlNoiseForce_RandomSeed; Context.MapUpdate.Constants.Emitter.CurlNoiseForce.NoiseFrequency = Constants_Emitter_CurlNoiseForce_NoiseFrequency; Context.MapUpdate.Constants.Emitter.CurlNoiseForce.PanNoiseField = Constants_Emitter_CurlNoiseForce_PanNoiseField; Context.MapUpdate.Constants.Emitter.CurlNoiseForce.CurlNoiseConeMaskAngle = Constants_Emitter_CurlNoiseForce_CurlNoiseConeMaskAngle; Context.MapUpdate.Constants.Emitter.CurlNoiseForce.CurlNoiseConeMaskFalloffAngle = Constants_Emitter_CurlNoiseForce_CurlNoiseConeMaskFalloffAngle; Context.MapUpdate.Constants.Emitter.CurlNoiseForce.NoiseStrength = Constants_Emitter_CurlNoiseForce_NoiseStrength; Context.MapUpdate.Engine.Owner.SystemLocalToWorld = Engine_Owner_SystemLocalToWorld; Context.MapUpdate.Engine.Owner.SystemWorldToLocal = Engine_Owner_SystemWorldToLocal; Context.MapUpdate.Engine.Owner.SystemLocalToWorldNoScale = Engine_Owner_SystemLocalToWorldNoScale; Context.MapUpdate.Engine.Owner.SystemWorldToLocalNoScale = Engine_Owner_SystemWorldToLocalNoScale; Context.MapUpdate.Constants.Emitter.PointAttractionForce.AttractionRadius = Constants_Emitter_PointAttractionForce_AttractionRadius; Context.MapUpdate.Constants.Emitter.PointAttractionForce.AttractionStrength = Constants_Emitter_PointAttractionForce_AttractionStrength; Context.MapUpdate.Constants.Emitter.PointAttractionForce.FalloffExponent = Constants_Emitter_PointAttractionForce_FalloffExponent; Context.MapUpdate.Constants.Emitter.PointAttractionForce.KillRadius = Constants_Emitter_PointAttractionForce_KillRadius; Context.MapUpdate.Constants.Emitter.Drag.Drag = Constants_Emitter_Drag_Drag; Context.MapUpdate.Constants.Emitter.Drag.RotationalDrag = Constants_Emitter_Drag_RotationalDrag; Context.MapUpdate.Constants.Emitter.VortexForce.InfluenceFalloffRadius = Constants_Emitter_VortexForce_InfluenceFalloffRadius; Context.MapUpdate.Constants.Emitter.VortexForce.VortexAxis = Constants_Emitter_VortexForce_VortexAxis; Context.MapUpdate.Constants.Emitter.VortexForce.VortexForceAmount = Constants_Emitter_VortexForce_VortexForceAmount; Context.MapUpdate.Constants.Emitter.VortexForce.OriginPullAmount = Constants_Emitter_VortexForce_OriginPullAmount; Context.MapUpdate.Constants.Emitter.SolveForcesAndVelocity.SpeedLimit = Constants_Emitter_SolveForcesAndVelocity_SpeedLimit; Context.MapUpdate.Constants.Emitter.SolveForcesAndVelocity.AccelerationLimit = Constants_Emitter_SolveForcesAndVelocity_AccelerationLimit; Context.MapUpdate.Engine.InverseDeltaTime = Engine_InverseDeltaTime; Context.MapUpdate.Engine.ExecutionCount = Engine_ExecutionCount; Context.MapUpdate.Emitter.SpawnRate = Emitter_SpawnRate; Context.MapUpdate.Emitter.SpawnInterval = Emitter_SpawnInterval; Context.MapUpdate.Emitter.InterpSpawnStartDt = Emitter_InterpSpawnStartDt; Context.MapUpdate.Emitter.SpawnGroup = Emitter_SpawnGroup; Context.MapUpdate.Engine.Emitter.TotalSpawnedParticles = Engine_Emitter_TotalSpawnedParticles; Context.MapUpdate.Engine.Emitter.InstanceSeed = Engine_Emitter_InstanceSeed; ReadDataSets(Context); InterpolateParameters(Context); EnterStatScope(14 /**SpawnScript_MapSpawnMain*/); SimulateMapSpawn(Context); ExitStatScope(/**SpawnScript_MapSpawnMain*/); //Begin Transfer of Attributes! Context.MapUpdate.Particles = Context.MapSpawn.Particles; Context.MapUpdate.Particles.Previous.Velocity = Context.MapSpawn.Particles.Velocity; Context.MapUpdate.Particles.Previous.Position = Context.MapSpawn.Particles.Position; //End Transfer of Attributes! EnterStatScope(15 /**SpawnScript_MapUpdateMain*/); SimulateMapUpdate(Context); ExitStatScope(/**SpawnScript_MapUpdateMain*/); WriteDataSets(Context); { bool bValid = Context.MapUpdate.DataInstance.Alive; int TmpWriteIndex = OutputIndex(0, true, bValid); OutputDataFloat(0, 0, TmpWriteIndex, Context.MapUpdate.Particles.Age); OutputDataFloat(0, 1, TmpWriteIndex, Context.MapUpdate.Particles.Color.r); OutputDataFloat(0, 2, TmpWriteIndex, Context.MapUpdate.Particles.Color.g); OutputDataFloat(0, 3, TmpWriteIndex, Context.MapUpdate.Particles.Color.b); OutputDataFloat(0, 4, TmpWriteIndex, Context.MapUpdate.Particles.Color.a); OutputDataFloat(0, 5, TmpWriteIndex, Context.MapUpdate.Particles.Direction.x); OutputDataFloat(0, 6, TmpWriteIndex, Context.MapUpdate.Particles.Direction.y); OutputDataFloat(0, 7, TmpWriteIndex, Context.MapUpdate.Particles.Direction.z); OutputDataFloat(0, 8, TmpWriteIndex, Context.MapUpdate.Particles.Lifetime); OutputDataFloat(0, 9, TmpWriteIndex, Context.MapUpdate.Particles.Mass); OutputDataFloat(0, 10, TmpWriteIndex, Context.MapUpdate.Particles.MaterialRandom); OutputDataFloat(0, 11, TmpWriteIndex, Context.MapUpdate.Particles.NormalizedAge); OutputDataFloat(0, 12, TmpWriteIndex, Context.MapUpdate.Particles.Position.x); OutputDataFloat(0, 13, TmpWriteIndex, Context.MapUpdate.Particles.Position.y); OutputDataFloat(0, 14, TmpWriteIndex, Context.MapUpdate.Particles.Position.z); OutputDataFloat(0, 15, TmpWriteIndex, Context.MapUpdate.Particles.Presolve.PhysicsForce.x); OutputDataFloat(0, 16, TmpWriteIndex, Context.MapUpdate.Particles.Presolve.PhysicsForce.y); OutputDataFloat(0, 17, TmpWriteIndex, Context.MapUpdate.Particles.Presolve.PhysicsForce.z); OutputDataFloat(0, 18, TmpWriteIndex, Context.MapUpdate.Particles.Presolve.Position.x); OutputDataFloat(0, 19, TmpWriteIndex, Context.MapUpdate.Particles.Presolve.Position.y); OutputDataFloat(0, 20, TmpWriteIndex, Context.MapUpdate.Particles.Presolve.Position.z); OutputDataFloat(0, 21, TmpWriteIndex, Context.MapUpdate.Particles.Presolve.Velocity.x); OutputDataFloat(0, 22, TmpWriteIndex, Context.MapUpdate.Particles.Presolve.Velocity.y); OutputDataFloat(0, 23, TmpWriteIndex, Context.MapUpdate.Particles.Presolve.Velocity.z); OutputDataFloat(0, 24, TmpWriteIndex, Context.MapUpdate.Particles.Previous.Position.x); OutputDataFloat(0, 25, TmpWriteIndex, Context.MapUpdate.Particles.Previous.Position.y); OutputDataFloat(0, 26, TmpWriteIndex, Context.MapUpdate.Particles.Previous.Position.z); OutputDataFloat(0, 27, TmpWriteIndex, Context.MapUpdate.Particles.Previous.Velocity.x); OutputDataFloat(0, 28, TmpWriteIndex, Context.MapUpdate.Particles.Previous.Velocity.y); OutputDataFloat(0, 29, TmpWriteIndex, Context.MapUpdate.Particles.Previous.Velocity.z); OutputDataFloat(0, 30, TmpWriteIndex, Context.MapUpdate.Particles.Scale.x); OutputDataFloat(0, 31, TmpWriteIndex, Context.MapUpdate.Particles.Scale.y); OutputDataFloat(0, 32, TmpWriteIndex, Context.MapUpdate.Particles.Scale.z); OutputDataFloat(0, 33, TmpWriteIndex, Context.MapUpdate.Particles.SpriteRotation); OutputDataFloat(0, 34, TmpWriteIndex, Context.MapUpdate.Particles.SpriteSize.x); OutputDataFloat(0, 35, TmpWriteIndex, Context.MapUpdate.Particles.SpriteSize.y); OutputDataInt(0, 0, TmpWriteIndex, Context.MapUpdate.Particles.UniqueID); OutputDataFloat(0, 36, TmpWriteIndex, Context.MapUpdate.Particles.Velocity.x); OutputDataFloat(0, 37, TmpWriteIndex, Context.MapUpdate.Particles.Velocity.y); OutputDataFloat(0, 38, TmpWriteIndex, Context.MapUpdate.Particles.Velocity.z); } ExitStatScope(/**SpawnScript_Main*/); } 7y~u~ ------------------------------- Summary ------------------------------- Num Byte Code Ops: 304 Num Constants: 468 ------------------------------- Constant Table ------------------------------- 0 | Engine_DeltaTime 4 | Engine_InverseDeltaTime 8 | Engine_Time 12 | Engine_RealTime 16 | Engine_QualityLevel 20 | Engine_PaddingInt32_0 24 | Engine_PaddingInt32_1 28 | Engine_PaddingInt32_2 32 | Engine_Owner_TimeSinceRendered 36 | Engine_Owner_LODDistance 40 | Engine_Owner_LODDistanceFraction 44 | Engine_System_Age 48 | Engine_Owner_ExecutionState 52 | Engine_System_TickCount 56 | Engine_System_NumEmitters 60 | Engine_System_NumEmittersAlive 64 | Engine_System_SignificanceIndex 68 | Engine_System_PaddingInt32_0 72 | Engine_System_PaddingInt32_1 76 | Engine_System_PaddingInt32_2 80 | Engine_Owner_SystemLocalToWorldRow0x 84 | Engine_Owner_SystemLocalToWorldRow0y 88 | Engine_Owner_SystemLocalToWorldRow0z 92 | Engine_Owner_SystemLocalToWorldRow0w 96 | Engine_Owner_SystemLocalToWorldRow1x 100 | Engine_Owner_SystemLocalToWorldRow1y 104 | Engine_Owner_SystemLocalToWorldRow1z 108 | Engine_Owner_SystemLocalToWorldRow1w 112 | Engine_Owner_SystemLocalToWorldRow2x 116 | Engine_Owner_SystemLocalToWorldRow2y 120 | Engine_Owner_SystemLocalToWorldRow2z 124 | Engine_Owner_SystemLocalToWorldRow2w 128 | Engine_Owner_SystemLocalToWorldRow3x 132 | Engine_Owner_SystemLocalToWorldRow3y 136 | Engine_Owner_SystemLocalToWorldRow3z 140 | Engine_Owner_SystemLocalToWorldRow3w 144 | Engine_Owner_SystemWorldToLocalRow0x 148 | Engine_Owner_SystemWorldToLocalRow0y 152 | Engine_Owner_SystemWorldToLocalRow0z 156 | Engine_Owner_SystemWorldToLocalRow0w 160 | Engine_Owner_SystemWorldToLocalRow1x 164 | Engine_Owner_SystemWorldToLocalRow1y 168 | Engine_Owner_SystemWorldToLocalRow1z 172 | Engine_Owner_SystemWorldToLocalRow1w 176 | Engine_Owner_SystemWorldToLocalRow2x 180 | Engine_Owner_SystemWorldToLocalRow2y 184 | Engine_Owner_SystemWorldToLocalRow2z 188 | Engine_Owner_SystemWorldToLocalRow2w 192 | Engine_Owner_SystemWorldToLocalRow3x 196 | Engine_Owner_SystemWorldToLocalRow3y 200 | Engine_Owner_SystemWorldToLocalRow3z 204 | Engine_Owner_SystemWorldToLocalRow3w 208 | Engine_Owner_SystemLocalToWorldTransposedRow0x 212 | Engine_Owner_SystemLocalToWorldTransposedRow0y 216 | Engine_Owner_SystemLocalToWorldTransposedRow0z 220 | Engine_Owner_SystemLocalToWorldTransposedRow0w 224 | Engine_Owner_SystemLocalToWorldTransposedRow1x 228 | Engine_Owner_SystemLocalToWorldTransposedRow1y 232 | Engine_Owner_SystemLocalToWorldTransposedRow1z 236 | Engine_Owner_SystemLocalToWorldTransposedRow1w 240 | Engine_Owner_SystemLocalToWorldTransposedRow2x 244 | Engine_Owner_SystemLocalToWorldTransposedRow2y 248 | Engine_Owner_SystemLocalToWorldTransposedRow2z 252 | Engine_Owner_SystemLocalToWorldTransposedRow2w 256 | Engine_Owner_SystemLocalToWorldTransposedRow3x 260 | Engine_Owner_SystemLocalToWorldTransposedRow3y 264 | Engine_Owner_SystemLocalToWorldTransposedRow3z 268 | Engine_Owner_SystemLocalToWorldTransposedRow3w 272 | Engine_Owner_SystemWorldToLocalTransposedRow0x 276 | Engine_Owner_SystemWorldToLocalTransposedRow0y 280 | Engine_Owner_SystemWorldToLocalTransposedRow0z 284 | Engine_Owner_SystemWorldToLocalTransposedRow0w 288 | Engine_Owner_SystemWorldToLocalTransposedRow1x 292 | Engine_Owner_SystemWorldToLocalTransposedRow1y 296 | Engine_Owner_SystemWorldToLocalTransposedRow1z 300 | Engine_Owner_SystemWorldToLocalTransposedRow1w 304 | Engine_Owner_SystemWorldToLocalTransposedRow2x 308 | Engine_Owner_SystemWorldToLocalTransposedRow2y 312 | Engine_Owner_SystemWorldToLocalTransposedRow2z 316 | Engine_Owner_SystemWorldToLocalTransposedRow2w 320 | Engine_Owner_SystemWorldToLocalTransposedRow3x 324 | Engine_Owner_SystemWorldToLocalTransposedRow3y 328 | Engine_Owner_SystemWorldToLocalTransposedRow3z 332 | Engine_Owner_SystemWorldToLocalTransposedRow3w 336 | Engine_Owner_SystemLocalToWorldNoScaleRow0x 340 | Engine_Owner_SystemLocalToWorldNoScaleRow0y 344 | Engine_Owner_SystemLocalToWorldNoScaleRow0z 348 | Engine_Owner_SystemLocalToWorldNoScaleRow0w 352 | Engine_Owner_SystemLocalToWorldNoScaleRow1x 356 | Engine_Owner_SystemLocalToWorldNoScaleRow1y 360 | Engine_Owner_SystemLocalToWorldNoScaleRow1z 364 | Engine_Owner_SystemLocalToWorldNoScaleRow1w 368 | Engine_Owner_SystemLocalToWorldNoScaleRow2x 372 | Engine_Owner_SystemLocalToWorldNoScaleRow2y 376 | Engine_Owner_SystemLocalToWorldNoScaleRow2z 380 | Engine_Owner_SystemLocalToWorldNoScaleRow2w 384 | Engine_Owner_SystemLocalToWorldNoScaleRow3x 388 | Engine_Owner_SystemLocalToWorldNoScaleRow3y 392 | Engine_Owner_SystemLocalToWorldNoScaleRow3z 396 | Engine_Owner_SystemLocalToWorldNoScaleRow3w 400 | Engine_Owner_SystemWorldToLocalNoScaleRow0x 404 | Engine_Owner_SystemWorldToLocalNoScaleRow0y 408 | Engine_Owner_SystemWorldToLocalNoScaleRow0z 412 | Engine_Owner_SystemWorldToLocalNoScaleRow0w 416 | Engine_Owner_SystemWorldToLocalNoScaleRow1x 420 | Engine_Owner_SystemWorldToLocalNoScaleRow1y 424 | Engine_Owner_SystemWorldToLocalNoScaleRow1z 428 | Engine_Owner_SystemWorldToLocalNoScaleRow1w 432 | Engine_Owner_SystemWorldToLocalNoScaleRow2x 436 | Engine_Owner_SystemWorldToLocalNoScaleRow2y 440 | Engine_Owner_SystemWorldToLocalNoScaleRow2z 444 | Engine_Owner_SystemWorldToLocalNoScaleRow2w 448 | Engine_Owner_SystemWorldToLocalNoScaleRow3x 452 | Engine_Owner_SystemWorldToLocalNoScaleRow3y 456 | Engine_Owner_SystemWorldToLocalNoScaleRow3z 460 | Engine_Owner_SystemWorldToLocalNoScaleRow3w 464 | Engine_Owner_Rotationx 468 | Engine_Owner_Rotationy 472 | Engine_Owner_Rotationz 476 | Engine_Owner_Rotationw 480 | Engine_Owner_Positionx 484 | Engine_Owner_Positiony 488 | Engine_Owner_Positionz 492 | Engine_Owner_Positionw 496 | Engine_Owner_Velocityx 500 | Engine_Owner_Velocityy 504 | Engine_Owner_Velocityz 508 | Engine_Owner_Velocityw 512 | Engine_Owner_SystemXAxisx 516 | Engine_Owner_SystemXAxisy 520 | Engine_Owner_SystemXAxisz 524 | Engine_Owner_SystemXAxisw 528 | Engine_Owner_SystemYAxisx 532 | Engine_Owner_SystemYAxisy 536 | Engine_Owner_SystemYAxisz 540 | Engine_Owner_SystemYAxisw 544 | Engine_Owner_SystemZAxisx 548 | Engine_Owner_SystemZAxisy 552 | Engine_Owner_SystemZAxisz 556 | Engine_Owner_SystemZAxisw 560 | Engine_Owner_Scalex 564 | Engine_Owner_Scaley 568 | Engine_Owner_Scalez 572 | Engine_Owner_Scalew 576 | Engine_Emitter_NumParticles 580 | Engine_Emitter_TotalSpawnedParticles 584 | Engine_Emitter_SpawnCountScale 588 | Emitter_Age 592 | Emitter_RandomSeed 596 | Engine_Emitter_InstanceSeed 600 | Engine_Emitter_PaddingInt32_0 604 | Engine_Emitter_PaddingInt32_1 608 | Constants_Emitter_InitializeParticle_Lifetime 612 | Constants_Emitter_InitializeParticle_Colorx 616 | Constants_Emitter_InitializeParticle_Colory 620 | Constants_Emitter_InitializeParticle_Colorz 624 | Constants_Emitter_InitializeParticle_Colorw 628 | Constants_Emitter_InitializeParticle_Mass 632 | Constants_Emitter_InitializeParticle_SpriteSizex 636 | Constants_Emitter_InitializeParticle_SpriteSizey 640 | Constants_Emitter_InitializeParticle_SpriteRotation 644 | Constants_Emitter_InitializeParticle_MeshScalex 648 | Constants_Emitter_InitializeParticle_MeshScaley 652 | Constants_Emitter_InitializeParticle_MeshScalez 656 | Constants_Emitter_TorusLocation_SurfacePosition 660 | Constants_Emitter_TorusLocation_UDistribution 664 | Constants_Emitter_TorusLocation_VDistribution 668 | Constants_Emitter_TorusLocation_RandomSeed 672 | Constants_Emitter_TorusLocation_HandleRadius 676 | Constants_Emitter_TorusLocation_LargeRadius 680 | Constants_Emitter_TorusLocation_NonUniformScalex 684 | Constants_Emitter_TorusLocation_NonUniformScaley 688 | Constants_Emitter_TorusLocation_NonUniformScalez 692 | Constants_Emitter_TorusLocation_TorusAxisx 696 | Constants_Emitter_TorusLocation_TorusAxisy 700 | Constants_Emitter_TorusLocation_TorusAxisz 704 | Constants_Emitter_TorusLocation_NormalizedAngleAroundTorusAxis 708 | Constants_Emitter_TorusLocation_Offsetx 712 | Constants_Emitter_TorusLocation_Offsety 716 | Constants_Emitter_TorusLocation_Offsetz 720 | Constants_Emitter_TorusLocation_SpawnGroupMask 724 | Constants_Emitter_CurlNoiseForce001_RandomSeed 728 | Constants_Emitter_CurlNoiseForce001_NoiseFrequency 732 | Constants_Emitter_CurlNoiseForce001_PanNoiseFieldx 736 | Constants_Emitter_CurlNoiseForce001_PanNoiseFieldy 740 | Constants_Emitter_CurlNoiseForce001_PanNoiseFieldz 744 | Constants_Emitter_CurlNoiseForce001_CurlNoiseConeMaskAngle 748 | Constants_Emitter_CurlNoiseForce001_CurlNoiseConeMaskFalloffAngle 752 | Constants_Emitter_CurlNoiseForce001_NoiseStrength 756 | Constants_Emitter_CurlNoiseForce_RandomSeed 760 | Constants_Emitter_CurlNoiseForce_NoiseFrequency 764 | Constants_Emitter_CurlNoiseForce_PanNoiseFieldx 768 | Constants_Emitter_CurlNoiseForce_PanNoiseFieldy 772 | Constants_Emitter_CurlNoiseForce_PanNoiseFieldz 776 | Constants_Emitter_CurlNoiseForce_CurlNoiseConeMaskAngle 780 | Constants_Emitter_CurlNoiseForce_CurlNoiseConeMaskFalloffAngle 784 | Constants_Emitter_CurlNoiseForce_NoiseStrength 788 | Constants_Emitter_PointAttractionForce_AttractionRadius 792 | Constants_Emitter_PointAttractionForce_AttractionStrength 796 | Constants_Emitter_PointAttractionForce_FalloffExponent 800 | Constants_Emitter_PointAttractionForce_KillRadius 804 | Constants_Emitter_Drag_Drag 808 | Constants_Emitter_Drag_RotationalDrag 812 | Constants_Emitter_VortexForce_InfluenceFalloffRadius 816 | Constants_Emitter_VortexForce_VortexAxisx 820 | Constants_Emitter_VortexForce_VortexAxisy 824 | Constants_Emitter_VortexForce_VortexAxisz 828 | Constants_Emitter_VortexForce_VortexForceAmount 832 | Constants_Emitter_VortexForce_OriginPullAmount 836 | Constants_Emitter_SolveForcesAndVelocity_SpeedLimit 840 | Constants_Emitter_SolveForcesAndVelocity_AccelerationLimit 844 | Engine_ExecutionCount 848 | Emitter_SpawnRate 852 | Emitter_SpawnInterval 856 | Emitter_InterpSpawnStartDt 860 | Emitter_SpawnGroup 864 | PREV_Engine_DeltaTime 868 | PREV_Engine_InverseDeltaTime 872 | PREV_Engine_Time 876 | PREV_Engine_RealTime 880 | PREV_Engine_QualityLevel 884 | PREV_Engine_PaddingInt32_0 888 | PREV_Engine_PaddingInt32_1 892 | PREV_Engine_PaddingInt32_2 896 | PREV_Engine_Owner_TimeSinceRendered 900 | PREV_Engine_Owner_LODDistance 904 | PREV_Engine_Owner_LODDistanceFraction 908 | PREV_Engine_System_Age 912 | PREV_Engine_Owner_ExecutionState 916 | PREV_Engine_System_TickCount 920 | PREV_Engine_System_NumEmitters 924 | PREV_Engine_System_NumEmittersAlive 928 | PREV_Engine_System_SignificanceIndex 932 | PREV_Engine_System_PaddingInt32_0 936 | PREV_Engine_System_PaddingInt32_1 940 | PREV_Engine_System_PaddingInt32_2 944 | PREV_Engine_Owner_SystemLocalToWorldRow0x 948 | PREV_Engine_Owner_SystemLocalToWorldRow0y 952 | PREV_Engine_Owner_SystemLocalToWorldRow0z 956 | PREV_Engine_Owner_SystemLocalToWorldRow0w 960 | PREV_Engine_Owner_SystemLocalToWorldRow1x 964 | PREV_Engine_Owner_SystemLocalToWorldRow1y 968 | PREV_Engine_Owner_SystemLocalToWorldRow1z 972 | PREV_Engine_Owner_SystemLocalToWorldRow1w 976 | PREV_Engine_Owner_SystemLocalToWorldRow2x 980 | PREV_Engine_Owner_SystemLocalToWorldRow2y 984 | PREV_Engine_Owner_SystemLocalToWorldRow2z 988 | PREV_Engine_Owner_SystemLocalToWorldRow2w 992 | PREV_Engine_Owner_SystemLocalToWorldRow3x 996 | PREV_Engine_Owner_SystemLocalToWorldRow3y 1000 | PREV_Engine_Owner_SystemLocalToWorldRow3z 1004 | PREV_Engine_Owner_SystemLocalToWorldRow3w 1008 | PREV_Engine_Owner_SystemWorldToLocalRow0x 1012 | PREV_Engine_Owner_SystemWorldToLocalRow0y 1016 | PREV_Engine_Owner_SystemWorldToLocalRow0z 1020 | PREV_Engine_Owner_SystemWorldToLocalRow0w 1024 | PREV_Engine_Owner_SystemWorldToLocalRow1x 1028 | PREV_Engine_Owner_SystemWorldToLocalRow1y 1032 | PREV_Engine_Owner_SystemWorldToLocalRow1z 1036 | PREV_Engine_Owner_SystemWorldToLocalRow1w 1040 | PREV_Engine_Owner_SystemWorldToLocalRow2x 1044 | PREV_Engine_Owner_SystemWorldToLocalRow2y 1048 | PREV_Engine_Owner_SystemWorldToLocalRow2z 1052 | PREV_Engine_Owner_SystemWorldToLocalRow2w 1056 | PREV_Engine_Owner_SystemWorldToLocalRow3x 1060 | PREV_Engine_Owner_SystemWorldToLocalRow3y 1064 | PREV_Engine_Owner_SystemWorldToLocalRow3z 1068 | PREV_Engine_Owner_SystemWorldToLocalRow3w 1072 | PREV_Engine_Owner_SystemLocalToWorldTransposedRow0x 1076 | PREV_Engine_Owner_SystemLocalToWorldTransposedRow0y 1080 | PREV_Engine_Owner_SystemLocalToWorldTransposedRow0z 1084 | PREV_Engine_Owner_SystemLocalToWorldTransposedRow0w 1088 | PREV_Engine_Owner_SystemLocalToWorldTransposedRow1x 1092 | PREV_Engine_Owner_SystemLocalToWorldTransposedRow1y 1096 | PREV_Engine_Owner_SystemLocalToWorldTransposedRow1z 1100 | PREV_Engine_Owner_SystemLocalToWorldTransposedRow1w 1104 | PREV_Engine_Owner_SystemLocalToWorldTransposedRow2x 1108 | PREV_Engine_Owner_SystemLocalToWorldTransposedRow2y 1112 | PREV_Engine_Owner_SystemLocalToWorldTransposedRow2z 1116 | PREV_Engine_Owner_SystemLocalToWorldTransposedRow2w 1120 | PREV_Engine_Owner_SystemLocalToWorldTransposedRow3x 1124 | PREV_Engine_Owner_SystemLocalToWorldTransposedRow3y 1128 | PREV_Engine_Owner_SystemLocalToWorldTransposedRow3z 1132 | PREV_Engine_Owner_SystemLocalToWorldTransposedRow3w 1136 | PREV_Engine_Owner_SystemWorldToLocalTransposedRow0x 1140 | PREV_Engine_Owner_SystemWorldToLocalTransposedRow0y 1144 | PREV_Engine_Owner_SystemWorldToLocalTransposedRow0z 1148 | PREV_Engine_Owner_SystemWorldToLocalTransposedRow0w 1152 | PREV_Engine_Owner_SystemWorldToLocalTransposedRow1x 1156 | PREV_Engine_Owner_SystemWorldToLocalTransposedRow1y 1160 | PREV_Engine_Owner_SystemWorldToLocalTransposedRow1z 1164 | PREV_Engine_Owner_SystemWorldToLocalTransposedRow1w 1168 | PREV_Engine_Owner_SystemWorldToLocalTransposedRow2x 1172 | PREV_Engine_Owner_SystemWorldToLocalTransposedRow2y 1176 | PREV_Engine_Owner_SystemWorldToLocalTransposedRow2z 1180 | PREV_Engine_Owner_SystemWorldToLocalTransposedRow2w 1184 | PREV_Engine_Owner_SystemWorldToLocalTransposedRow3x 1188 | PREV_Engine_Owner_SystemWorldToLocalTransposedRow3y 1192 | PREV_Engine_Owner_SystemWorldToLocalTransposedRow3z 1196 | PREV_Engine_Owner_SystemWorldToLocalTransposedRow3w 1200 | PREV_Engine_Owner_SystemLocalToWorldNoScaleRow0x 1204 | PREV_Engine_Owner_SystemLocalToWorldNoScaleRow0y 1208 | PREV_Engine_Owner_SystemLocalToWorldNoScaleRow0z 1212 | PREV_Engine_Owner_SystemLocalToWorldNoScaleRow0w 1216 | PREV_Engine_Owner_SystemLocalToWorldNoScaleRow1x 1220 | PREV_Engine_Owner_SystemLocalToWorldNoScaleRow1y 1224 | PREV_Engine_Owner_SystemLocalToWorldNoScaleRow1z 1228 | PREV_Engine_Owner_SystemLocalToWorldNoScaleRow1w 1232 | PREV_Engine_Owner_SystemLocalToWorldNoScaleRow2x 1236 | PREV_Engine_Owner_SystemLocalToWorldNoScaleRow2y 1240 | PREV_Engine_Owner_SystemLocalToWorldNoScaleRow2z 1244 | PREV_Engine_Owner_SystemLocalToWorldNoScaleRow2w 1248 | PREV_Engine_Owner_SystemLocalToWorldNoScaleRow3x 1252 | PREV_Engine_Owner_SystemLocalToWorldNoScaleRow3y 1256 | PREV_Engine_Owner_SystemLocalToWorldNoScaleRow3z 1260 | PREV_Engine_Owner_SystemLocalToWorldNoScaleRow3w 1264 | PREV_Engine_Owner_SystemWorldToLocalNoScaleRow0x 1268 | PREV_Engine_Owner_SystemWorldToLocalNoScaleRow0y 1272 | PREV_Engine_Owner_SystemWorldToLocalNoScaleRow0z 1276 | PREV_Engine_Owner_SystemWorldToLocalNoScaleRow0w 1280 | PREV_Engine_Owner_SystemWorldToLocalNoScaleRow1x 1284 | PREV_Engine_Owner_SystemWorldToLocalNoScaleRow1y 1288 | PREV_Engine_Owner_SystemWorldToLocalNoScaleRow1z 1292 | PREV_Engine_Owner_SystemWorldToLocalNoScaleRow1w 1296 | PREV_Engine_Owner_SystemWorldToLocalNoScaleRow2x 1300 | PREV_Engine_Owner_SystemWorldToLocalNoScaleRow2y 1304 | PREV_Engine_Owner_SystemWorldToLocalNoScaleRow2z 1308 | PREV_Engine_Owner_SystemWorldToLocalNoScaleRow2w 1312 | PREV_Engine_Owner_SystemWorldToLocalNoScaleRow3x 1316 | PREV_Engine_Owner_SystemWorldToLocalNoScaleRow3y 1320 | PREV_Engine_Owner_SystemWorldToLocalNoScaleRow3z 1324 | PREV_Engine_Owner_SystemWorldToLocalNoScaleRow3w 1328 | PREV_Engine_Owner_Rotationx 1332 | PREV_Engine_Owner_Rotationy 1336 | PREV_Engine_Owner_Rotationz 1340 | PREV_Engine_Owner_Rotationw 1344 | PREV_Engine_Owner_Positionx 1348 | PREV_Engine_Owner_Positiony 1352 | PREV_Engine_Owner_Positionz 1356 | PREV_Engine_Owner_Positionw 1360 | PREV_Engine_Owner_Velocityx 1364 | PREV_Engine_Owner_Velocityy 1368 | PREV_Engine_Owner_Velocityz 1372 | PREV_Engine_Owner_Velocityw 1376 | PREV_Engine_Owner_SystemXAxisx 1380 | PREV_Engine_Owner_SystemXAxisy 1384 | PREV_Engine_Owner_SystemXAxisz 1388 | PREV_Engine_Owner_SystemXAxisw 1392 | PREV_Engine_Owner_SystemYAxisx 1396 | PREV_Engine_Owner_SystemYAxisy 1400 | PREV_Engine_Owner_SystemYAxisz 1404 | PREV_Engine_Owner_SystemYAxisw 1408 | PREV_Engine_Owner_SystemZAxisx 1412 | PREV_Engine_Owner_SystemZAxisy 1416 | PREV_Engine_Owner_SystemZAxisz 1420 | PREV_Engine_Owner_SystemZAxisw 1424 | PREV_Engine_Owner_Scalex 1428 | PREV_Engine_Owner_Scaley 1432 | PREV_Engine_Owner_Scalez 1436 | PREV_Engine_Owner_Scalew 1440 | PREV_Engine_Emitter_NumParticles 1444 | PREV_Engine_Emitter_TotalSpawnedParticles 1448 | PREV_Engine_Emitter_SpawnCountScale 1452 | PREV_Emitter_Age 1456 | PREV_Emitter_RandomSeed 1460 | PREV_Engine_Emitter_InstanceSeed 1464 | PREV_Engine_Emitter_PaddingInt32_0 1468 | PREV_Engine_Emitter_PaddingInt32_1 1472 | PREV_Constants_Emitter_InitializeParticle_Lifetime 1476 | PREV_Constants_Emitter_InitializeParticle_Colorx 1480 | PREV_Constants_Emitter_InitializeParticle_Colory 1484 | PREV_Constants_Emitter_InitializeParticle_Colorz 1488 | PREV_Constants_Emitter_InitializeParticle_Colorw 1492 | PREV_Constants_Emitter_InitializeParticle_Mass 1496 | PREV_Constants_Emitter_InitializeParticle_SpriteSizex 1500 | PREV_Constants_Emitter_InitializeParticle_SpriteSizey 1504 | PREV_Constants_Emitter_InitializeParticle_SpriteRotation 1508 | PREV_Constants_Emitter_InitializeParticle_MeshScalex 1512 | PREV_Constants_Emitter_InitializeParticle_MeshScaley 1516 | PREV_Constants_Emitter_InitializeParticle_MeshScalez 1520 | PREV_Constants_Emitter_TorusLocation_SurfacePosition 1524 | PREV_Constants_Emitter_TorusLocation_UDistribution 1528 | PREV_Constants_Emitter_TorusLocation_VDistribution 1532 | PREV_Constants_Emitter_TorusLocation_RandomSeed 1536 | PREV_Constants_Emitter_TorusLocation_HandleRadius 1540 | PREV_Constants_Emitter_TorusLocation_LargeRadius 1544 | PREV_Constants_Emitter_TorusLocation_NonUniformScalex 1548 | PREV_Constants_Emitter_TorusLocation_NonUniformScaley 1552 | PREV_Constants_Emitter_TorusLocation_NonUniformScalez 1556 | PREV_Constants_Emitter_TorusLocation_TorusAxisx 1560 | PREV_Constants_Emitter_TorusLocation_TorusAxisy 1564 | PREV_Constants_Emitter_TorusLocation_TorusAxisz 1568 | PREV_Constants_Emitter_TorusLocation_NormalizedAngleAroundTorusAxis 1572 | PREV_Constants_Emitter_TorusLocation_Offsetx 1576 | PREV_Constants_Emitter_TorusLocation_Offsety 1580 | PREV_Constants_Emitter_TorusLocation_Offsetz 1584 | PREV_Constants_Emitter_TorusLocation_SpawnGroupMask 1588 | PREV_Constants_Emitter_CurlNoiseForce001_RandomSeed 1592 | PREV_Constants_Emitter_CurlNoiseForce001_NoiseFrequency 1596 | PREV_Constants_Emitter_CurlNoiseForce001_PanNoiseFieldx 1600 | PREV_Constants_Emitter_CurlNoiseForce001_PanNoiseFieldy 1604 | PREV_Constants_Emitter_CurlNoiseForce001_PanNoiseFieldz 1608 | PREV_Constants_Emitter_CurlNoiseForce001_CurlNoiseConeMaskAngle 1612 | PREV_Constants_Emitter_CurlNoiseForce001_CurlNoiseConeMaskFalloffAngle 1616 | PREV_Constants_Emitter_CurlNoiseForce001_NoiseStrength 1620 | PREV_Constants_Emitter_CurlNoiseForce_RandomSeed 1624 | PREV_Constants_Emitter_CurlNoiseForce_NoiseFrequency 1628 | PREV_Constants_Emitter_CurlNoiseForce_PanNoiseFieldx 1632 | PREV_Constants_Emitter_CurlNoiseForce_PanNoiseFieldy 1636 | PREV_Constants_Emitter_CurlNoiseForce_PanNoiseFieldz 1640 | PREV_Constants_Emitter_CurlNoiseForce_CurlNoiseConeMaskAngle 1644 | PREV_Constants_Emitter_CurlNoiseForce_CurlNoiseConeMaskFalloffAngle 1648 | PREV_Constants_Emitter_CurlNoiseForce_NoiseStrength 1652 | PREV_Constants_Emitter_PointAttractionForce_AttractionRadius 1656 | PREV_Constants_Emitter_PointAttractionForce_AttractionStrength 1660 | PREV_Constants_Emitter_PointAttractionForce_FalloffExponent 1664 | PREV_Constants_Emitter_PointAttractionForce_KillRadius 1668 | PREV_Constants_Emitter_Drag_Drag 1672 | PREV_Constants_Emitter_Drag_RotationalDrag 1676 | PREV_Constants_Emitter_VortexForce_InfluenceFalloffRadius 1680 | PREV_Constants_Emitter_VortexForce_VortexAxisx 1684 | PREV_Constants_Emitter_VortexForce_VortexAxisy 1688 | PREV_Constants_Emitter_VortexForce_VortexAxisz 1692 | PREV_Constants_Emitter_VortexForce_VortexForceAmount 1696 | PREV_Constants_Emitter_VortexForce_OriginPullAmount 1700 | PREV_Constants_Emitter_SolveForcesAndVelocity_SpeedLimit 1704 | PREV_Constants_Emitter_SolveForcesAndVelocity_AccelerationLimit 1708 | PREV_Engine_ExecutionCount 1712 | PREV_Emitter_SpawnRate 1716 | PREV_Emitter_SpawnInterval 1720 | PREV_Emitter_InterpSpawnStartDt 1724 | PREV_Emitter_SpawnGroup 1728 | 13 1732 | 14 1736 | 1 1740 | 2 1744 | 0 1748 | 999 1752 | 6.28318548 1756 | 15 1760 | 4 1764 | 9.99999975e-06 1768 | 9.99999975e-05 1772 | True 1776 | False 1780 | 5 1784 | 1664525 1788 | 1 1792 | 1013904223 1796 | 8 1800 | 16777215 1804 | 16777216 1808 | 4096 1812 | 125 1816 | 6 1820 | 7 1824 | 9 1828 | 10 1832 | 11 1836 | 0 1840 | 1.20000005 1844 | 12 1848 | -1 1852 | 0.5 1856 | 0.959999979 1860 | 6 1864 | 0.980000019 1868 | 0.400000006 ------------------------------- Byte Code (304 Ops) ------------------------------- 0 | enter_stat_scope(C[1728]); 1 | R[0] = __OP__88; 2 | R[1] = addi(C[580], R[0]); 3 | R[0] = __OP__88; 4 | R[2] = i2f(R[0]); 5 | R[0] = mad(C[852], R[2], C[856]); 6 | R[2] = sub(C[0], R[0]); 7 | enter_stat_scope(C[1732]); 8 | R[0] = random(C[1736]); 9 | enter_stat_scope(C[1740]); 10 | R[3] = clamp(C[656], C[1744], C[1748]); 11 | R[4] = sub(C[1736], R[3]); 12 | R[5] = random(R[4]); 13 | R[4] = add(R[3], R[5]); 14 | R[3] = clamp(C[660], C[1744], C[1736]); 15 | R[5] = sub(C[1736], R[3]); 16 | R[6] = random(R[5]); 17 | R[5] = add(R[3], R[6]); 18 | R[3] = clamp(C[664], C[1744], C[1736]); 19 | R[6] = sub(C[1736], R[3]); 20 | R[7] = random(R[6]); 21 | R[6] = add(R[3], R[7]); 22 | R[3] = sqrt(R[4]); 23 | R[4] = mul(R[3], C[672]); 24 | R[3] = mul(R[6], C[1752]); 25 | R[7] = cos(R[3]); 26 | R[3] = mad(R[4], R[7], C[676]); 27 | R[7] = mul(R[5], C[1752]); 28 | R[8] = cos(R[7]); 29 | R[7] = mul(R[3], R[8]); 30 | R[8] = mul(R[5], C[1752]); 31 | R[5] = sin(R[8]); 32 | R[8] = mul(R[3], R[5]); 33 | R[3] = mul(R[6], C[1752]); 34 | R[5] = sin(R[3]); 35 | R[3] = mul(R[4], R[5]); 36 | R[4] = add(R[7], C[708]); 37 | R[5] = add(R[8], C[712]); 38 | R[6] = add(R[3], C[716]); 39 | exit_stat_scope(); 40 | exit_stat_scope(); 41 | enter_stat_scope(C[1756]); 42 | enter_stat_scope(C[1760]); 43 | R[3] = max(C[608], C[1764]); 44 | R[7] = sub(R[3], C[1768]); 45 | R[8] = cmplt(R[2], R[7]); 46 | R[7] = select(R[8], C[1772], C[1776]); 47 | R[8] = div(R[2], R[3]); 48 | exit_stat_scope(); 49 | enter_stat_scope(C[1780]); 50 | R[3] = muli(C[724], C[1784]); 51 | R[9] = muli(C[592], C[1784]); 52 | R[10] = muli(C[1788], C[1784]); 53 | R[11] = addi(R[3], C[1792]); 54 | R[3] = addi(R[9], C[1792]); 55 | R[9] = addi(R[10], C[1792]); 56 | R[10] = muli(R[3], R[9]); 57 | R[12] = addi(R[11], R[10]); 58 | R[10] = muli(R[9], R[12]); 59 | R[11] = addi(R[3], R[10]); 60 | R[3] = muli(R[12], R[11]); 61 | R[10] = addi(R[9], R[3]); 62 | R[3] = muli(R[11], R[10]); 63 | R[9] = addi(R[12], R[3]); 64 | R[3] = muli(R[10], R[9]); 65 | R[12] = addi(R[11], R[3]); 66 | R[3] = muli(R[9], R[12]); 67 | R[11] = addi(R[10], R[3]); 68 | R[3] = bit_rshift(R[9], C[1796]); 69 | R[9] = bit_rshift(R[12], C[1796]); 70 | R[10] = bit_rshift(R[11], C[1796]); 71 | R[11] = bit_and(R[3], C[1800]); 72 | R[3] = bit_and(R[9], C[1800]); 73 | R[9] = bit_and(R[10], C[1800]); 74 | R[10] = i2f(R[11]); 75 | R[11] = i2f(R[3]); 76 | R[3] = i2f(R[9]); 77 | R[9] = div(R[10], C[1804]); 78 | R[3] = mad(R[9], C[1808], R[4]); 79 | R[10] = mad(R[9], C[1808], R[5]); 80 | R[11] = mad(R[9], C[1808], R[6]); 81 | R[9] = mul(R[3], C[728]); 82 | R[3] = mul(R[10], C[728]); 83 | R[10] = mul(R[11], C[728]); 84 | R[11] = mul(C[732], C[8]); 85 | R[12] = mul(C[736], C[8]); 86 | R[13] = mul(C[740], C[8]); 87 | R[14] = sub(R[9], R[11]); 88 | R[9] = sub(R[3], R[12]); 89 | R[3] = sub(R[10], R[13]); 90 | R[10] = mul(R[14], C[1812]); 91 | R[11] = mul(R[9], C[1812]); 92 | R[9] = mul(R[3], C[1812]); 93 | SampleField_EmitterVectorField32[func0](R[10], R[11], R[9], R[3], R[12], R[13]); 94 | R[9] = mul(R[3], C[752]); 95 | R[3] = mul(R[12], C[752]); 96 | R[10] = mul(R[13], C[752]); 97 | exit_stat_scope(); 98 | enter_stat_scope(C[1816]); 99 | R[11] = muli(C[756], C[1784]); 100 | R[12] = muli(C[592], C[1784]); 101 | R[13] = muli(C[1740], C[1784]); 102 | R[14] = addi(R[11], C[1792]); 103 | R[11] = addi(R[12], C[1792]); 104 | R[12] = addi(R[13], C[1792]); 105 | R[13] = muli(R[11], R[12]); 106 | R[15] = addi(R[14], R[13]); 107 | R[13] = muli(R[12], R[15]); 108 | R[14] = addi(R[11], R[13]); 109 | R[11] = muli(R[15], R[14]); 110 | R[13] = addi(R[12], R[11]); 111 | R[11] = muli(R[14], R[13]); 112 | R[12] = addi(R[15], R[11]); 113 | R[11] = muli(R[13], R[12]); 114 | R[15] = addi(R[14], R[11]); 115 | R[11] = muli(R[12], R[15]); 116 | R[14] = addi(R[13], R[11]); 117 | R[11] = bit_rshift(R[12], C[1796]); 118 | R[12] = bit_rshift(R[15], C[1796]); 119 | R[13] = bit_rshift(R[14], C[1796]); 120 | R[14] = bit_and(R[11], C[1800]); 121 | R[11] = bit_and(R[12], C[1800]); 122 | R[12] = bit_and(R[13], C[1800]); 123 | R[13] = i2f(R[14]); 124 | R[14] = i2f(R[11]); 125 | R[11] = i2f(R[12]); 126 | R[12] = div(R[13], C[1804]); 127 | R[11] = mad(R[12], C[1808], R[4]); 128 | R[13] = mad(R[12], C[1808], R[5]); 129 | R[14] = mad(R[12], C[1808], R[6]); 130 | R[12] = mul(R[11], C[760]); 131 | R[11] = mul(R[13], C[760]); 132 | R[13] = mul(R[14], C[760]); 133 | R[14] = mul(R[12], C[1812]); 134 | R[12] = mul(R[11], C[1812]); 135 | R[11] = mul(R[13], C[1812]); 136 | SampleField_EmitterVectorField32[func1](R[14], R[12], R[11], R[13], R[15], R[16]); 137 | R[11] = mad(R[13], C[784], R[9]); 138 | R[9] = mad(R[15], C[784], R[3]); 139 | R[3] = mad(R[16], C[784], R[10]); 140 | exit_stat_scope(); 141 | enter_stat_scope(C[1820]); 142 | R[10] = neg(R[4]); 143 | R[12] = neg(R[5]); 144 | R[13] = neg(R[6]); 145 | R[14] = add(R[13], C[1768]); 146 | R[13] = mul(R[12], R[12]); 147 | R[15] = mad(R[10], R[10], R[13]); 148 | R[13] = mad(R[14], R[14], R[15]); 149 | R[15] = sqrt(R[13]); 150 | R[13] = mul(R[12], R[12]); 151 | R[16] = mad(R[10], R[10], R[13]); 152 | R[13] = mad(R[14], R[14], R[16]); 153 | R[16] = rsq(R[13]); 154 | R[13] = mul(R[10], R[16]); 155 | R[10] = mul(R[12], R[16]); 156 | R[12] = mul(R[14], R[16]); 157 | R[14] = pow(R[15], C[796]); 158 | R[16] = mul(C[792], R[14]); 159 | R[14] = cmpgt(R[15], C[788]); 160 | R[15] = select(R[14], C[1744], R[16]); 161 | R[14] = mad(R[13], R[15], R[11]); 162 | R[11] = mad(R[10], R[15], R[9]); 163 | R[9] = mad(R[12], R[15], R[3]); 164 | exit_stat_scope(); 165 | enter_stat_scope(C[1824]); 166 | R[3] = neg(R[4]); 167 | R[10] = neg(R[5]); 168 | R[12] = neg(R[6]); 169 | R[13] = mul(R[10], R[10]); 170 | R[15] = mad(R[3], R[3], R[13]); 171 | R[13] = mad(R[12], R[12], R[15]); 172 | R[15] = sqrt(R[13]); 173 | R[13] = cmplt(R[15], C[1764]); 174 | R[16] = select(R[13], C[1744], R[3]); 175 | R[3] = select(R[13], C[1744], R[10]); 176 | R[10] = select(R[13], C[1736], R[12]); 177 | R[12] = select(R[13], C[1736], R[15]); 178 | R[15] = div(R[16], R[12]); 179 | R[16] = div(R[3], R[12]); 180 | R[3] = div(R[10], R[12]); 181 | R[10] = select(R[13], C[1744], R[15]); 182 | R[12] = select(R[13], C[1744], R[16]); 183 | R[15] = select(R[13], C[1736], R[3]); 184 | R[3] = mul(R[12], C[824]); 185 | R[13] = mul(R[15], C[820]); 186 | R[16] = sub(R[3], R[13]); 187 | R[3] = mul(R[15], C[816]); 188 | R[13] = mul(R[10], C[824]); 189 | R[17] = sub(R[3], R[13]); 190 | R[3] = mul(R[10], C[820]); 191 | R[13] = mul(R[12], C[816]); 192 | R[18] = sub(R[3], R[13]); 193 | R[3] = neg(C[832]); 194 | R[13] = lerp(R[10], C[1744], R[3]); 195 | R[10] = lerp(R[12], C[1744], R[3]); 196 | R[12] = lerp(R[15], C[1744], R[3]); 197 | R[3] = add(R[16], R[13]); 198 | R[13] = add(R[17], R[10]); 199 | R[10] = add(R[18], R[12]); 200 | R[12] = mul(R[13], R[13]); 201 | R[15] = mad(R[3], R[3], R[12]); 202 | R[12] = mad(R[10], R[10], R[15]); 203 | R[15] = rsq(R[12]); 204 | R[12] = mul(R[3], R[15]); 205 | R[3] = mul(R[13], R[15]); 206 | R[13] = mul(R[10], R[15]); 207 | R[10] = mad(R[12], C[828], R[14]); 208 | R[12] = mad(R[3], C[828], R[11]); 209 | R[3] = mad(R[13], C[828], R[9]); 210 | exit_stat_scope(); 211 | enter_stat_scope(C[1828]); 212 | R[9] = max(C[628], C[1768]); 213 | R[11] = rcp(R[9]); 214 | R[9] = mul(R[11], R[10]); 215 | R[13] = mul(R[11], R[12]); 216 | R[14] = mul(R[11], R[3]); 217 | R[11] = mul(R[9], R[2]); 218 | R[9] = mul(R[13], R[2]); 219 | R[13] = mul(R[14], R[2]); 220 | R[14] = max(C[804], C[1744]); 221 | R[15] = mad(R[2], R[14], C[1736]); 222 | R[14] = div(R[11], R[15]); 223 | R[11] = div(R[9], R[15]); 224 | R[9] = div(R[13], R[15]); 225 | R[13] = mad(R[14], R[2], R[4]); 226 | R[15] = mad(R[11], R[2], R[5]); 227 | R[16] = mad(R[9], R[2], R[6]); 228 | exit_stat_scope(); 229 | enter_stat_scope(C[1832]); 230 | AudioSpectrum_EmitterAudioSpectrum[func2](R[8], C[1836], R[17]); 231 | R[18] = mul(R[14], R[17]); 232 | R[14] = mad(R[18], C[1840], C[1736]); 233 | R[18] = mul(R[11], R[17]); 234 | R[11] = mad(R[18], C[1840], C[1736]); 235 | R[18] = mul(R[9], R[17]); 236 | R[9] = mad(R[18], C[1840], C[1736]); 237 | exit_stat_scope(); 238 | enter_stat_scope(C[1844]); 239 | R[17] = __OP__88; 240 | R[18] = __OP__88; 241 | R[19] = i2f(R[18]); 242 | R[18] = addi(R[17], C[1848]); 243 | R[17] = i2f(R[18]); 244 | R[18] = div(R[19], R[17]); 245 | AudioSpectrum_EmitterAudioSpectrum001[func3](R[18], C[1836], R[17]); 246 | R[18] = mul(R[17], C[1852]); 247 | R[19] = lerp(R[18], C[612], C[1856]); 248 | R[18] = __OP__88; 249 | R[20] = __OP__88; 250 | R[21] = i2f(R[20]); 251 | R[20] = addi(R[18], C[1848]); 252 | R[18] = i2f(R[20]); 253 | R[20] = div(R[21], R[18]); 254 | SampleAudioBuffer_EmitterAudioOscilloscope[func4](R[20], C[1836], R[18]); 255 | SampleAudioBuffer_EmitterAudioOscilloscope[func5](R[20], C[1788], R[21]); 256 | R[20] = add(R[18], R[21]); 257 | R[18] = mul(R[20], C[1860]); 258 | R[20] = lerp(R[18], C[616], C[1864]); 259 | R[18] = mul(C[1868], R[17]); 260 | exit_stat_scope(); 261 | exit_stat_scope(); 262 | [R][17] = AcquireIndex(0, [R][7]); 263 | OutputDataFloat(0, 0, [R][17], [R][2]); 264 | OutputDataFloat(0, 1, [R][17], [R][19]); 265 | OutputDataFloat(0, 2, [R][17], [R][20]); 266 | OutputDataFloat(0, 3, [R][17], [C][1736]); 267 | OutputDataFloat(0, 4, [R][17], [R][18]); 268 | OutputDataFloat(0, 5, [R][17], [R][4]); 269 | OutputDataFloat(0, 6, [R][17], [R][5]); 270 | OutputDataFloat(0, 7, [R][17], [R][6]); 271 | OutputDataFloat(0, 8, [R][17], [C][608]); 272 | OutputDataFloat(0, 9, [R][17], [C][628]); 273 | OutputDataFloat(0, 10, [R][17], [R][0]); 274 | OutputDataFloat(0, 11, [R][17], [R][8]); 275 | OutputDataFloat(0, 12, [R][17], [R][13]); 276 | OutputDataFloat(0, 13, [R][17], [R][15]); 277 | OutputDataFloat(0, 14, [R][17], [R][16]); 278 | OutputDataFloat(0, 15, [R][17], [R][10]); 279 | OutputDataFloat(0, 16, [R][17], [R][12]); 280 | OutputDataFloat(0, 17, [R][17], [R][3]); 281 | OutputDataFloat(0, 18, [R][17], [R][4]); 282 | OutputDataFloat(0, 19, [R][17], [R][5]); 283 | OutputDataFloat(0, 20, [R][17], [R][6]); 284 | OutputDataFloat(0, 21, [R][17], [C][1744]); 285 | OutputDataFloat(0, 22, [R][17], [C][1744]); 286 | OutputDataFloat(0, 23, [R][17], [C][1744]); 287 | OutputDataFloat(0, 24, [R][17], [R][4]); 288 | OutputDataFloat(0, 25, [R][17], [R][5]); 289 | OutputDataFloat(0, 26, [R][17], [R][6]); 290 | OutputDataFloat(0, 27, [R][17], [C][1744]); 291 | OutputDataFloat(0, 28, [R][17], [C][1744]); 292 | OutputDataFloat(0, 29, [R][17], [C][1744]); 293 | OutputDataFloat(0, 30, [R][17], [C][1736]); 294 | OutputDataFloat(0, 31, [R][17], [C][1736]); 295 | OutputDataFloat(0, 32, [R][17], [C][1736]); 296 | OutputDataFloat(0, 33, [R][17], [C][1744]); 297 | OutputDataFloat(0, 34, [R][17], [C][632]); 298 | OutputDataFloat(0, 35, [R][17], [C][636]); 299 | OutputDataInt(0, 0, [R][17], [R][1]); 300 | OutputDataFloat(0, 36, [R][17], [R][14]); 301 | OutputDataFloat(0, 37, [R][17], [R][11]); 302 | OutputDataFloat(0, 38, [R][17], [R][9]); 303 | exit_stat_scope(); ------------------------------- v0Q67_-8_8i45s8@tkwu5545s8@tkwu5545s8@tkwu55 45s8@tkwu5545s8@tkwu55 45s8@tkwu55Q>EQ898`-88l|wkwuxkwuykwuzkwu {kwu|kwu}kwu ~kwu$kwu(kwu,kwu0kwu<kwu@kwuDkwuHkwuLkwuPkwuTkwuXkwu\kwu`kwudkwuhkwulkwux-]|o;o:@F? A?PG?@<FzD?BL?@F7TPNiagaraScript /Niagara/DefaultAssets/DefaultEmitter.DefaultEmitter:UpdateScript_b8w~u8rO}`,@| 'iß Q>E&-7Emitter.LocalspacefNiagaraEmitter /Game/NiagaraAudioVisualization/Effects/NS_DansingSmoke.NS_DansingSmoke:DansingSmoke_0GPUComputeSim;8A;-]Kq(j)Kԋ-8E8;-]p^w@¾l-]4ޕ(f:~-]ie(٩85&-]]{Fis{U-]@,AS~VnW-]4ޕ(f:~-]/ !Y!4׋-]E{UѳH`u-]@,AS~VnW-]E{UѳH`u-]@,AS~VnW-]E{UѳH`u-]@,AS~VnW-]ovh j0kT-]t E#(֢PNЕ-]ȑ#7&kBz-]ȑ#7&kBz-]r|G8^)J2(݋-]/2eb:^|롵 =.-]r|G8^)J2(݋-]r|G8^)J2(݋-]}߉i|=QS]-]k:PhjRhfu!_3z-] [ ɡa|jV-] [ ɡa|jV-] [ ɡa|jV-]4ޕ(f:~-]v4ŵ񊑍-=R-]؉x6d(Z1qSj)--]v4ŵ񊑍-=R-]؉x6d(Z1qSj)--]v4ŵ񊑍-=R-]؉x6d(Z1qSj)--]ciҏNnZgв8Dvҋ-] s68CV2L>؋-]4ޕ(f:~-]r|G8^)J2(݋-]r|G8^)J2(݋-]r|G8^)J2(݋-].'HDPR(E-] PlAGtnGq|R-] s68CV2L>؋-]4ޕ(f:~-]r|G8^)J2(݋-]r|G8^)J2(݋-]r|G8^)J2(݋-].'HDPR(E-] PlAGtnGq|R-].$7LjXaU^-]4ޕ(f:~-]̩"Ew0_%Zps-]؉x6d(Z1qSj)--]N>) &8|\[^P- *-]O"gZ5V.h[΋-]4ޕ(f:~-]H<|H+-]r|G8^)J2(݋-]UJ\핛GKʄn-]4ޕ(f:~-]r|G8^)J2(݋-]r|G8^)J2(݋-]=?NE&-7Emitter.LocalspacefNiagaraEmitter /Game/NiagaraAudioVisualization/Effects/NS_DansingSmoke.NS_DansingSmoke:DansingSmoke_0GPUComputeSim;8A;-]Kq(j)Kԋ-8E8;-]p^w@¾l-]4ޕ(f:~-]ie(٩85&-]]{Fis{U-]@,AS~VnW-]4ޕ(f:~-]/ !Y!4׋-]E{UѳH`u-]@,AS~VnW-]E{UѳH`u-]@,AS~VnW-]E{UѳH`u-]@,AS~VnW-]ovh j0kT-]t E#(֢PNЕ-]ȑ#7&kBz-]ȑ#7&kBz-]r|G8^)J2(݋-]/2eb:^|롵 =.-]r|G8^)J2(݋-]r|G8^)J2(݋-]}߉i|=QS]-]k:PhjRhfu!_3z-] [ ɡa|jV-] [ ɡa|jV-] [ ɡa|jV-]4ޕ(f:~-]v4ŵ񊑍-=R-]؉x6d(Z1qSj)--]v4ŵ񊑍-=R-]؉x6d(Z1qSj)--]v4ŵ񊑍-=R-]؉x6d(Z1qSj)--]ciҏNnZgв8Dvҋ-] s68CV2L>؋-]4ޕ(f:~-]r|G8^)J2(݋-]r|G8^)J2(݋-]r|G8^)J2(݋-].'HDPR(E-] PlAGtnGq|R-] s68CV2L>؋-]4ޕ(f:~-]r|G8^)J2(݋-]r|G8^)J2(݋-]r|G8^)J2(݋-].'HDPR(E-] PlAGtnGq|R-].$7LjXaU^-]4ޕ(f:~-]̩"Ew0_%Zps-]؉x6d(Z1qSj)--]N>) &8|\[^P- *-]O"gZ5V.h[΋-]4ޕ(f:~-]H<|H+-]r|G8^)J2(݋-]UJ\핛GKʄn-]4ޕ(f:~-]r|G8^)J2(݋-]r|G8^)J2(݋-]=?N4-848|x(kwulkwukwukwukwukwukwukwukwukwukwukwu kwu kwu0kwu2kwuykwukwu-M88h45s8@tkwu-588I55HL45s8@tkwu-[88&I45-88xkwukwu-88Lxkwu5PLQLKL@LVS lvTLUL[LSL3k55S 45-88xkwukwu-88Lxkwu5PLQLKL@LVS lvTLUL[LSL3k55S 55HL45s8@tkwu-588I55HL45s8@tkwu-88I458-88x,kwukwuhkwu-88Lx,kwu5PLQLKL@LVS lvTLUL[LSL3k55S 55HL45s8@tkwu-88I45-88xkwukwuhkwu-88Lx,kwu5PLQLKL@LVS lvTLUL[LSL3k55S 45-88xkwukwuhkwu-88Lx,kwu5PLQLKL@LVS lvTLUL[LSL3k55S 55HL45s8@tkwu-88I458-88x,kwukwuhkwu-88Lx,kwu5PLQLKL@LVS lvTLUL[LSL3k55S 55HLd-8d8Z455-Lk-58k8455-Lk-58k84585-Lk-58k84585-Lk-58k8455-Lk-58k8455-Lk-58k86-8 68xoh5eg5eh5g5h5g5h5g5h5g5h5g5h5g5h5g5h59g58h5qg5ph5~g5h5g57// Shader generated by Niagara HLSL Translator struct NiagaraID { int Index; int AcquireTag; }; cbuffer FNiagaraGlobalParameters { float Engine_DeltaTime; float Engine_InverseDeltaTime; float Engine_Time; float Engine_RealTime; int Engine_QualityLevel; int Engine_PaddingInt32_0; int Engine_PaddingInt32_1; int Engine_PaddingInt32_2; } cbuffer FNiagaraSystemParameters { float Engine_Owner_TimeSinceRendered; float Engine_Owner_LODDistance; float Engine_Owner_LODDistanceFraction; float Engine_System_Age; int Engine_Owner_ExecutionState; int Engine_System_TickCount; int Engine_System_NumEmitters; int Engine_System_NumEmittersAlive; int Engine_System_SignificanceIndex; int Engine_System_PaddingInt32_0; int Engine_System_PaddingInt32_1; int Engine_System_PaddingInt32_2; } cbuffer FNiagaraOwnerParameters { float4x4 Engine_Owner_SystemLocalToWorld; float4x4 Engine_Owner_SystemWorldToLocal; float4x4 Engine_Owner_SystemLocalToWorldTransposed; float4x4 Engine_Owner_SystemWorldToLocalTransposed; float4x4 Engine_Owner_SystemLocalToWorldNoScale; float4x4 Engine_Owner_SystemWorldToLocalNoScale; float4 Engine_Owner_Rotation; float4 Engine_Owner_Position; float4 Engine_Owner_Velocity; float4 Engine_Owner_SystemXAxis; float4 Engine_Owner_SystemYAxis; float4 Engine_Owner_SystemZAxis; float4 Engine_Owner_Scale; } cbuffer FNiagaraEmitterParameters { int Engine_Emitter_NumParticles; int Engine_Emitter_TotalSpawnedParticles; float Engine_Emitter_SpawnCountScale; float Emitter_Age; int Emitter_RandomSeed; int Engine_Emitter_InstanceSeed; int Engine_Emitter_PaddingInt32_0; int Engine_Emitter_PaddingInt32_1; } cbuffer FNiagaraExternalParameters { int Constants_Emitter_CurlNoiseForce001_RandomSeed; float Constants_Emitter_CurlNoiseForce001_NoiseFrequency; float3 Constants_Emitter_CurlNoiseForce001_PanNoiseField; float Constants_Emitter_CurlNoiseForce001_CurlNoiseConeMaskAngle; float Constants_Emitter_CurlNoiseForce001_CurlNoiseConeMaskFalloffAngle; float Constants_Emitter_CurlNoiseForce001_NoiseStrength; int Constants_Emitter_CurlNoiseForce_RandomSeed; float Constants_Emitter_CurlNoiseForce_NoiseFrequency; float3 Constants_Emitter_CurlNoiseForce_PanNoiseField; float Constants_Emitter_CurlNoiseForce_CurlNoiseConeMaskAngle; float Constants_Emitter_CurlNoiseForce_CurlNoiseConeMaskFalloffAngle; float Constants_Emitter_CurlNoiseForce_NoiseStrength; float Constants_Emitter_PointAttractionForce_AttractionRadius; float Constants_Emitter_PointAttractionForce_AttractionStrength; float Constants_Emitter_PointAttractionForce_FalloffExponent; float Constants_Emitter_PointAttractionForce_KillRadius; float Constants_Emitter_Drag_Drag; float Constants_Emitter_Drag_RotationalDrag; float Constants_Emitter_VortexForce_InfluenceFalloffRadius; float3 Constants_Emitter_VortexForce_VortexAxis; float Constants_Emitter_VortexForce_VortexForceAmount; float Constants_Emitter_VortexForce_OriginPullAmount; float Constants_Emitter_SolveForcesAndVelocity_SpeedLimit; float Constants_Emitter_SolveForcesAndVelocity_AccelerationLimit; } struct FParamMap0_VortexForce { float3 VortexOrigin; }; struct FParamMap0_Transient { bool FirstFrame; float PhysicsDeltaTime; float PhysicsDrag; float3 PhysicsForce; float PhysicsRotationalDrag; }; struct FParamMap0_SolveForcesAndVelocity { float DeltaTime; float3 Force; float Mass; float3 Position; float3 PreviousVelocity; float3 Velocity; bool WritetoIntrinsicProperties; }; struct FParamMap0_PointAttractionForce { float3 AttractorPosition; bool KillWithinRadius; bool UseFalloff; }; struct FParamMap0_ParticleState { float DeltaTime; float Lifetime; }; struct FParamMap0_Particles_Previous { float3 Position; float3 Velocity; }; struct FParamMap0_Particles_Presolve { float3 PhysicsForce; float3 Position; float3 Velocity; }; struct FParamMap0_Particles { float Age; float4 Color; float3 Direction; float Lifetime; float Mass; float MaterialRandom; float NormalizedAge; float3 Position; FParamMap0_Particles_Presolve Presolve; FParamMap0_Particles_Previous Previous; float3 Scale; float SpriteRotation; float2 SpriteSize; int UniqueID; float3 Velocity; }; struct FParamMap0_OUTPUT_VAR_SolveForcesAndVelocity { float IncomingPhysicsDrag; float3 IncomingPhysicsForce; float3 Position; float3 Velocity; }; struct FParamMap0_OUTPUT_VAR_ParticleState { bool FirstFrame; }; struct FParamMap0_OUTPUT_VAR_CurlNoiseForce001 { float3 CurlNoiseForce; }; struct FParamMap0_OUTPUT_VAR_CurlNoiseForce { float3 CurlNoiseForce; }; struct FParamMap0_OUTPUT_VAR { FParamMap0_OUTPUT_VAR_CurlNoiseForce CurlNoiseForce; FParamMap0_OUTPUT_VAR_CurlNoiseForce001 CurlNoiseForce001; FParamMap0_OUTPUT_VAR_ParticleState ParticleState; FParamMap0_OUTPUT_VAR_SolveForcesAndVelocity SolveForcesAndVelocity; }; struct FParamMap0_Local_VortexForce { float ForceAmount; float InverseNormalizedRange; float NormalizedRange; float3 OriginVector; float3 ParticlesPosition; float3 VortexOrigin; float3 VortexVector; }; struct FParamMap0_Local_SolveForcesAndVelocity { float DeltaTime; float Mass; float3 PhysicsForce; }; struct FParamMap0_Local_PointAttractionForce { float3 PointOriginVec; float PointOriginVecLength; }; struct FParamMap0_Local_CurlNoiseForce001 { float AgeAdvancement; float DeterministicOffset; float Falloff; float3 SampledNoise; float3 SamplePosition; }; struct FParamMap0_Local_CurlNoiseForce { float AgeAdvancement; float DeterministicOffset; float Falloff; float3 SampledNoise; float3 SamplePosition; }; struct FParamMap0_Local { FParamMap0_Local_CurlNoiseForce CurlNoiseForce; FParamMap0_Local_CurlNoiseForce001 CurlNoiseForce001; FParamMap0_Local_PointAttractionForce PointAttractionForce; FParamMap0_Local_SolveForcesAndVelocity SolveForcesAndVelocity; FParamMap0_Local_VortexForce VortexForce; }; struct FParamMap0_Engine_System { float Age; int NumEmitters; int NumEmittersAlive; int PaddingInt32_0; int PaddingInt32_1; int PaddingInt32_2; int SignificanceIndex; int TickCount; }; struct FParamMap0_Engine_Owner { int ExecutionState; float LODDistance; float LODDistanceFraction; float3 Position; float4 Rotation; float3 Scale; float4x4 SystemLocalToWorld; float4x4 SystemLocalToWorldNoScale; float4x4 SystemLocalToWorldTransposed; float4x4 SystemWorldToLocal; float4x4 SystemWorldToLocalNoScale; float4x4 SystemWorldToLocalTransposed; float3 SystemXAxis; float3 SystemYAxis; float3 SystemZAxis; float TimeSinceRendered; float3 Velocity; }; struct FParamMap0_Engine_Emitter { int InstanceSeed; int NumParticles; int PaddingInt32_0; int PaddingInt32_1; float SpawnCountScale; int TotalSpawnedParticles; }; struct FParamMap0_Engine { float DeltaTime; FParamMap0_Engine_Emitter Emitter; float InverseDeltaTime; FParamMap0_Engine_Owner Owner; int PaddingInt32_0; int PaddingInt32_1; int PaddingInt32_2; int QualityLevel; float RealTime; FParamMap0_Engine_System System; float Time; }; struct FParamMap0_Emitter { float Age; int RandomSeed; }; struct FParamMap0_DataInstance { bool Alive; }; struct FParamMap0_CurlNoiseForce001 { float CurlNoiseConeMaskAngle; float3 CurlNoiseConeMaskAxis; float CurlNoiseConeMaskFalloffAngle; float3 SamplePosition; }; struct FParamMap0_CurlNoiseForce { float CurlNoiseConeMaskAngle; float3 CurlNoiseConeMaskAxis; float CurlNoiseConeMaskFalloffAngle; float3 SamplePosition; }; struct FParamMap0_Constants_Emitter_VortexForce { float InfluenceFalloffRadius; float OriginPullAmount; float3 VortexAxis; float VortexForceAmount; }; struct FParamMap0_Constants_Emitter_SolveForcesAndVelocity { float AccelerationLimit; float SpeedLimit; }; struct FParamMap0_Constants_Emitter_PointAttractionForce { float AttractionRadius; float AttractionStrength; float FalloffExponent; float KillRadius; }; struct FParamMap0_Constants_Emitter_Drag { float Drag; float RotationalDrag; }; struct FParamMap0_Constants_Emitter_CurlNoiseForce001 { float CurlNoiseConeMaskAngle; float CurlNoiseConeMaskFalloffAngle; float NoiseFrequency; float NoiseStrength; float3 PanNoiseField; int RandomSeed; }; struct FParamMap0_Constants_Emitter_CurlNoiseForce { float CurlNoiseConeMaskAngle; float CurlNoiseConeMaskFalloffAngle; float NoiseFrequency; float NoiseStrength; float3 PanNoiseField; int RandomSeed; }; struct FParamMap0_Constants_Emitter { FParamMap0_Constants_Emitter_CurlNoiseForce CurlNoiseForce; FParamMap0_Constants_Emitter_CurlNoiseForce001 CurlNoiseForce001; FParamMap0_Constants_Emitter_Drag Drag; FParamMap0_Constants_Emitter_PointAttractionForce PointAttractionForce; FParamMap0_Constants_Emitter_SolveForcesAndVelocity SolveForcesAndVelocity; FParamMap0_Constants_Emitter_VortexForce VortexForce; }; struct FParamMap0_Constants { FParamMap0_Constants_Emitter Emitter; }; struct FParamMap0 { FParamMap0_Constants Constants; FParamMap0_CurlNoiseForce CurlNoiseForce; FParamMap0_CurlNoiseForce001 CurlNoiseForce001; FParamMap0_DataInstance DataInstance; FParamMap0_Emitter Emitter; FParamMap0_Engine Engine; FParamMap0_Local Local; FParamMap0_OUTPUT_VAR OUTPUT_VAR; FParamMap0_Particles Particles; FParamMap0_ParticleState ParticleState; FParamMap0_PointAttractionForce PointAttractionForce; FParamMap0_SolveForcesAndVelocity SolveForcesAndVelocity; FParamMap0_Transient Transient; FParamMap0_VortexForce VortexForce; }; struct FSimulationContext { FParamMap0 Map; }; static float HackSpawnInterp = 1.0; void ParticleState_Emitter_Func_(inout FSimulationContext Context); void SampleField_EmitterVectorField32(float3 In_SamplePoint, out float3 Out_SampledValue); void CurlNoiseForce001_Emitter_Func_(int In_Emitter_RandomSeed, inout FSimulationContext Context); void CurlNoiseForce_Emitter_Func_(int In_Emitter_RandomSeed, inout FSimulationContext Context); void PointAttractionForce_SimulationPosition_Emitter_Func_(out float3 Out_OutPosition, inout FSimulationContext Context); void TransformBase_Func_(int In_SourceSpace, int In_DestinationSpace, float4x4 In_LocalToWorldTransform, float4x4 In_WorldToLocalTransform, bool In_bLocalSpace, out bool Out_bUseOriginal, out float4x4 Out_OutTransform, out bool Out_LocalToWorld, inout FSimulationContext Context); void PointAttractionForce_NF_TransformPosition_Emitter_Func_(float3 In_InPosition, int In_SourceSpace, int In_DestinationSpace, bool In_ApplyScale, out float3 Out_OutPosition, inout FSimulationContext Context); void PointAttractionForce_Emitter_Func_(inout FSimulationContext Context); void Drag_Emitter_Func_(inout FSimulationContext Context); void VortexForce_SimulationPosition_Emitter_Func_(out float3 Out_OutPosition, inout FSimulationContext Context); void DirectionAndLengthSafe_Func_(float3 In_V, float3 In_Fallback, float In_Threshold, float In_FallbackLength, out float3 Out_Direction, out float Out_Length, out bool Out_BelowThreshold, inout FSimulationContext Context); void NormalizeDistanceRange_Func_(float3 In_StartPosition, float3 In_EndPosition, float In_Distance, float3 In_FallbackVector, out float Out_NormalizedRange, out float Out_InverseNormalizedRange, out float3 Out_NormalizedVectorBetweenPositions, out bool Out_WithinRange, inout FSimulationContext Context); void VortexForce_Emitter_Func_(inout FSimulationContext Context); void SolveForcesAndVelocity_Emitter_Func_(inout FSimulationContext Context); void AudioSpectrum_EmitterAudioSpectrum(float In_NormalizedPositionInSpectrum, int In_ChannelIndex, out float Out_Amplitude); void NewNiagaraScriptScript_Emitter_Func_(inout FSimulationContext Context); void NormalizedExecutionIndex_Func_(int In_EngineExecutionCount, bool In_NormalizedRangeIncludesOne, out float Out_NormalizedExecIndex, inout FSimulationContext Context); void AudioSpectrum_EmitterAudioSpectrum001(float In_NormalizedPositionInSpectrum, int In_ChannelIndex, out float Out_Amplitude); void SampleAudioBuffer_EmitterAudioOscilloscope(float In_NormalizedPositionInBuffer, int In_ChannelIndex, out float Out_Amplitude); void ColorByAudioSpectrum_GetAudioVolume_Emitter_Func_(out float Out_Volume, inout FSimulationContext Context); void ColorByAudioSpectrum_Emitter_Func_(inout FSimulationContext Context); float GetSpawnInterpolation(); void ParticleState_Emitter_Func_(inout FSimulationContext Context) { bool Result = NiagaraAll(Context.Map.Particles.Age <= Context.Map.Engine.DeltaTime); Context.Map.OUTPUT_VAR.ParticleState.FirstFrame = Result; Context.Map.Transient.FirstFrame = Result; float Result1 = Context.Map.Particles.Age + Context.Map.ParticleState.DeltaTime; float Constant1 = 1e-05; float Result2 = max(Context.Map.ParticleState.Lifetime, Constant1); float Constant2 = 0.0001; float Result3 = Result2 - Constant2; bool Result4 = NiagaraAll(Result1 < Result3); bool Constant3 = false; bool bool_IfResult; if(Result4) { bool_IfResult = Context.Map.DataInstance.Alive; } else { bool_IfResult = Constant3; } float Result5 = Result1 / Result2; Context.Map.DataInstance.Alive = bool_IfResult; Context.Map.Particles.Age = Result1; Context.Map.Particles.NormalizedAge = Result5; } void CurlNoiseForce001_Emitter_Func_(int In_Emitter_RandomSeed, inout FSimulationContext Context) { bool Constant13 = false; float AgeAdvancement_IfResult; if(Constant13) { AgeAdvancement_IfResult = Context.Map.Emitter.Age; } else { AgeAdvancement_IfResult = Context.Map.Engine.Time; } float Constant14 = 4096; int Constant15 = 0; float Result6 = rand_float(Constant14, Context.Map.Constants.Emitter.CurlNoiseForce001.RandomSeed, Context.Map.Emitter.RandomSeed, Constant15); Context.Map.Local.CurlNoiseForce001.AgeAdvancement = AgeAdvancement_IfResult; Context.Map.Local.CurlNoiseForce001.DeterministicOffset = Result6; Context.Map.Local.CurlNoiseForce001.SamplePosition = Context.Map.CurlNoiseForce001.SamplePosition; float3 Result7 = Context.Map.Local.CurlNoiseForce001.DeterministicOffset + Context.Map.Local.CurlNoiseForce001.SamplePosition; float3 Result8 = Result7 * Context.Map.Constants.Emitter.CurlNoiseForce001.NoiseFrequency; float3 Result9 = Context.Map.Constants.Emitter.CurlNoiseForce001.PanNoiseField * Context.Map.Local.CurlNoiseForce001.AgeAdvancement; float3 Result10 = Result8 - Result9; float Constant16 = 125; float3 Result11 = Result10 * Constant16; float3 SampleField_EmitterVectorField32Output_SampledValue; SampleField_EmitterVectorField32(Result11, SampleField_EmitterVectorField32Output_SampledValue); Context.Map.Local.CurlNoiseForce001.SampledNoise = SampleField_EmitterVectorField32Output_SampledValue; float Constant17 = 1; Context.Map.Local.CurlNoiseForce001.Falloff = Constant17; Context.Map.CurlNoiseForce001.CurlNoiseConeMaskAngle = Context.Map.Constants.Emitter.CurlNoiseForce001.CurlNoiseConeMaskAngle; Context.Map.CurlNoiseForce001.CurlNoiseConeMaskFalloffAngle = Context.Map.Constants.Emitter.CurlNoiseForce001.CurlNoiseConeMaskFalloffAngle; Context.Map.CurlNoiseForce001.CurlNoiseConeMaskAxis = Context.Map.CurlNoiseForce001.CurlNoiseConeMaskAxis; float3 Result12 = Context.Map.Local.CurlNoiseForce001.SampledNoise * Context.Map.Constants.Emitter.CurlNoiseForce001.NoiseStrength; float3 Result13 = Context.Map.Transient.PhysicsForce + Result12; Context.Map.Transient.PhysicsForce = Result13; Context.Map.OUTPUT_VAR.CurlNoiseForce001.CurlNoiseForce = Result12; } void CurlNoiseForce_Emitter_Func_(int In_Emitter_RandomSeed, inout FSimulationContext Context) { bool Constant25 = false; float AgeAdvancement_IfResult1; if(Constant25) { AgeAdvancement_IfResult1 = Context.Map.Emitter.Age; } else { AgeAdvancement_IfResult1 = Context.Map.Engine.Time; } float Constant26 = 4096; int Constant27 = 0; float Result14 = rand_float(Constant26, Context.Map.Constants.Emitter.CurlNoiseForce.RandomSeed, Context.Map.Emitter.RandomSeed, Constant27); Context.Map.Local.CurlNoiseForce.AgeAdvancement = AgeAdvancement_IfResult1; Context.Map.Local.CurlNoiseForce.DeterministicOffset = Result14; Context.Map.Local.CurlNoiseForce.SamplePosition = Context.Map.CurlNoiseForce.SamplePosition; float3 Result15 = Context.Map.Local.CurlNoiseForce.DeterministicOffset + Context.Map.Local.CurlNoiseForce.SamplePosition; float3 Result16 = Result15 * Context.Map.Constants.Emitter.CurlNoiseForce.NoiseFrequency; float Constant28 = 125; float3 Result17 = Result16 * Constant28; float3 SampleField_EmitterVectorField32Output_SampledValue1; SampleField_EmitterVectorField32(Result17, SampleField_EmitterVectorField32Output_SampledValue1); Context.Map.Local.CurlNoiseForce.SampledNoise = SampleField_EmitterVectorField32Output_SampledValue1; float Constant29 = 1; Context.Map.Local.CurlNoiseForce.Falloff = Constant29; Context.Map.CurlNoiseForce.CurlNoiseConeMaskAngle = Context.Map.Constants.Emitter.CurlNoiseForce.CurlNoiseConeMaskAngle; Context.Map.CurlNoiseForce.CurlNoiseConeMaskFalloffAngle = Context.Map.Constants.Emitter.CurlNoiseForce.CurlNoiseConeMaskFalloffAngle; Context.Map.CurlNoiseForce.CurlNoiseConeMaskAxis = Context.Map.CurlNoiseForce.CurlNoiseConeMaskAxis; float3 Result18 = Context.Map.Local.CurlNoiseForce.SampledNoise * Context.Map.Constants.Emitter.CurlNoiseForce.NoiseStrength; float3 Result19 = Context.Map.Transient.PhysicsForce + Result18; Context.Map.Transient.PhysicsForce = Result19; Context.Map.OUTPUT_VAR.CurlNoiseForce.CurlNoiseForce = Result18; } void PointAttractionForce_SimulationPosition_Emitter_Func_(out float3 Out_OutPosition, inout FSimulationContext Context) { bool Constant30 = true; float3 Constant31 = float3(0,0,0); float3 Vector_IfResult; if(Constant30) { Vector_IfResult = Constant31; } else { Vector_IfResult = Context.Map.Engine.Owner.Position; } Out_OutPosition = Vector_IfResult; } void TransformBase_Func_(int In_SourceSpace, int In_DestinationSpace, float4x4 In_LocalToWorldTransform, float4x4 In_WorldToLocalTransform, bool In_bLocalSpace, out bool Out_bUseOriginal, out float4x4 Out_OutTransform, out bool Out_LocalToWorld, inout FSimulationContext Context) { int Constant40 = 0; bool Result20 = NiagaraAll(In_SourceSpace == Constant40); int Constant41 = 0; bool Result21 = NiagaraAll(In_DestinationSpace == Constant41); bool Result22 = Result20 && Result21; int Constant42 = 1; bool Result23 = NiagaraAll(In_SourceSpace == Constant42); int Constant43 = 1; bool Result24 = NiagaraAll(In_DestinationSpace == Constant43); bool Result25 = Result23 && Result24; bool Result26 = Result22 || Result25; int Constant44 = 2; bool Result27 = NiagaraAll(In_SourceSpace == Constant44); int Constant45 = 2; bool Result28 = NiagaraAll(In_DestinationSpace == Constant45); bool Result29 = Result27 && Result28; bool Result30 = Result26 || Result29; bool Result31 = Result20 && Result28; bool Result32 = Result27 && Result21; bool Result33 = Result31 || Result32; bool Result34 = In_bLocalSpace && Result33; bool Result35 = Result30 || Result34; bool Result36 = !In_bLocalSpace; bool Result37 = Result20 && Result24; bool Result38 = Result23 && Result21; bool Result39 = Result37 || Result38; bool Result40 = Result36 && Result39; bool Result41 = Result35 || Result40; bool Result42 = In_bLocalSpace && Result37; bool Result43 = Result27 && Result24; bool Result44 = Result42 || Result43; bool Result45 = Result36 && Result32; bool Result46 = Result44 || Result45; float4x4 Matrix_IfResult1; if(Result46) { Matrix_IfResult1 = In_LocalToWorldTransform; } else { Matrix_IfResult1 = In_WorldToLocalTransform; } Out_bUseOriginal = Result41; Out_OutTransform = Matrix_IfResult1; Out_LocalToWorld = Result46; } void PointAttractionForce_NF_TransformPosition_Emitter_Func_(float3 In_InPosition, int In_SourceSpace, int In_DestinationSpace, bool In_ApplyScale, out float3 Out_OutPosition, inout FSimulationContext Context) { bool Constant39 = true; float4x4 Matrix_IfResult; float4x4 Matrix001_IfResult; if(In_ApplyScale) { Matrix_IfResult = Context.Map.Engine.Owner.SystemLocalToWorld; Matrix001_IfResult = Context.Map.Engine.Owner.SystemWorldToLocal; } else { Matrix_IfResult = Context.Map.Engine.Owner.SystemLocalToWorldNoScale; Matrix001_IfResult = Context.Map.Engine.Owner.SystemWorldToLocalNoScale; } bool TransformBase_Func_Output_bUseOriginal; float4x4 TransformBase_Func_Output_OutTransform; bool TransformBase_Func_Output_LocalToWorld; TransformBase_Func_(In_SourceSpace, In_DestinationSpace, Matrix_IfResult, Matrix001_IfResult, Constant39, TransformBase_Func_Output_bUseOriginal, TransformBase_Func_Output_OutTransform, TransformBase_Func_Output_LocalToWorld, Context); float3 Result47 = mul(float4(In_InPosition,1.0),TransformBase_Func_Output_OutTransform).xyz; float3 Vector_IfResult1; if(TransformBase_Func_Output_bUseOriginal) { Vector_IfResult1 = In_InPosition; } else { Vector_IfResult1 = Result47; } Out_OutPosition = Vector_IfResult1; } void PointAttractionForce_Emitter_Func_(inout FSimulationContext Context) { int Constant36 = 0; int Output1; Output1 = Constant36; int Constant37 = 0; bool Constant38 = false; float3 PointAttractionForce_NF_TransformPosition_Emitter_Func_Output_OutPosition; PointAttractionForce_NF_TransformPosition_Emitter_Func_(Context.Map.Particles.Position, Output1, Constant37, Constant38, PointAttractionForce_NF_TransformPosition_Emitter_Func_Output_OutPosition, Context); float3 Result48 = Context.Map.PointAttractionForce.AttractorPosition - PointAttractionForce_NF_TransformPosition_Emitter_Func_Output_OutPosition; float3 Constant46 = float3(0,0,0.0001); float3 Result49 = Result48 + Constant46; float Result50 = length(Result49); Context.Map.Local.PointAttractionForce.PointOriginVec = Result49; Context.Map.Local.PointAttractionForce.PointOriginVecLength = Result50; float3 Result51 = normalize(Context.Map.Local.PointAttractionForce.PointOriginVec); bool Result52 = NiagaraAll(Context.Map.Local.PointAttractionForce.PointOriginVecLength > Context.Map.Constants.Emitter.PointAttractionForce.AttractionRadius); float Constant47 = 0; float Result53 = pow(Context.Map.Local.PointAttractionForce.PointOriginVecLength,Context.Map.Constants.Emitter.PointAttractionForce.FalloffExponent); float Falloff_IfResult; if(Context.Map.PointAttractionForce.UseFalloff) { Falloff_IfResult = Result53; } else { Falloff_IfResult = Context.Map.Local.PointAttractionForce.PointOriginVecLength; } float Result54 = Context.Map.Constants.Emitter.PointAttractionForce.AttractionStrength * Falloff_IfResult; float float_IfResult; if(Result52) { float_IfResult = Constant47; } else { float_IfResult = Result54; } float3 Result55 = Result51 * float_IfResult; float3 Result56 = Context.Map.Transient.PhysicsForce + Result55; Context.Map.Transient.PhysicsForce = Result56; bool Result57 = NiagaraAll(Context.Map.Local.PointAttractionForce.PointOriginVecLength < Context.Map.Constants.Emitter.PointAttractionForce.KillRadius); bool Result58 = !Result57; bool Constant48 = true; bool RadiusCheck_IfResult; if(Context.Map.PointAttractionForce.KillWithinRadius) { RadiusCheck_IfResult = Result58; } else { RadiusCheck_IfResult = Constant48; } bool Result59 = Context.Map.DataInstance.Alive && RadiusCheck_IfResult; Context.Map.DataInstance.Alive = Result59; } void Drag_Emitter_Func_(inout FSimulationContext Context) { float Result60 = Context.Map.Constants.Emitter.Drag.Drag + Context.Map.Transient.PhysicsDrag; Context.Map.Transient.PhysicsDrag = Result60; Context.Map.Transient.PhysicsRotationalDrag = Context.Map.Transient.PhysicsRotationalDrag; } void VortexForce_SimulationPosition_Emitter_Func_(out float3 Out_OutPosition, inout FSimulationContext Context) { bool Constant51 = true; float3 Constant52 = float3(0,0,0); float3 Vector_IfResult2; if(Constant51) { Vector_IfResult2 = Constant52; } else { Vector_IfResult2 = Context.Map.Engine.Owner.Position; } Out_OutPosition = Vector_IfResult2; } void DirectionAndLengthSafe_Func_(float3 In_V, float3 In_Fallback, float In_Threshold, float In_FallbackLength, out float3 Out_Direction, out float Out_Length, out bool Out_BelowThreshold, inout FSimulationContext Context) { float Result62 = length(In_V); bool Result63 = NiagaraAll(Result62 < In_Threshold); float Result64 = length(In_Fallback); float3 Vector_IfResult3; float float_IfResult1; if(Result63) { Vector_IfResult3 = In_Fallback; float_IfResult1 = In_FallbackLength; } else { Vector_IfResult3 = In_V; float_IfResult1 = Result62; } float3 Result65 = Vector_IfResult3 / float_IfResult1; float3 Vector_IfResult4; float float_IfResult2; if(Result63) { Vector_IfResult4 = In_Fallback; float_IfResult2 = Result64; } else { Vector_IfResult4 = Result65; float_IfResult2 = float_IfResult1; } Out_Direction = Vector_IfResult4; Out_Length = float_IfResult2; Out_BelowThreshold = Result63; } void NormalizeDistanceRange_Func_(float3 In_StartPosition, float3 In_EndPosition, float In_Distance, float3 In_FallbackVector, out float Out_NormalizedRange, out float Out_InverseNormalizedRange, out float3 Out_NormalizedVectorBetweenPositions, out bool Out_WithinRange, inout FSimulationContext Context) { float3 Result61 = In_StartPosition - In_EndPosition; float Constant59 = 1e-05; float Constant60 = 1; float3 DirectionAndLengthSafe_Func_Output_Direction; float DirectionAndLengthSafe_Func_Output_Length; bool DirectionAndLengthSafe_Func_Output_BelowThreshold; DirectionAndLengthSafe_Func_(Result61, In_FallbackVector, Constant59, Constant60, DirectionAndLengthSafe_Func_Output_Direction, DirectionAndLengthSafe_Func_Output_Length, DirectionAndLengthSafe_Func_Output_BelowThreshold, Context); float Constant61 = 0; float float_IfResult3; if(DirectionAndLengthSafe_Func_Output_BelowThreshold) { float_IfResult3 = Constant61; } else { float_IfResult3 = DirectionAndLengthSafe_Func_Output_Length; } float Result66 = min(float_IfResult3, In_Distance); float Constant62 = 0.0001; float Result67 = max(In_Distance, Constant62); float Result68 = Result66 / Result67; float Result69 = 1 - Result68; bool Result70 = NiagaraAll(float_IfResult3 <= In_Distance); Out_NormalizedRange = Result68; Out_InverseNormalizedRange = Result69; Out_NormalizedVectorBetweenPositions = DirectionAndLengthSafe_Func_Output_Direction; Out_WithinRange = Result70; } void VortexForce_Emitter_Func_(inout FSimulationContext Context) { Context.Map.Local.VortexForce.VortexOrigin = Context.Map.VortexForce.VortexOrigin; Context.Map.Local.VortexForce.ParticlesPosition = Context.Map.Particles.Position; float3 Constant58 = float3(0,0,1); float NormalizeDistanceRange_Func_Output_NormalizedRange; float NormalizeDistanceRange_Func_Output_InverseNormalizedRange; float3 NormalizeDistanceRange_Func_Output_NormalizedVectorBetweenPositions; bool NormalizeDistanceRange_Func_Output_WithinRange; NormalizeDistanceRange_Func_(Context.Map.Local.VortexForce.VortexOrigin, Context.Map.Local.VortexForce.ParticlesPosition, Context.Map.Constants.Emitter.VortexForce.InfluenceFalloffRadius, Constant58, NormalizeDistanceRange_Func_Output_NormalizedRange, NormalizeDistanceRange_Func_Output_InverseNormalizedRange, NormalizeDistanceRange_Func_Output_NormalizedVectorBetweenPositions, NormalizeDistanceRange_Func_Output_WithinRange, Context); float3 Result71 = cross(NormalizeDistanceRange_Func_Output_NormalizedVectorBetweenPositions,Context.Map.Constants.Emitter.VortexForce.VortexAxis); Context.Map.Local.VortexForce.NormalizedRange = NormalizeDistanceRange_Func_Output_NormalizedRange; Context.Map.Local.VortexForce.InverseNormalizedRange = NormalizeDistanceRange_Func_Output_InverseNormalizedRange; Context.Map.Local.VortexForce.OriginVector = NormalizeDistanceRange_Func_Output_NormalizedVectorBetweenPositions; Context.Map.Local.VortexForce.VortexVector = Result71; Context.Map.Local.VortexForce.ForceAmount = Context.Map.Constants.Emitter.VortexForce.VortexForceAmount; float3 Constant63 = float3(0,0,0); float Result72 = -(Context.Map.Constants.Emitter.VortexForce.OriginPullAmount); float3 Result73 = lerp(Context.Map.Local.VortexForce.OriginVector,Constant63,Result72); float3 Result74 = Context.Map.Local.VortexForce.VortexVector + Result73; float3 Result75 = normalize(Result74); float3 Result76 = Result75 * Context.Map.Local.VortexForce.ForceAmount + Context.Map.Transient.PhysicsForce; Context.Map.Transient.PhysicsForce = Result76; } void SolveForcesAndVelocity_Emitter_Func_(inout FSimulationContext Context) { Context.Map.Local.SolveForcesAndVelocity.DeltaTime = Context.Map.SolveForcesAndVelocity.DeltaTime; Context.Map.Local.SolveForcesAndVelocity.PhysicsForce = Context.Map.SolveForcesAndVelocity.Force; Context.Map.OUTPUT_VAR.SolveForcesAndVelocity.IncomingPhysicsForce = Context.Map.SolveForcesAndVelocity.Force; Context.Map.OUTPUT_VAR.SolveForcesAndVelocity.Velocity = Context.Map.SolveForcesAndVelocity.Velocity; Context.Map.Local.SolveForcesAndVelocity.Mass = Context.Map.SolveForcesAndVelocity.Mass; Context.Map.OUTPUT_VAR.SolveForcesAndVelocity.Position = Context.Map.SolveForcesAndVelocity.Position; Context.Map.Particles.Presolve.Velocity = Context.Map.OUTPUT_VAR.SolveForcesAndVelocity.Velocity; Context.Map.Particles.Presolve.Position = Context.Map.OUTPUT_VAR.SolveForcesAndVelocity.Position; Context.Map.Particles.Presolve.PhysicsForce = Context.Map.OUTPUT_VAR.SolveForcesAndVelocity.IncomingPhysicsForce; float Constant71 = 0.0001; float Result77 = max(Context.Map.Local.SolveForcesAndVelocity.Mass, Constant71); float Result78 = Reciprocal(Result77); float3 Result79 = Result78 * Context.Map.Local.SolveForcesAndVelocity.PhysicsForce; Context.Map.Local.SolveForcesAndVelocity.PhysicsForce = Result79; float3 Result80 = Context.Map.Local.SolveForcesAndVelocity.PhysicsForce * Context.Map.Local.SolveForcesAndVelocity.DeltaTime + Context.Map.OUTPUT_VAR.SolveForcesAndVelocity.Velocity; float Constant72 = 0; float Result81 = max(Context.Map.Transient.PhysicsDrag, Constant72); float Result82 = Context.Map.Local.SolveForcesAndVelocity.DeltaTime * Result81; float Constant73 = 1; float Result83 = Result82 + Constant73; float3 Result84 = Result80 / Result83; Context.Map.OUTPUT_VAR.SolveForcesAndVelocity.Velocity = Result84; Context.Map.OUTPUT_VAR.SolveForcesAndVelocity.IncomingPhysicsDrag = Context.Map.Transient.PhysicsDrag; Context.Map.OUTPUT_VAR.SolveForcesAndVelocity.Velocity = Context.Map.OUTPUT_VAR.SolveForcesAndVelocity.Velocity; Context.Map.OUTPUT_VAR.SolveForcesAndVelocity.Velocity = Context.Map.OUTPUT_VAR.SolveForcesAndVelocity.Velocity; float3 Result85 = Context.Map.OUTPUT_VAR.SolveForcesAndVelocity.Velocity * Context.Map.Local.SolveForcesAndVelocity.DeltaTime + Context.Map.OUTPUT_VAR.SolveForcesAndVelocity.Position; Context.Map.OUTPUT_VAR.SolveForcesAndVelocity.Position = Result85; float3 Position_IfResult; float3 Velocity_IfResult; if(Context.Map.SolveForcesAndVelocity.WritetoIntrinsicProperties) { Position_IfResult = Context.Map.OUTPUT_VAR.SolveForcesAndVelocity.Position; Velocity_IfResult = Context.Map.OUTPUT_VAR.SolveForcesAndVelocity.Velocity; } else { Position_IfResult = Context.Map.Particles.Position; Velocity_IfResult = Context.Map.Particles.Velocity; } Context.Map.Particles.Position = Position_IfResult; Context.Map.Particles.Velocity = Velocity_IfResult; float3 Constant74 = float3(0,0,0); float Constant75 = 0; float3 ForceVector_IfResult; float Drag_IfResult; if(Context.Map.SolveForcesAndVelocity.WritetoIntrinsicProperties) { ForceVector_IfResult = Constant74; Drag_IfResult = Constant75; } else { ForceVector_IfResult = Context.Map.Transient.PhysicsForce; Drag_IfResult = Context.Map.Transient.PhysicsDrag; } Context.Map.Transient.PhysicsForce = ForceVector_IfResult; Context.Map.Transient.PhysicsDrag = Drag_IfResult; } void NewNiagaraScriptScript_Emitter_Func_(inout FSimulationContext Context) { float X; float Y; float Z; X = Context.Map.Particles.Velocity.x; Y = Context.Map.Particles.Velocity.y; Z = Context.Map.Particles.Velocity.z; int Constant76 = 0; float AudioSpectrum_EmitterAudioSpectrumOutput_Amplitude; AudioSpectrum_EmitterAudioSpectrum(Context.Map.Particles.NormalizedAge, Constant76, AudioSpectrum_EmitterAudioSpectrumOutput_Amplitude); float Constant77 = 1.2; float Output11; Output11 = Constant77; float Result86 = X * AudioSpectrum_EmitterAudioSpectrumOutput_Amplitude * Output11; float Constant78 = 1; float Output12; Output12 = Constant78; float Result87 = Result86 + Output12; float Result88 = Y * AudioSpectrum_EmitterAudioSpectrumOutput_Amplitude * Output11; float Result89 = Result88 + Output12; float Result90 = Z * AudioSpectrum_EmitterAudioSpectrumOutput_Amplitude * Output11; float Result91 = Result90 + Output12; float3 Output13; Output13.x = Result87; Output13.y = Result89; Output13.z = Result91; Context.Map.Particles.Velocity = Output13; } void NormalizedExecutionIndex_Func_(int In_EngineExecutionCount, bool In_NormalizedRangeIncludesOne, out float Out_NormalizedExecIndex, inout FSimulationContext Context) { int Result93 = ExecIndex(); float Output0; Output0 = Result93; int Constant80 = -1; int Result94 = In_EngineExecutionCount + Constant80; int int32_IfResult; if(In_NormalizedRangeIncludesOne) { int32_IfResult = Result94; } else { int32_IfResult = In_EngineExecutionCount; } float Output01; Output01 = int32_IfResult; float Result95 = Output0 / Output01; Out_NormalizedExecIndex = Result95; } void ColorByAudioSpectrum_GetAudioVolume_Emitter_Func_(out float Out_Volume, inout FSimulationContext Context) { int Result98 = ExecIndex(); bool Constant84 = true; float NormalizedExecutionIndex_Func_Output_NormalizedExecIndex1; NormalizedExecutionIndex_Func_(Result98, Constant84, NormalizedExecutionIndex_Func_Output_NormalizedExecIndex1, Context); int Constant85 = 0; float SampleAudioBuffer_EmitterAudioOscilloscopeOutput_Amplitude; SampleAudioBuffer_EmitterAudioOscilloscope(NormalizedExecutionIndex_Func_Output_NormalizedExecIndex1, Constant85, SampleAudioBuffer_EmitterAudioOscilloscopeOutput_Amplitude); int Constant86 = 1; float SampleAudioBuffer_EmitterAudioOscilloscopeOutput_Amplitude1; SampleAudioBuffer_EmitterAudioOscilloscope(NormalizedExecutionIndex_Func_Output_NormalizedExecIndex1, Constant86, SampleAudioBuffer_EmitterAudioOscilloscopeOutput_Amplitude1); float Result99 = SampleAudioBuffer_EmitterAudioOscilloscopeOutput_Amplitude + SampleAudioBuffer_EmitterAudioOscilloscopeOutput_Amplitude1; Out_Volume = Result99; } void ColorByAudioSpectrum_Emitter_Func_(inout FSimulationContext Context) { int Result92 = ExecIndex(); bool Constant79 = true; float NormalizedExecutionIndex_Func_Output_NormalizedExecIndex; NormalizedExecutionIndex_Func_(Result92, Constant79, NormalizedExecutionIndex_Func_Output_NormalizedExecIndex, Context); int Constant81 = 0; float AudioSpectrum_EmitterAudioSpectrum001Output_Amplitude; AudioSpectrum_EmitterAudioSpectrum001(NormalizedExecutionIndex_Func_Output_NormalizedExecIndex, Constant81, AudioSpectrum_EmitterAudioSpectrum001Output_Amplitude); float Constant82 = 0.5; float Result96 = AudioSpectrum_EmitterAudioSpectrum001Output_Amplitude * Constant82; float R; float G; float B; float A; R = Context.Map.Particles.Color.r; G = Context.Map.Particles.Color.g; B = Context.Map.Particles.Color.b; A = Context.Map.Particles.Color.a; float Constant83 = 0.96; float Result97 = lerp(Result96,R,Constant83); float ColorByAudioSpectrum_GetAudioVolume_Emitter_Func_Output_Volume; ColorByAudioSpectrum_GetAudioVolume_Emitter_Func_(ColorByAudioSpectrum_GetAudioVolume_Emitter_Func_Output_Volume, Context); float Constant87 = 6; float Result100 = ColorByAudioSpectrum_GetAudioVolume_Emitter_Func_Output_Volume * Constant87; float Constant88 = 0.98; float Result101 = lerp(Result100,G,Constant88); float Constant89 = 1; float Constant90 = 0; float Constant91 = 0.4; float Result102 = lerp(Constant90,Constant91,AudioSpectrum_EmitterAudioSpectrum001Output_Amplitude); float4 Output14; Output14.r = Result97; Output14.g = Result101; Output14.b = Constant89; Output14.a = Result102; Context.Map.Particles.Color = Output14; } float GetSpawnInterpolation() { return 1.0f;} void ReadDataSets(inout FSimulationContext Context) { } void WriteDataSets(inout FSimulationContext Context) { } void Simulate(inout FSimulationContext Context) { EnterStatScope(0 /**NiagaraScript /Game/NiagaraAudioVisualization/Effects/NS_DansingSmoke.NS_DansingSmoke:DansingSmoke_0.UpdateScript*/); //Begin Initialize Parameter Map Defaults //End Initialize Parameter Map Defaults bool Constant = true; Context.Map.DataInstance.Alive = Constant; Context.Map.ParticleState.DeltaTime = Context.Map.Engine.DeltaTime; Context.Map.ParticleState.Lifetime = Context.Map.Particles.Lifetime; EnterStatScope(1 /**ParticleState_Emitter_Func_*/); ParticleState_Emitter_Func_(Context); ExitStatScope(/**ParticleState_Emitter_Func_*/); bool Constant4 = false; int Constant5 = (0); float Constant6 = (0.0); Context.Map.Local.CurlNoiseForce001.AgeAdvancement = Constant6; float Constant7 = (0.0); Context.Map.Local.CurlNoiseForce001.DeterministicOffset = Constant7; bool Constant8 = true; Context.Map.CurlNoiseForce001.SamplePosition = Context.Map.Particles.Position; float3 Constant9 = float3(0.0, 0.0, 0.0); Context.Map.Local.CurlNoiseForce001.SamplePosition = Constant9; float3 Constant10 = float3(0.0, 0.0, 0.0); Context.Map.Local.CurlNoiseForce001.SampledNoise = Constant10; float Constant11 = 1; Context.Map.Local.CurlNoiseForce001.Falloff = Constant11; Context.Map.CurlNoiseForce001.CurlNoiseConeMaskAxis = Context.Map.Particles.Velocity; float3 Constant12 = float3(0,0,0); Context.Map.Transient.PhysicsForce = Constant12; EnterStatScope(2 /**CurlNoiseForce001_Emitter_Func_*/); CurlNoiseForce001_Emitter_Func_(Constant5, Context); ExitStatScope(/**CurlNoiseForce001_Emitter_Func_*/); bool Constant18 = false; int Constant19 = (0); float Constant20 = (0.0); Context.Map.Local.CurlNoiseForce.AgeAdvancement = Constant20; float Constant21 = (0.0); Context.Map.Local.CurlNoiseForce.DeterministicOffset = Constant21; Context.Map.CurlNoiseForce.SamplePosition = Context.Map.Particles.Position; float3 Constant22 = float3(0.0, 0.0, 0.0); Context.Map.Local.CurlNoiseForce.SamplePosition = Constant22; float3 Constant23 = float3(0.0, 0.0, 0.0); Context.Map.Local.CurlNoiseForce.SampledNoise = Constant23; float Constant24 = 1; Context.Map.Local.CurlNoiseForce.Falloff = Constant24; Context.Map.CurlNoiseForce.CurlNoiseConeMaskAxis = Context.Map.Particles.Velocity; EnterStatScope(3 /**CurlNoiseForce_Emitter_Func_*/); CurlNoiseForce_Emitter_Func_(Constant19, Context); ExitStatScope(/**CurlNoiseForce_Emitter_Func_*/); float3 PointAttractionForce_SimulationPosition_Emitter_Func_Output_OutPosition; PointAttractionForce_SimulationPosition_Emitter_Func_(PointAttractionForce_SimulationPosition_Emitter_Func_Output_OutPosition, Context); Context.Map.PointAttractionForce.AttractorPosition = PointAttractionForce_SimulationPosition_Emitter_Func_Output_OutPosition; float3 Constant32 = float3(0.0, 0.0, 0.0); Context.Map.Local.PointAttractionForce.PointOriginVec = Constant32; float Constant33 = (0.0); Context.Map.Local.PointAttractionForce.PointOriginVecLength = Constant33; bool Constant34 = true; Context.Map.PointAttractionForce.UseFalloff = Constant34; bool Constant35 = false; Context.Map.PointAttractionForce.KillWithinRadius = Constant35; EnterStatScope(4 /**PointAttractionForce_Emitter_Func_*/); PointAttractionForce_Emitter_Func_(Context); ExitStatScope(/**PointAttractionForce_Emitter_Func_*/); float Constant49 = 0; Context.Map.Transient.PhysicsDrag = Constant49; float Constant50 = 0; Context.Map.Transient.PhysicsRotationalDrag = Constant50; EnterStatScope(5 /**Drag_Emitter_Func_*/); Drag_Emitter_Func_(Context); ExitStatScope(/**Drag_Emitter_Func_*/); float3 VortexForce_SimulationPosition_Emitter_Func_Output_OutPosition; VortexForce_SimulationPosition_Emitter_Func_(VortexForce_SimulationPosition_Emitter_Func_Output_OutPosition, Context); Context.Map.VortexForce.VortexOrigin = VortexForce_SimulationPosition_Emitter_Func_Output_OutPosition; float3 Constant53 = float3(0.0, 0.0, 0.0); Context.Map.Local.VortexForce.VortexOrigin = Constant53; float3 Constant54 = float3(0.0, 0.0, 0.0); Context.Map.Local.VortexForce.ParticlesPosition = Constant54; float3 Constant55 = float3(0.0, 0.0, 0.0); Context.Map.Local.VortexForce.OriginVector = Constant55; float3 Constant56 = float3(0.0, 0.0, 0.0); Context.Map.Local.VortexForce.VortexVector = Constant56; float Constant57 = (0.0); Context.Map.Local.VortexForce.ForceAmount = Constant57; EnterStatScope(6 /**VortexForce_Emitter_Func_*/); VortexForce_Emitter_Func_(Context); ExitStatScope(/**VortexForce_Emitter_Func_*/); Context.Map.Transient.PhysicsDeltaTime = Context.Map.Engine.DeltaTime; Context.Map.SolveForcesAndVelocity.DeltaTime = Context.Map.Transient.PhysicsDeltaTime; float Constant64 = (0.0); Context.Map.Local.SolveForcesAndVelocity.DeltaTime = Constant64; Context.Map.SolveForcesAndVelocity.Force = Context.Map.Transient.PhysicsForce; Context.Map.SolveForcesAndVelocity.Velocity = Context.Map.Particles.Velocity; Context.Map.SolveForcesAndVelocity.Mass = Context.Map.Particles.Mass; Context.Map.SolveForcesAndVelocity.Position = Context.Map.Particles.Position; float3 Constant65 = float3(0.0, 0.0, 0.0); Context.Map.Local.SolveForcesAndVelocity.PhysicsForce = Constant65; float3 Constant66 = float3(0.0, 0.0, 0.0); Context.Map.OUTPUT_VAR.SolveForcesAndVelocity.IncomingPhysicsForce = Constant66; float3 Constant67 = float3(0.0, 0.0, 0.0); Context.Map.OUTPUT_VAR.SolveForcesAndVelocity.Velocity = Constant67; float Constant68 = (0.0); Context.Map.Local.SolveForcesAndVelocity.Mass = Constant68; float3 Constant69 = float3(0.0, 0.0, 0.0); Context.Map.OUTPUT_VAR.SolveForcesAndVelocity.Position = Constant69; Context.Map.SolveForcesAndVelocity.PreviousVelocity = Context.Map.Particles.Previous.Velocity; bool Constant70 = true; Context.Map.SolveForcesAndVelocity.WritetoIntrinsicProperties = Constant70; EnterStatScope(7 /**SolveForcesAndVelocity_Emitter_Func_*/); SolveForcesAndVelocity_Emitter_Func_(Context); ExitStatScope(/**SolveForcesAndVelocity_Emitter_Func_*/); EnterStatScope(8 /**NewNiagaraScriptScript_Emitter_Func_*/); NewNiagaraScriptScript_Emitter_Func_(Context); ExitStatScope(/**NewNiagaraScriptScript_Emitter_Func_*/); EnterStatScope(9 /**ColorByAudioSpectrum_Emitter_Func_*/); ColorByAudioSpectrum_Emitter_Func_(Context); ExitStatScope(/**ColorByAudioSpectrum_Emitter_Func_*/); ExitStatScope(/**NiagaraScript /Game/NiagaraAudioVisualization/Effects/NS_DansingSmoke.NS_DansingSmoke:DansingSmoke_0.UpdateScript*/); } void SimulateMain() { EnterStatScope(10 /**UpdateScript_Main*/); FSimulationContext Context = (FSimulationContext)0; Context.Map.Particles.Age = InputDataFloat(0, 0); Context.Map.Particles.Color.r = InputDataFloat(0, 1); Context.Map.Particles.Color.g = InputDataFloat(0, 2); Context.Map.Particles.Color.b = InputDataFloat(0, 3); Context.Map.Particles.Color.a = InputDataFloat(0, 4); Context.Map.Particles.Direction.x = InputDataFloat(0, 5); Context.Map.Particles.Direction.y = InputDataFloat(0, 6); Context.Map.Particles.Direction.z = InputDataFloat(0, 7); Context.Map.Particles.Lifetime = InputDataFloat(0, 8); Context.Map.Particles.Mass = InputDataFloat(0, 9); Context.Map.Particles.MaterialRandom = InputDataFloat(0, 10); Context.Map.Particles.NormalizedAge = InputDataFloat(0, 11); Context.Map.Particles.Position.x = InputDataFloat(0, 12); Context.Map.Particles.Position.y = InputDataFloat(0, 13); Context.Map.Particles.Position.z = InputDataFloat(0, 14); Context.Map.Particles.Presolve.PhysicsForce.x = InputDataFloat(0, 15); Context.Map.Particles.Presolve.PhysicsForce.y = InputDataFloat(0, 16); Context.Map.Particles.Presolve.PhysicsForce.z = InputDataFloat(0, 17); Context.Map.Particles.Presolve.Position.x = InputDataFloat(0, 18); Context.Map.Particles.Presolve.Position.y = InputDataFloat(0, 19); Context.Map.Particles.Presolve.Position.z = InputDataFloat(0, 20); Context.Map.Particles.Presolve.Velocity.x = InputDataFloat(0, 21); Context.Map.Particles.Presolve.Velocity.y = InputDataFloat(0, 22); Context.Map.Particles.Presolve.Velocity.z = InputDataFloat(0, 23); Context.Map.Particles.Scale.x = InputDataFloat(0, 30); Context.Map.Particles.Scale.y = InputDataFloat(0, 31); Context.Map.Particles.Scale.z = InputDataFloat(0, 32); Context.Map.Particles.SpriteRotation = InputDataFloat(0, 33); Context.Map.Particles.SpriteSize.x = InputDataFloat(0, 34); Context.Map.Particles.SpriteSize.y = InputDataFloat(0, 35); Context.Map.Particles.UniqueID = InputDataInt(0, 0); Context.Map.Particles.Velocity.x = InputDataFloat(0, 36); Context.Map.Particles.Velocity.y = InputDataFloat(0, 37); Context.Map.Particles.Velocity.z = InputDataFloat(0, 38); Context.Map.Particles.Previous.Position = Context.Map.Particles.Position; Context.Map.Particles.Previous.Velocity = Context.Map.Particles.Velocity; Context.Map.Engine.DeltaTime = Engine_DeltaTime; Context.Map.Emitter.Age = Emitter_Age; Context.Map.Engine.Time = Engine_Time; Context.Map.Constants.Emitter.CurlNoiseForce001.RandomSeed = Constants_Emitter_CurlNoiseForce001_RandomSeed; Context.Map.Engine.Owner.Position = Engine_Owner_Position.xyz; Context.Map.Constants.Emitter.CurlNoiseForce001.NoiseFrequency = Constants_Emitter_CurlNoiseForce001_NoiseFrequency; Context.Map.Constants.Emitter.CurlNoiseForce001.PanNoiseField = Constants_Emitter_CurlNoiseForce001_PanNoiseField; Context.Map.Constants.Emitter.CurlNoiseForce001.CurlNoiseConeMaskAngle = Constants_Emitter_CurlNoiseForce001_CurlNoiseConeMaskAngle; Context.Map.Constants.Emitter.CurlNoiseForce001.CurlNoiseConeMaskFalloffAngle = Constants_Emitter_CurlNoiseForce001_CurlNoiseConeMaskFalloffAngle; Context.Map.Constants.Emitter.CurlNoiseForce001.NoiseStrength = Constants_Emitter_CurlNoiseForce001_NoiseStrength; Context.Map.Emitter.RandomSeed = Emitter_RandomSeed; Context.Map.Constants.Emitter.CurlNoiseForce.RandomSeed = Constants_Emitter_CurlNoiseForce_RandomSeed; Context.Map.Constants.Emitter.CurlNoiseForce.NoiseFrequency = Constants_Emitter_CurlNoiseForce_NoiseFrequency; Context.Map.Constants.Emitter.CurlNoiseForce.PanNoiseField = Constants_Emitter_CurlNoiseForce_PanNoiseField; Context.Map.Constants.Emitter.CurlNoiseForce.CurlNoiseConeMaskAngle = Constants_Emitter_CurlNoiseForce_CurlNoiseConeMaskAngle; Context.Map.Constants.Emitter.CurlNoiseForce.CurlNoiseConeMaskFalloffAngle = Constants_Emitter_CurlNoiseForce_CurlNoiseConeMaskFalloffAngle; Context.Map.Constants.Emitter.CurlNoiseForce.NoiseStrength = Constants_Emitter_CurlNoiseForce_NoiseStrength; Context.Map.Engine.Owner.SystemLocalToWorld = Engine_Owner_SystemLocalToWorld; Context.Map.Engine.Owner.SystemWorldToLocal = Engine_Owner_SystemWorldToLocal; Context.Map.Engine.Owner.SystemLocalToWorldNoScale = Engine_Owner_SystemLocalToWorldNoScale; Context.Map.Engine.Owner.SystemWorldToLocalNoScale = Engine_Owner_SystemWorldToLocalNoScale; Context.Map.Constants.Emitter.PointAttractionForce.AttractionRadius = Constants_Emitter_PointAttractionForce_AttractionRadius; Context.Map.Constants.Emitter.PointAttractionForce.AttractionStrength = Constants_Emitter_PointAttractionForce_AttractionStrength; Context.Map.Constants.Emitter.PointAttractionForce.FalloffExponent = Constants_Emitter_PointAttractionForce_FalloffExponent; Context.Map.Constants.Emitter.PointAttractionForce.KillRadius = Constants_Emitter_PointAttractionForce_KillRadius; Context.Map.Constants.Emitter.Drag.Drag = Constants_Emitter_Drag_Drag; Context.Map.Constants.Emitter.Drag.RotationalDrag = Constants_Emitter_Drag_RotationalDrag; Context.Map.Constants.Emitter.VortexForce.InfluenceFalloffRadius = Constants_Emitter_VortexForce_InfluenceFalloffRadius; Context.Map.Constants.Emitter.VortexForce.VortexAxis = Constants_Emitter_VortexForce_VortexAxis; Context.Map.Constants.Emitter.VortexForce.VortexForceAmount = Constants_Emitter_VortexForce_VortexForceAmount; Context.Map.Constants.Emitter.VortexForce.OriginPullAmount = Constants_Emitter_VortexForce_OriginPullAmount; Context.Map.Constants.Emitter.SolveForcesAndVelocity.SpeedLimit = Constants_Emitter_SolveForcesAndVelocity_SpeedLimit; Context.Map.Constants.Emitter.SolveForcesAndVelocity.AccelerationLimit = Constants_Emitter_SolveForcesAndVelocity_AccelerationLimit; Context.Map.Engine.Emitter.TotalSpawnedParticles = Engine_Emitter_TotalSpawnedParticles; Context.Map.Engine.Emitter.InstanceSeed = Engine_Emitter_InstanceSeed; ReadDataSets(Context); EnterStatScope(11 /**UpdateScript_MapMain*/); Simulate(Context); ExitStatScope(/**UpdateScript_MapMain*/); WriteDataSets(Context); { bool bValid = Context.Map.DataInstance.Alive; int TmpWriteIndex = OutputIndex(0, true, bValid); OutputDataFloat(0, 0, TmpWriteIndex, Context.Map.Particles.Age); OutputDataFloat(0, 1, TmpWriteIndex, Context.Map.Particles.Color.r); OutputDataFloat(0, 2, TmpWriteIndex, Context.Map.Particles.Color.g); OutputDataFloat(0, 3, TmpWriteIndex, Context.Map.Particles.Color.b); OutputDataFloat(0, 4, TmpWriteIndex, Context.Map.Particles.Color.a); OutputDataFloat(0, 5, TmpWriteIndex, Context.Map.Particles.Direction.x); OutputDataFloat(0, 6, TmpWriteIndex, Context.Map.Particles.Direction.y); OutputDataFloat(0, 7, TmpWriteIndex, Context.Map.Particles.Direction.z); OutputDataFloat(0, 8, TmpWriteIndex, Context.Map.Particles.Lifetime); OutputDataFloat(0, 9, TmpWriteIndex, Context.Map.Particles.Mass); OutputDataFloat(0, 10, TmpWriteIndex, Context.Map.Particles.MaterialRandom); OutputDataFloat(0, 11, TmpWriteIndex, Context.Map.Particles.NormalizedAge); OutputDataFloat(0, 12, TmpWriteIndex, Context.Map.Particles.Position.x); OutputDataFloat(0, 13, TmpWriteIndex, Context.Map.Particles.Position.y); OutputDataFloat(0, 14, TmpWriteIndex, Context.Map.Particles.Position.z); OutputDataFloat(0, 15, TmpWriteIndex, Context.Map.Particles.Presolve.PhysicsForce.x); OutputDataFloat(0, 16, TmpWriteIndex, Context.Map.Particles.Presolve.PhysicsForce.y); OutputDataFloat(0, 17, TmpWriteIndex, Context.Map.Particles.Presolve.PhysicsForce.z); OutputDataFloat(0, 18, TmpWriteIndex, Context.Map.Particles.Presolve.Position.x); OutputDataFloat(0, 19, TmpWriteIndex, Context.Map.Particles.Presolve.Position.y); OutputDataFloat(0, 20, TmpWriteIndex, Context.Map.Particles.Presolve.Position.z); OutputDataFloat(0, 21, TmpWriteIndex, Context.Map.Particles.Presolve.Velocity.x); OutputDataFloat(0, 22, TmpWriteIndex, Context.Map.Particles.Presolve.Velocity.y); OutputDataFloat(0, 23, TmpWriteIndex, Context.Map.Particles.Presolve.Velocity.z); OutputDataFloat(0, 24, TmpWriteIndex, Context.Map.Particles.Previous.Position.x); OutputDataFloat(0, 25, TmpWriteIndex, Context.Map.Particles.Previous.Position.y); OutputDataFloat(0, 26, TmpWriteIndex, Context.Map.Particles.Previous.Position.z); OutputDataFloat(0, 27, TmpWriteIndex, Context.Map.Particles.Previous.Velocity.x); OutputDataFloat(0, 28, TmpWriteIndex, Context.Map.Particles.Previous.Velocity.y); OutputDataFloat(0, 29, TmpWriteIndex, Context.Map.Particles.Previous.Velocity.z); OutputDataFloat(0, 30, TmpWriteIndex, Context.Map.Particles.Scale.x); OutputDataFloat(0, 31, TmpWriteIndex, Context.Map.Particles.Scale.y); OutputDataFloat(0, 32, TmpWriteIndex, Context.Map.Particles.Scale.z); OutputDataFloat(0, 33, TmpWriteIndex, Context.Map.Particles.SpriteRotation); OutputDataFloat(0, 34, TmpWriteIndex, Context.Map.Particles.SpriteSize.x); OutputDataFloat(0, 35, TmpWriteIndex, Context.Map.Particles.SpriteSize.y); OutputDataInt(0, 0, TmpWriteIndex, Context.Map.Particles.UniqueID); OutputDataFloat(0, 36, TmpWriteIndex, Context.Map.Particles.Velocity.x); OutputDataFloat(0, 37, TmpWriteIndex, Context.Map.Particles.Velocity.y); OutputDataFloat(0, 38, TmpWriteIndex, Context.Map.Particles.Velocity.z); } ExitStatScope(/**UpdateScript_Main*/); } 7BK>K ------------------------------- Summary ------------------------------- Num Byte Code Ops: 289 Num Constants: 212 ------------------------------- Constant Table ------------------------------- 0 | Engine_DeltaTime 4 | Engine_InverseDeltaTime 8 | Engine_Time 12 | Engine_RealTime 16 | Engine_QualityLevel 20 | Engine_PaddingInt32_0 24 | Engine_PaddingInt32_1 28 | Engine_PaddingInt32_2 32 | Engine_Owner_TimeSinceRendered 36 | Engine_Owner_LODDistance 40 | Engine_Owner_LODDistanceFraction 44 | Engine_System_Age 48 | Engine_Owner_ExecutionState 52 | Engine_System_TickCount 56 | Engine_System_NumEmitters 60 | Engine_System_NumEmittersAlive 64 | Engine_System_SignificanceIndex 68 | Engine_System_PaddingInt32_0 72 | Engine_System_PaddingInt32_1 76 | Engine_System_PaddingInt32_2 80 | Engine_Owner_SystemLocalToWorldRow0x 84 | Engine_Owner_SystemLocalToWorldRow0y 88 | Engine_Owner_SystemLocalToWorldRow0z 92 | Engine_Owner_SystemLocalToWorldRow0w 96 | Engine_Owner_SystemLocalToWorldRow1x 100 | Engine_Owner_SystemLocalToWorldRow1y 104 | Engine_Owner_SystemLocalToWorldRow1z 108 | Engine_Owner_SystemLocalToWorldRow1w 112 | Engine_Owner_SystemLocalToWorldRow2x 116 | Engine_Owner_SystemLocalToWorldRow2y 120 | Engine_Owner_SystemLocalToWorldRow2z 124 | Engine_Owner_SystemLocalToWorldRow2w 128 | Engine_Owner_SystemLocalToWorldRow3x 132 | Engine_Owner_SystemLocalToWorldRow3y 136 | Engine_Owner_SystemLocalToWorldRow3z 140 | Engine_Owner_SystemLocalToWorldRow3w 144 | Engine_Owner_SystemWorldToLocalRow0x 148 | Engine_Owner_SystemWorldToLocalRow0y 152 | Engine_Owner_SystemWorldToLocalRow0z 156 | Engine_Owner_SystemWorldToLocalRow0w 160 | Engine_Owner_SystemWorldToLocalRow1x 164 | Engine_Owner_SystemWorldToLocalRow1y 168 | Engine_Owner_SystemWorldToLocalRow1z 172 | Engine_Owner_SystemWorldToLocalRow1w 176 | Engine_Owner_SystemWorldToLocalRow2x 180 | Engine_Owner_SystemWorldToLocalRow2y 184 | Engine_Owner_SystemWorldToLocalRow2z 188 | Engine_Owner_SystemWorldToLocalRow2w 192 | Engine_Owner_SystemWorldToLocalRow3x 196 | Engine_Owner_SystemWorldToLocalRow3y 200 | Engine_Owner_SystemWorldToLocalRow3z 204 | Engine_Owner_SystemWorldToLocalRow3w 208 | Engine_Owner_SystemLocalToWorldTransposedRow0x 212 | Engine_Owner_SystemLocalToWorldTransposedRow0y 216 | Engine_Owner_SystemLocalToWorldTransposedRow0z 220 | Engine_Owner_SystemLocalToWorldTransposedRow0w 224 | Engine_Owner_SystemLocalToWorldTransposedRow1x 228 | Engine_Owner_SystemLocalToWorldTransposedRow1y 232 | Engine_Owner_SystemLocalToWorldTransposedRow1z 236 | Engine_Owner_SystemLocalToWorldTransposedRow1w 240 | Engine_Owner_SystemLocalToWorldTransposedRow2x 244 | Engine_Owner_SystemLocalToWorldTransposedRow2y 248 | Engine_Owner_SystemLocalToWorldTransposedRow2z 252 | Engine_Owner_SystemLocalToWorldTransposedRow2w 256 | Engine_Owner_SystemLocalToWorldTransposedRow3x 260 | Engine_Owner_SystemLocalToWorldTransposedRow3y 264 | Engine_Owner_SystemLocalToWorldTransposedRow3z 268 | Engine_Owner_SystemLocalToWorldTransposedRow3w 272 | Engine_Owner_SystemWorldToLocalTransposedRow0x 276 | Engine_Owner_SystemWorldToLocalTransposedRow0y 280 | Engine_Owner_SystemWorldToLocalTransposedRow0z 284 | Engine_Owner_SystemWorldToLocalTransposedRow0w 288 | Engine_Owner_SystemWorldToLocalTransposedRow1x 292 | Engine_Owner_SystemWorldToLocalTransposedRow1y 296 | Engine_Owner_SystemWorldToLocalTransposedRow1z 300 | Engine_Owner_SystemWorldToLocalTransposedRow1w 304 | Engine_Owner_SystemWorldToLocalTransposedRow2x 308 | Engine_Owner_SystemWorldToLocalTransposedRow2y 312 | Engine_Owner_SystemWorldToLocalTransposedRow2z 316 | Engine_Owner_SystemWorldToLocalTransposedRow2w 320 | Engine_Owner_SystemWorldToLocalTransposedRow3x 324 | Engine_Owner_SystemWorldToLocalTransposedRow3y 328 | Engine_Owner_SystemWorldToLocalTransposedRow3z 332 | Engine_Owner_SystemWorldToLocalTransposedRow3w 336 | Engine_Owner_SystemLocalToWorldNoScaleRow0x 340 | Engine_Owner_SystemLocalToWorldNoScaleRow0y 344 | Engine_Owner_SystemLocalToWorldNoScaleRow0z 348 | Engine_Owner_SystemLocalToWorldNoScaleRow0w 352 | Engine_Owner_SystemLocalToWorldNoScaleRow1x 356 | Engine_Owner_SystemLocalToWorldNoScaleRow1y 360 | Engine_Owner_SystemLocalToWorldNoScaleRow1z 364 | Engine_Owner_SystemLocalToWorldNoScaleRow1w 368 | Engine_Owner_SystemLocalToWorldNoScaleRow2x 372 | Engine_Owner_SystemLocalToWorldNoScaleRow2y 376 | Engine_Owner_SystemLocalToWorldNoScaleRow2z 380 | Engine_Owner_SystemLocalToWorldNoScaleRow2w 384 | Engine_Owner_SystemLocalToWorldNoScaleRow3x 388 | Engine_Owner_SystemLocalToWorldNoScaleRow3y 392 | Engine_Owner_SystemLocalToWorldNoScaleRow3z 396 | Engine_Owner_SystemLocalToWorldNoScaleRow3w 400 | Engine_Owner_SystemWorldToLocalNoScaleRow0x 404 | Engine_Owner_SystemWorldToLocalNoScaleRow0y 408 | Engine_Owner_SystemWorldToLocalNoScaleRow0z 412 | Engine_Owner_SystemWorldToLocalNoScaleRow0w 416 | Engine_Owner_SystemWorldToLocalNoScaleRow1x 420 | Engine_Owner_SystemWorldToLocalNoScaleRow1y 424 | Engine_Owner_SystemWorldToLocalNoScaleRow1z 428 | Engine_Owner_SystemWorldToLocalNoScaleRow1w 432 | Engine_Owner_SystemWorldToLocalNoScaleRow2x 436 | Engine_Owner_SystemWorldToLocalNoScaleRow2y 440 | Engine_Owner_SystemWorldToLocalNoScaleRow2z 444 | Engine_Owner_SystemWorldToLocalNoScaleRow2w 448 | Engine_Owner_SystemWorldToLocalNoScaleRow3x 452 | Engine_Owner_SystemWorldToLocalNoScaleRow3y 456 | Engine_Owner_SystemWorldToLocalNoScaleRow3z 460 | Engine_Owner_SystemWorldToLocalNoScaleRow3w 464 | Engine_Owner_Rotationx 468 | Engine_Owner_Rotationy 472 | Engine_Owner_Rotationz 476 | Engine_Owner_Rotationw 480 | Engine_Owner_Positionx 484 | Engine_Owner_Positiony 488 | Engine_Owner_Positionz 492 | Engine_Owner_Positionw 496 | Engine_Owner_Velocityx 500 | Engine_Owner_Velocityy 504 | Engine_Owner_Velocityz 508 | Engine_Owner_Velocityw 512 | Engine_Owner_SystemXAxisx 516 | Engine_Owner_SystemXAxisy 520 | Engine_Owner_SystemXAxisz 524 | Engine_Owner_SystemXAxisw 528 | Engine_Owner_SystemYAxisx 532 | Engine_Owner_SystemYAxisy 536 | Engine_Owner_SystemYAxisz 540 | Engine_Owner_SystemYAxisw 544 | Engine_Owner_SystemZAxisx 548 | Engine_Owner_SystemZAxisy 552 | Engine_Owner_SystemZAxisz 556 | Engine_Owner_SystemZAxisw 560 | Engine_Owner_Scalex 564 | Engine_Owner_Scaley 568 | Engine_Owner_Scalez 572 | Engine_Owner_Scalew 576 | Engine_Emitter_NumParticles 580 | Engine_Emitter_TotalSpawnedParticles 584 | Engine_Emitter_SpawnCountScale 588 | Emitter_Age 592 | Emitter_RandomSeed 596 | Engine_Emitter_InstanceSeed 600 | Engine_Emitter_PaddingInt32_0 604 | Engine_Emitter_PaddingInt32_1 608 | Constants_Emitter_CurlNoiseForce001_RandomSeed 612 | Constants_Emitter_CurlNoiseForce001_NoiseFrequency 616 | Constants_Emitter_CurlNoiseForce001_PanNoiseFieldx 620 | Constants_Emitter_CurlNoiseForce001_PanNoiseFieldy 624 | Constants_Emitter_CurlNoiseForce001_PanNoiseFieldz 628 | Constants_Emitter_CurlNoiseForce001_CurlNoiseConeMaskAngle 632 | Constants_Emitter_CurlNoiseForce001_CurlNoiseConeMaskFalloffAngle 636 | Constants_Emitter_CurlNoiseForce001_NoiseStrength 640 | Constants_Emitter_CurlNoiseForce_RandomSeed 644 | Constants_Emitter_CurlNoiseForce_NoiseFrequency 648 | Constants_Emitter_CurlNoiseForce_PanNoiseFieldx 652 | Constants_Emitter_CurlNoiseForce_PanNoiseFieldy 656 | Constants_Emitter_CurlNoiseForce_PanNoiseFieldz 660 | Constants_Emitter_CurlNoiseForce_CurlNoiseConeMaskAngle 664 | Constants_Emitter_CurlNoiseForce_CurlNoiseConeMaskFalloffAngle 668 | Constants_Emitter_CurlNoiseForce_NoiseStrength 672 | Constants_Emitter_PointAttractionForce_AttractionRadius 676 | Constants_Emitter_PointAttractionForce_AttractionStrength 680 | Constants_Emitter_PointAttractionForce_FalloffExponent 684 | Constants_Emitter_PointAttractionForce_KillRadius 688 | Constants_Emitter_Drag_Drag 692 | Constants_Emitter_Drag_RotationalDrag 696 | Constants_Emitter_VortexForce_InfluenceFalloffRadius 700 | Constants_Emitter_VortexForce_VortexAxisx 704 | Constants_Emitter_VortexForce_VortexAxisy 708 | Constants_Emitter_VortexForce_VortexAxisz 712 | Constants_Emitter_VortexForce_VortexForceAmount 716 | Constants_Emitter_VortexForce_OriginPullAmount 720 | Constants_Emitter_SolveForcesAndVelocity_SpeedLimit 724 | Constants_Emitter_SolveForcesAndVelocity_AccelerationLimit 728 | 10 732 | 11 736 | 0 740 | 1 744 | 9.99999975e-06 748 | 9.99999975e-05 752 | True 756 | False 760 | 2 764 | 1664525 768 | 1013904223 772 | 8 776 | 16777215 780 | 16777216 784 | 4096 788 | 125 792 | 3 796 | 4 800 | 0 804 | 6 808 | 1 812 | 7 816 | 1.20000005 820 | 9 824 | -1 828 | 0.5 832 | 0.959999979 836 | 6 840 | 0.980000019 844 | 0.400000006 ------------------------------- Byte Code (289 Ops) ------------------------------- 0 | enter_stat_scope(C[728]); 1 | [R][0] = InputDataFloat(0, 0); 2 | [R][1] = InputDataFloat(0, 1); 3 | [R][2] = InputDataFloat(0, 2); 4 | [R][3] = InputDataFloat(0, 5); 5 | [R][4] = InputDataFloat(0, 6); 6 | [R][5] = InputDataFloat(0, 7); 7 | [R][6] = InputDataFloat(0, 8); 8 | [R][7] = InputDataFloat(0, 9); 9 | [R][8] = InputDataFloat(0, 10); 10 | [R][9] = InputDataFloat(0, 12); 11 | [R][10] = InputDataFloat(0, 13); 12 | [R][11] = InputDataFloat(0, 14); 13 | [R][12] = InputDataFloat(0, 30); 14 | [R][13] = InputDataFloat(0, 31); 15 | [R][14] = InputDataFloat(0, 32); 16 | [R][15] = InputDataFloat(0, 33); 17 | [R][16] = InputDataFloat(0, 34); 18 | [R][17] = InputDataFloat(0, 35); 19 | [R][18] = InputDataInt(0, 0); 20 | [R][19] = InputDataFloat(0, 36); 21 | [R][20] = InputDataFloat(0, 37); 22 | [R][21] = InputDataFloat(0, 38); 23 | enter_stat_scope(C[732]); 24 | enter_stat_scope(C[736]); 25 | enter_stat_scope(C[740]); 26 | R[22] = add(R[0], C[0]); 27 | R[0] = max(R[6], C[744]); 28 | R[23] = sub(R[0], C[748]); 29 | R[24] = cmplt(R[22], R[23]); 30 | R[23] = select(R[24], C[752], C[756]); 31 | R[24] = div(R[22], R[0]); 32 | exit_stat_scope(); 33 | enter_stat_scope(C[760]); 34 | R[0] = muli(C[608], C[764]); 35 | R[25] = muli(C[592], C[764]); 36 | R[26] = muli(C[740], C[764]); 37 | R[27] = addi(R[0], C[768]); 38 | R[0] = addi(R[25], C[768]); 39 | R[25] = addi(R[26], C[768]); 40 | R[26] = muli(R[0], R[25]); 41 | R[28] = addi(R[27], R[26]); 42 | R[26] = muli(R[25], R[28]); 43 | R[27] = addi(R[0], R[26]); 44 | R[0] = muli(R[28], R[27]); 45 | R[26] = addi(R[25], R[0]); 46 | R[0] = muli(R[27], R[26]); 47 | R[25] = addi(R[28], R[0]); 48 | R[0] = muli(R[26], R[25]); 49 | R[28] = addi(R[27], R[0]); 50 | R[0] = muli(R[25], R[28]); 51 | R[27] = addi(R[26], R[0]); 52 | R[0] = bit_rshift(R[25], C[772]); 53 | R[25] = bit_rshift(R[28], C[772]); 54 | R[26] = bit_rshift(R[27], C[772]); 55 | R[27] = bit_and(R[0], C[776]); 56 | R[0] = bit_and(R[25], C[776]); 57 | R[25] = bit_and(R[26], C[776]); 58 | R[26] = i2f(R[27]); 59 | R[27] = i2f(R[0]); 60 | R[0] = i2f(R[25]); 61 | R[25] = div(R[26], C[780]); 62 | R[0] = mad(R[25], C[784], R[9]); 63 | R[26] = mad(R[25], C[784], R[10]); 64 | R[27] = mad(R[25], C[784], R[11]); 65 | R[25] = mul(R[0], C[612]); 66 | R[0] = mul(R[26], C[612]); 67 | R[26] = mul(R[27], C[612]); 68 | R[27] = mul(C[616], C[8]); 69 | R[28] = mul(C[620], C[8]); 70 | R[29] = mul(C[624], C[8]); 71 | R[30] = sub(R[25], R[27]); 72 | R[25] = sub(R[0], R[28]); 73 | R[0] = sub(R[26], R[29]); 74 | R[26] = mul(R[30], C[788]); 75 | R[27] = mul(R[25], C[788]); 76 | R[25] = mul(R[0], C[788]); 77 | SampleField_EmitterVectorField32[func0](R[26], R[27], R[25], R[0], R[28], R[29]); 78 | R[25] = mul(R[0], C[636]); 79 | R[0] = mul(R[28], C[636]); 80 | R[26] = mul(R[29], C[636]); 81 | exit_stat_scope(); 82 | enter_stat_scope(C[792]); 83 | R[27] = muli(C[640], C[764]); 84 | R[28] = muli(C[592], C[764]); 85 | R[29] = muli(C[760], C[764]); 86 | R[30] = addi(R[27], C[768]); 87 | R[27] = addi(R[28], C[768]); 88 | R[28] = addi(R[29], C[768]); 89 | R[29] = muli(R[27], R[28]); 90 | R[31] = addi(R[30], R[29]); 91 | R[29] = muli(R[28], R[31]); 92 | R[30] = addi(R[27], R[29]); 93 | R[27] = muli(R[31], R[30]); 94 | R[29] = addi(R[28], R[27]); 95 | R[27] = muli(R[30], R[29]); 96 | R[28] = addi(R[31], R[27]); 97 | R[27] = muli(R[29], R[28]); 98 | R[31] = addi(R[30], R[27]); 99 | R[27] = muli(R[28], R[31]); 100 | R[30] = addi(R[29], R[27]); 101 | R[27] = bit_rshift(R[28], C[772]); 102 | R[28] = bit_rshift(R[31], C[772]); 103 | R[29] = bit_rshift(R[30], C[772]); 104 | R[30] = bit_and(R[27], C[776]); 105 | R[27] = bit_and(R[28], C[776]); 106 | R[28] = bit_and(R[29], C[776]); 107 | R[29] = i2f(R[30]); 108 | R[30] = i2f(R[27]); 109 | R[27] = i2f(R[28]); 110 | R[28] = div(R[29], C[780]); 111 | R[27] = mad(R[28], C[784], R[9]); 112 | R[29] = mad(R[28], C[784], R[10]); 113 | R[30] = mad(R[28], C[784], R[11]); 114 | R[28] = mul(R[27], C[644]); 115 | R[27] = mul(R[29], C[644]); 116 | R[29] = mul(R[30], C[644]); 117 | R[30] = mul(R[28], C[788]); 118 | R[28] = mul(R[27], C[788]); 119 | R[27] = mul(R[29], C[788]); 120 | SampleField_EmitterVectorField32[func1](R[30], R[28], R[27], R[29], R[31], R[32]); 121 | R[27] = mad(R[29], C[668], R[25]); 122 | R[25] = mad(R[31], C[668], R[0]); 123 | R[0] = mad(R[32], C[668], R[26]); 124 | exit_stat_scope(); 125 | enter_stat_scope(C[796]); 126 | R[26] = neg(R[9]); 127 | R[28] = neg(R[10]); 128 | R[29] = neg(R[11]); 129 | R[30] = add(R[29], C[748]); 130 | R[29] = mul(R[28], R[28]); 131 | R[31] = mad(R[26], R[26], R[29]); 132 | R[29] = mad(R[30], R[30], R[31]); 133 | R[31] = sqrt(R[29]); 134 | R[29] = mul(R[28], R[28]); 135 | R[32] = mad(R[26], R[26], R[29]); 136 | R[29] = mad(R[30], R[30], R[32]); 137 | R[32] = rsq(R[29]); 138 | R[29] = mul(R[26], R[32]); 139 | R[26] = mul(R[28], R[32]); 140 | R[28] = mul(R[30], R[32]); 141 | R[30] = pow(R[31], C[680]); 142 | R[32] = mul(C[676], R[30]); 143 | R[30] = cmpgt(R[31], C[672]); 144 | R[31] = select(R[30], C[800], R[32]); 145 | R[30] = mad(R[29], R[31], R[27]); 146 | R[27] = mad(R[26], R[31], R[25]); 147 | R[25] = mad(R[28], R[31], R[0]); 148 | exit_stat_scope(); 149 | enter_stat_scope(C[804]); 150 | R[0] = neg(R[9]); 151 | R[26] = neg(R[10]); 152 | R[28] = neg(R[11]); 153 | R[29] = mul(R[26], R[26]); 154 | R[31] = mad(R[0], R[0], R[29]); 155 | R[29] = mad(R[28], R[28], R[31]); 156 | R[31] = sqrt(R[29]); 157 | R[29] = cmplt(R[31], C[744]); 158 | R[32] = select(R[29], C[800], R[0]); 159 | R[0] = select(R[29], C[800], R[26]); 160 | R[26] = select(R[29], C[808], R[28]); 161 | R[28] = select(R[29], C[808], R[31]); 162 | R[31] = div(R[32], R[28]); 163 | R[32] = div(R[0], R[28]); 164 | R[0] = div(R[26], R[28]); 165 | R[26] = select(R[29], C[800], R[31]); 166 | R[28] = select(R[29], C[800], R[32]); 167 | R[31] = select(R[29], C[808], R[0]); 168 | R[0] = mul(R[28], C[708]); 169 | R[29] = mul(R[31], C[704]); 170 | R[32] = sub(R[0], R[29]); 171 | R[0] = mul(R[31], C[700]); 172 | R[29] = mul(R[26], C[708]); 173 | R[33] = sub(R[0], R[29]); 174 | R[0] = mul(R[26], C[704]); 175 | R[29] = mul(R[28], C[700]); 176 | R[34] = sub(R[0], R[29]); 177 | R[0] = neg(C[716]); 178 | R[29] = lerp(R[26], C[800], R[0]); 179 | R[26] = lerp(R[28], C[800], R[0]); 180 | R[28] = lerp(R[31], C[800], R[0]); 181 | R[0] = add(R[32], R[29]); 182 | R[29] = add(R[33], R[26]); 183 | R[26] = add(R[34], R[28]); 184 | R[28] = mul(R[29], R[29]); 185 | R[31] = mad(R[0], R[0], R[28]); 186 | R[28] = mad(R[26], R[26], R[31]); 187 | R[31] = rsq(R[28]); 188 | R[28] = mul(R[0], R[31]); 189 | R[0] = mul(R[29], R[31]); 190 | R[29] = mul(R[26], R[31]); 191 | R[26] = mad(R[28], C[712], R[30]); 192 | R[28] = mad(R[0], C[712], R[27]); 193 | R[0] = mad(R[29], C[712], R[25]); 194 | exit_stat_scope(); 195 | enter_stat_scope(C[812]); 196 | R[25] = max(R[7], C[748]); 197 | R[27] = rcp(R[25]); 198 | R[25] = mul(R[27], R[26]); 199 | R[29] = mul(R[27], R[28]); 200 | R[30] = mul(R[27], R[0]); 201 | R[27] = mad(R[25], C[0], R[19]); 202 | R[25] = mad(R[29], C[0], R[20]); 203 | R[29] = mad(R[30], C[0], R[21]); 204 | R[30] = max(C[688], C[800]); 205 | R[31] = mad(C[0], R[30], C[808]); 206 | R[30] = div(R[27], R[31]); 207 | R[27] = div(R[25], R[31]); 208 | R[25] = div(R[29], R[31]); 209 | R[29] = mad(R[30], C[0], R[9]); 210 | R[31] = mad(R[27], C[0], R[10]); 211 | R[32] = mad(R[25], C[0], R[11]); 212 | exit_stat_scope(); 213 | enter_stat_scope(C[772]); 214 | AudioSpectrum_EmitterAudioSpectrum[func2](R[24], C[736], R[33]); 215 | R[34] = mul(R[30], R[33]); 216 | R[30] = mad(R[34], C[816], C[808]); 217 | R[34] = mul(R[27], R[33]); 218 | R[27] = mad(R[34], C[816], C[808]); 219 | R[34] = mul(R[25], R[33]); 220 | R[25] = mad(R[34], C[816], C[808]); 221 | exit_stat_scope(); 222 | enter_stat_scope(C[820]); 223 | R[33] = __OP__88; 224 | R[34] = __OP__88; 225 | R[35] = i2f(R[34]); 226 | R[34] = addi(R[33], C[824]); 227 | R[33] = i2f(R[34]); 228 | R[34] = div(R[35], R[33]); 229 | AudioSpectrum_EmitterAudioSpectrum001[func3](R[34], C[736], R[33]); 230 | R[34] = mul(R[33], C[828]); 231 | R[35] = lerp(R[34], R[1], C[832]); 232 | R[1] = __OP__88; 233 | R[34] = __OP__88; 234 | R[36] = i2f(R[34]); 235 | R[34] = addi(R[1], C[824]); 236 | R[1] = i2f(R[34]); 237 | R[34] = div(R[36], R[1]); 238 | SampleAudioBuffer_EmitterAudioOscilloscope[func4](R[34], C[736], R[1]); 239 | SampleAudioBuffer_EmitterAudioOscilloscope[func5](R[34], C[740], R[36]); 240 | R[34] = add(R[1], R[36]); 241 | R[1] = mul(R[34], C[836]); 242 | R[34] = lerp(R[1], R[2], C[840]); 243 | R[1] = mul(C[844], R[33]); 244 | exit_stat_scope(); 245 | exit_stat_scope(); 246 | exit_stat_scope(); 247 | [R][2] = AcquireIndex(0, [R][23]); 248 | OutputDataFloat(0, 0, [R][2], [R][22]); 249 | OutputDataFloat(0, 1, [R][2], [R][35]); 250 | OutputDataFloat(0, 2, [R][2], [R][34]); 251 | OutputDataFloat(0, 3, [R][2], [C][808]); 252 | OutputDataFloat(0, 4, [R][2], [R][1]); 253 | OutputDataFloat(0, 5, [R][2], [R][3]); 254 | OutputDataFloat(0, 6, [R][2], [R][4]); 255 | OutputDataFloat(0, 7, [R][2], [R][5]); 256 | OutputDataFloat(0, 8, [R][2], [R][6]); 257 | OutputDataFloat(0, 9, [R][2], [R][7]); 258 | OutputDataFloat(0, 10, [R][2], [R][8]); 259 | OutputDataFloat(0, 11, [R][2], [R][24]); 260 | OutputDataFloat(0, 12, [R][2], [R][29]); 261 | OutputDataFloat(0, 13, [R][2], [R][31]); 262 | OutputDataFloat(0, 14, [R][2], [R][32]); 263 | OutputDataFloat(0, 15, [R][2], [R][26]); 264 | OutputDataFloat(0, 16, [R][2], [R][28]); 265 | OutputDataFloat(0, 17, [R][2], [R][0]); 266 | OutputDataFloat(0, 18, [R][2], [R][9]); 267 | OutputDataFloat(0, 19, [R][2], [R][10]); 268 | OutputDataFloat(0, 20, [R][2], [R][11]); 269 | OutputDataFloat(0, 21, [R][2], [R][19]); 270 | OutputDataFloat(0, 22, [R][2], [R][20]); 271 | OutputDataFloat(0, 23, [R][2], [R][21]); 272 | OutputDataFloat(0, 24, [R][2], [R][9]); 273 | OutputDataFloat(0, 25, [R][2], [R][10]); 274 | OutputDataFloat(0, 26, [R][2], [R][11]); 275 | OutputDataFloat(0, 27, [R][2], [R][19]); 276 | OutputDataFloat(0, 28, [R][2], [R][20]); 277 | OutputDataFloat(0, 29, [R][2], [R][21]); 278 | OutputDataFloat(0, 30, [R][2], [R][12]); 279 | OutputDataFloat(0, 31, [R][2], [R][13]); 280 | OutputDataFloat(0, 32, [R][2], [R][14]); 281 | OutputDataFloat(0, 33, [R][2], [R][15]); 282 | OutputDataFloat(0, 34, [R][2], [R][16]); 283 | OutputDataFloat(0, 35, [R][2], [R][17]); 284 | OutputDataInt(0, 0, [R][2], [R][18]); 285 | OutputDataFloat(0, 36, [R][2], [R][30]); 286 | OutputDataFloat(0, 37, [R][2], [R][27]); 287 | OutputDataFloat(0, 38, [R][2], [R][25]); 288 | exit_stat_scope(); ------------------------------- v!Q67_-8_8i45s8@tkwu5545s8@tkwu5545s8@tkwu55 45s8@tkwu5545s8@tkwu55 45s8@tkwu55Q>A3fS;!9EFEC2754688770EFEEE238A26C4F1C4Default8f`7EANiagaraScript /Niagara/DefaultAssets/DefaultModule.DefaultModulea8-~u8r M-RعeQ+ Q>A&-7CPUSim;8A;-]Y`౹TMeWN -88;-]˷ZȠjRڜv-]*%LR?L1%-]wj.C=Wc~E*AQ>F8Y`784NiagaraScript /Game/Audio4.Audio4:SystemSpawnScriptbb8 ~u8rO}`,@| 'iß Q>F&-7DansingSmoke.LocalspaceVNiagaraSystem /Game/NiagaraAudioVisualization/Effects/NS_DansingSmoke.NS_DansingSmokeCPUSim;8A;-]9 дvw Z-] 8(8( ;-]E!4 `jG-]Q>o=a 6G-⢋-]ɽ[D4V}ֹ-]dKmn"΋@D?-]dKmn"΋@D?-]dKmn"΋@D?-]dKmn"΋@D?-]dKmn"΋@D?-]dKmn"΋@D?-]dKmn"΋@D?-]dKmn"΋@D?-]dKmn"΋@D?-]r.(Cg"8-]]{Fis{U-]@,AS~VnW-]5kTZ"Otz Qͦb)-]I o=a 6G-⢋-]ɽ[D4V}ֹ-]dKmn"΋@D?-]dKmn"΋@D?-]dKmn"΋@D?-]dKmn"΋@D?-]dKmn"΋@D?-]dKmn"΋@D?-]dKmn"΋@D?-]dKmn"΋@D?-]dKmn"΋@D?-]r.(Cg"8-]]{Fis{U-]@,AS~VnW-]7ZgsOo-]*%LR?L1%-]țU'35(kZm8 ~u8rO}`,@| 'iß Q>F&-7DansingSmoke.LocalspaceVNiagaraSystem /Game/NiagaraAudioVisualization/Effects/NS_DansingSmoke.NS_DansingSmokeCPUSim;8A;-]9 дvw Z-] 8(8( ;-]E!4 `jG-]Q>o=a 6G-⢋-]ɽ[D4V}ֹ-]dKmn"΋@D?-]dKmn"΋@D?-]dKmn"΋@D?-]dKmn"΋@D?-]dKmn"΋@D?-]dKmn"΋@D?-]dKmn"΋@D?-]dKmn"΋@D?-]dKmn"΋@D?-]r.(Cg"8-]]{Fis{U-]@,AS~VnW-]5kTZ"Otz Qͦb)-]I o=a 6G-⢋-]ɽ[D4V}ֹ-]dKmn"΋@D?-]dKmn"΋@D?-]dKmn"΋@D?-]dKmn"΋@D?-]dKmn"΋@D?-]dKmn"΋@D?-]dKmn"΋@D?-]dKmn"΋@D?-]dKmn"΋@D?-]r.(Cg"8-]]{Fis{U-]@,AS~VnW-]7ZgsOo-]*%LR?L1%-]țU'35(kZma82}\-][$V(S,S,T0T0T4T0S,S,S,T0S,S,T0S,T S,T4S, T0T0 T0 S, S, \8_-88Pxkwu8_-88xkwukwukwukwukwu4--848xkwukwukwukwukwukwukwukwukwukwukwukwu;kwu<kwu=kwu>kwu?kwu@kwuAkwuBkwu58-88xkwukwu6-]868(oh5fg5fh5g5h5Jg5h5Kg57// Shader generated by Niagara HLSL Translator struct NiagaraSpawnInfo { int Count; float InterpStartDt; float IntervalDt; int SpawnGroup; }; struct NiagaraID { int Index; int AcquireTag; }; cbuffer FNiagaraGlobalParameters { float Engine_DeltaTime; float Engine_InverseDeltaTime; float Engine_Time; float Engine_RealTime; int Engine_QualityLevel; int Engine_PaddingInt32_0; int Engine_PaddingInt32_1; int Engine_PaddingInt32_2; } cbuffer FNiagaraSystemParameters { } cbuffer FNiagaraOwnerParameters { } cbuffer FNiagaraEmitterParameters { } cbuffer FNiagaraExternalParameters { int Emitter_RandomSeed; } struct FParamMap0_System { float Age; bool bCompleteOnInactive; float CurrentLoopDuration; int ExecutionState; int ExecutionStateSource; int LoopCount; float LoopedAge; float NormalizedLoopAge; }; struct FParamMap0_Engine_Emitter { int InstanceSeed; int TotalSpawnedParticles; }; struct FParamMap0_Engine { float DeltaTime; FParamMap0_Engine_Emitter Emitter; float InverseDeltaTime; int PaddingInt32_0; int PaddingInt32_1; int PaddingInt32_2; int QualityLevel; float RealTime; float Time; }; struct FParamMap0_Emitter { int RandomSeed; }; struct FParamMap0_DansingSmoke_SpawnRate { NiagaraSpawnInfo SpawnOutputInfo; float SpawnRemainder; }; struct FParamMap0_DansingSmoke_Scalability { float DistanceFraction; }; struct FParamMap0_DansingSmoke { float Age; float CurrentLoopDuration; int ExecutionState; int ExecutionStateSource; bool LocalSpace; int LoopCount; float LoopedAge; float NormalizedLoopAge; FParamMap0_DansingSmoke_Scalability Scalability; FParamMap0_DansingSmoke_SpawnRate SpawnRate; }; struct FParamMap0 { FParamMap0_DansingSmoke DansingSmoke; FParamMap0_Emitter Emitter; FParamMap0_Engine Engine; FParamMap0_System System; }; struct FSimulationContext { FParamMap0 Map; }; static float HackSpawnInterp = 1.0; void DansingSmoke_Func_(inout FSimulationContext Context); float GetSpawnInterpolation(); void DansingSmoke_Func_(inout FSimulationContext Context) { } float GetSpawnInterpolation() { return 1.0f;} void ReadDataSets(inout FSimulationContext Context) { } void WriteDataSets(inout FSimulationContext Context) { } void Simulate(inout FSimulationContext Context) { EnterStatScope(0 /**NiagaraScript /Game/NiagaraAudioVisualization/Effects/NS_DansingSmoke.NS_DansingSmoke:SystemSpawnScript*/); //Begin Initialize Parameter Map Defaults int Constant = 0; Context.Map.DansingSmoke.ExecutionState = Constant; float Constant1 = 0; Context.Map.DansingSmoke.Age = Constant1; float Constant2 = 0; Context.Map.DansingSmoke.CurrentLoopDuration = Constant2; float Constant3 = 0; Context.Map.DansingSmoke.LoopedAge = Constant3; int Constant4 = 0; Context.Map.DansingSmoke.LoopCount = Constant4; float Constant5 = (0.0); Context.Map.DansingSmoke.NormalizedLoopAge = Constant5; float Constant6 = (0.0); Context.Map.DansingSmoke.Scalability.DistanceFraction = Constant6; int Constant7 = 0; Context.Map.System.ExecutionState = Constant7; int Constant8 = 0; Context.Map.System.ExecutionStateSource = Constant8; int Constant9 = 0; Context.Map.DansingSmoke.ExecutionStateSource = Constant9; float Constant10 = 0; Context.Map.DansingSmoke.SpawnRate.SpawnRemainder = Constant10; NiagaraSpawnInfo Constant11 = (NiagaraSpawnInfo)0; Context.Map.DansingSmoke.SpawnRate.SpawnOutputInfo = Constant11; bool Constant12 = false; Context.Map.DansingSmoke.LocalSpace = Constant12; float Constant13 = 0; Context.Map.System.Age = Constant13; float Constant14 = 0; Context.Map.System.CurrentLoopDuration = Constant14; float Constant15 = 0; Context.Map.System.LoopedAge = Constant15; int Constant16 = 0; Context.Map.System.LoopCount = Constant16; float Constant17 = (0.0); Context.Map.System.NormalizedLoopAge = Constant17; bool Constant18 = false; Context.Map.System.bCompleteOnInactive = Constant18; //End Initialize Parameter Map Defaults EnterStatScope(1 /**DansingSmoke*/); DansingSmoke_Func_(Context); ExitStatScope(/**DansingSmoke*/); // Begin HandleMissingDefaultValues // End HandleMissingDefaultValues ExitStatScope(/**NiagaraScript /Game/NiagaraAudioVisualization/Effects/NS_DansingSmoke.NS_DansingSmoke:SystemSpawnScript*/); } void SimulateMain() { EnterStatScope(2 /**SystemSpawnScript_Main*/); FSimulationContext Context = (FSimulationContext)0; Context.Map.DansingSmoke.Age = 0.0f; Context.Map.DansingSmoke.CurrentLoopDuration = 0.0f; Context.Map.DansingSmoke.ExecutionState = 0; Context.Map.DansingSmoke.ExecutionStateSource = 0; Context.Map.DansingSmoke.LocalSpace = false; Context.Map.DansingSmoke.LoopCount = 0; Context.Map.DansingSmoke.LoopedAge = 0.0f; Context.Map.DansingSmoke.NormalizedLoopAge = 0.0f; Context.Map.DansingSmoke.Scalability.DistanceFraction = 0.0f; Context.Map.DansingSmoke.SpawnRate.SpawnOutputInfo.Count = 0; Context.Map.DansingSmoke.SpawnRate.SpawnOutputInfo.InterpStartDt = 0.0f; Context.Map.DansingSmoke.SpawnRate.SpawnOutputInfo.IntervalDt = 0.0f; Context.Map.DansingSmoke.SpawnRate.SpawnOutputInfo.SpawnGroup = 0; Context.Map.DansingSmoke.SpawnRate.SpawnRemainder = 0.0f; Context.Map.Emitter.RandomSeed = 0; Context.Map.System.Age = 0.0f; Context.Map.System.bCompleteOnInactive = false; Context.Map.System.CurrentLoopDuration = 0.0f; Context.Map.System.ExecutionState = 0; Context.Map.System.ExecutionStateSource = 0; Context.Map.System.LoopCount = 0; Context.Map.System.LoopedAge = 0.0f; Context.Map.System.NormalizedLoopAge = 0.0f; Context.Map.Engine.Emitter.InstanceSeed = InputDataInt(1, 0); Context.Map.Engine.Emitter.TotalSpawnedParticles = InputDataInt(1, 1); Context.Map.Emitter.RandomSeed = Emitter_RandomSeed; ReadDataSets(Context); EnterStatScope(3 /**SystemSpawnScript_MapMain*/); Simulate(Context); ExitStatScope(/**SystemSpawnScript_MapMain*/); WriteDataSets(Context); { int TmpWriteIndex = OutputIndex(0, false, true); OutputDataFloat(0, 0, TmpWriteIndex, Context.Map.DansingSmoke.Age); OutputDataFloat(0, 1, TmpWriteIndex, Context.Map.DansingSmoke.CurrentLoopDuration); OutputDataInt(0, 0, TmpWriteIndex, Context.Map.DansingSmoke.ExecutionState); OutputDataInt(0, 1, TmpWriteIndex, Context.Map.DansingSmoke.ExecutionStateSource); OutputDataBool(0, 2, TmpWriteIndex, Context.Map.DansingSmoke.LocalSpace); OutputDataInt(0, 3, TmpWriteIndex, Context.Map.DansingSmoke.LoopCount); OutputDataFloat(0, 2, TmpWriteIndex, Context.Map.DansingSmoke.LoopedAge); OutputDataFloat(0, 3, TmpWriteIndex, Context.Map.DansingSmoke.NormalizedLoopAge); OutputDataFloat(0, 4, TmpWriteIndex, Context.Map.DansingSmoke.Scalability.DistanceFraction); OutputDataInt(0, 4, TmpWriteIndex, Context.Map.DansingSmoke.SpawnRate.SpawnOutputInfo.Count); OutputDataFloat(0, 5, TmpWriteIndex, Context.Map.DansingSmoke.SpawnRate.SpawnOutputInfo.InterpStartDt); OutputDataFloat(0, 6, TmpWriteIndex, Context.Map.DansingSmoke.SpawnRate.SpawnOutputInfo.IntervalDt); OutputDataInt(0, 5, TmpWriteIndex, Context.Map.DansingSmoke.SpawnRate.SpawnOutputInfo.SpawnGroup); OutputDataFloat(0, 7, TmpWriteIndex, Context.Map.DansingSmoke.SpawnRate.SpawnRemainder); OutputDataInt(0, 6, TmpWriteIndex, Context.Map.Emitter.RandomSeed); OutputDataFloat(0, 8, TmpWriteIndex, Context.Map.System.Age); OutputDataBool(0, 7, TmpWriteIndex, Context.Map.System.bCompleteOnInactive); OutputDataFloat(0, 9, TmpWriteIndex, Context.Map.System.CurrentLoopDuration); OutputDataInt(0, 8, TmpWriteIndex, Context.Map.System.ExecutionState); OutputDataInt(0, 9, TmpWriteIndex, Context.Map.System.ExecutionStateSource); OutputDataInt(0, 10, TmpWriteIndex, Context.Map.System.LoopCount); OutputDataFloat(0, 10, TmpWriteIndex, Context.Map.System.LoopedAge); OutputDataFloat(0, 11, TmpWriteIndex, Context.Map.System.NormalizedLoopAge); } ExitStatScope(/**SystemSpawnScript_Main*/); } 7 ------------------------------- Summary ------------------------------- Num Byte Code Ops: 26 Num Constants: 14 ------------------------------- Constant Table ------------------------------- 0 | Engine_DeltaTime 4 | Engine_InverseDeltaTime 8 | Engine_Time 12 | Engine_RealTime 16 | Engine_QualityLevel 20 | Engine_PaddingInt32_0 24 | Engine_PaddingInt32_1 28 | Engine_PaddingInt32_2 32 | Emitter_RandomSeed 36 | 2 40 | True 44 | 0 48 | 0 52 | False ------------------------------- Byte Code (26 Ops) ------------------------------- 0 | enter_stat_scope(C[36]); 1 | [R][0] = AcquireIndex(0, [C][40]); 2 | OutputDataFloat(0, 0, [R][0], [C][44]); 3 | OutputDataFloat(0, 1, [R][0], [C][44]); 4 | OutputDataInt(0, 0, [R][0], [C][48]); 5 | OutputDataInt(0, 1, [R][0], [C][48]); 6 | OutputDataInt(0, 2, [R][0], [C][52]); 7 | OutputDataInt(0, 3, [R][0], [C][48]); 8 | OutputDataFloat(0, 2, [R][0], [C][44]); 9 | OutputDataFloat(0, 3, [R][0], [C][44]); 10 | OutputDataFloat(0, 4, [R][0], [C][44]); 11 | OutputDataInt(0, 4, [R][0], [C][48]); 12 | OutputDataFloat(0, 5, [R][0], [C][44]); 13 | OutputDataFloat(0, 6, [R][0], [C][44]); 14 | OutputDataInt(0, 5, [R][0], [C][48]); 15 | OutputDataFloat(0, 7, [R][0], [C][44]); 16 | OutputDataInt(0, 6, [R][0], [C][32]); 17 | OutputDataFloat(0, 8, [R][0], [C][44]); 18 | OutputDataInt(0, 7, [R][0], [C][52]); 19 | OutputDataFloat(0, 9, [R][0], [C][44]); 20 | OutputDataInt(0, 8, [R][0], [C][48]); 21 | OutputDataInt(0, 9, [R][0], [C][48]); 22 | OutputDataInt(0, 10, [R][0], [C][48]); 23 | OutputDataFloat(0, 10, [R][0], [C][44]); 24 | OutputDataFloat(0, 11, [R][0], [C][44]); 25 | exit_stat_scope(); ------------------------------- vQ67Q>G8`-8 8|kwukwu kwukwukwukwukwu kwukwu-(]$@?@E?PCG795NiagaraScript /Game/Audio4.Audio4:SystemUpdateScriptbb8 ~u8rO}`,@| 'iß Q>G&-7DansingSmoke.LocalspaceVNiagaraSystem /Game/NiagaraAudioVisualization/Effects/NS_DansingSmoke.NS_DansingSmokeCPUSim;8A;-]5kTZ"Otz Qͦb)-] 8(8( ;-]9 дvw Z-]Q>o=a 6G-⢋-]E!4 `jG-]ɽ[D4V}ֹ-]dKmn"΋@D?-]dKmn"΋@D?-]dKmn"΋@D?-]dKmn"΋@D?-]dKmn"΋@D?-]dKmn"΋@D?-]dKmn"΋@D?-]dKmn"΋@D?-]dKmn"΋@D?-]r.(Cg"8-]]{Fis{U-]@,AS~VnW-]I o=a 6G-⢋-]E!4 `jG-]ɽ[D4V}ֹ-]dKmn"΋@D?-]dKmn"΋@D?-]dKmn"΋@D?-]dKmn"΋@D?-]dKmn"΋@D?-]dKmn"΋@D?-]dKmn"΋@D?-]dKmn"΋@D?-]dKmn"΋@D?-]r.(Cg"8-]]{Fis{U-]@,AS~VnW-]7ZgsOo-]*%LR?L1%-]țU'35(kZm8 ~u8rO}`,@| 'iß Q>G&-7DansingSmoke.LocalspaceVNiagaraSystem /Game/NiagaraAudioVisualization/Effects/NS_DansingSmoke.NS_DansingSmokeCPUSim;8A;-]5kTZ"Otz Qͦb)-] 8(8( ;-]9 дvw Z-]Q>o=a 6G-⢋-]E!4 `jG-]ɽ[D4V}ֹ-]dKmn"΋@D?-]dKmn"΋@D?-]dKmn"΋@D?-]dKmn"΋@D?-]dKmn"΋@D?-]dKmn"΋@D?-]dKmn"΋@D?-]dKmn"΋@D?-]dKmn"΋@D?-]r.(Cg"8-]]{Fis{U-]@,AS~VnW-]I o=a 6G-⢋-]E!4 `jG-]ɽ[D4V}ֹ-]dKmn"΋@D?-]dKmn"΋@D?-]dKmn"΋@D?-]dKmn"΋@D?-]dKmn"΋@D?-]dKmn"΋@D?-]dKmn"΋@D?-]dKmn"΋@D?-]dKmn"΋@D?-]r.(Cg"8-]]{Fis{U-]@,AS~VnW-]7ZgsOo-]*%LR?L1%-]țU'35(kZma8}\-M]I[@MMNNNNMMMM N N N M NMNM[D[H[L$P)T+    G 2H H  ,  9 H+ + 8 H+H +H <H 8 XC + +X \[X[\(P )T+ G 2 HH   ,9H++ T` ;H;H<\<dCC8C+ +< H;XC<\<dCC8LC+L+L<H<HCC<\<dCC8\C+\+\\[d0h(T+hTG\\\\VlSSTTTTSSS TSST4ST<S TlS T T T S S \8_-88xkwukwu@kwukwukwukwukwukwu8_-8 8xkwukwukwukwukwu;<kwukwukwukwuG? kwu kwu? kwu4-E848xkwukwukwukwukwukwukwukwukwukwukwukwu;kwu<kwu=kwu>kwu?kwu@kwuAkwuBkwuB58- 88xkwukwukwukwukwukwu6-;868oh5gg5gh5Mg5Lh5g5h5 g5 h5&g5%h5Og5h5Pg57ee// Shader generated by Niagara HLSL Translator struct NiagaraSpawnInfo { int Count; float InterpStartDt; float IntervalDt; int SpawnGroup; }; struct NiagaraID { int Index; int AcquireTag; }; cbuffer FNiagaraGlobalParameters { float Engine_DeltaTime; float Engine_InverseDeltaTime; float Engine_Time; float Engine_RealTime; int Engine_QualityLevel; int Engine_PaddingInt32_0; int Engine_PaddingInt32_1; int Engine_PaddingInt32_2; } cbuffer FNiagaraSystemParameters { } cbuffer FNiagaraOwnerParameters { } cbuffer FNiagaraEmitterParameters { } cbuffer FNiagaraExternalParameters { float Constants_SystemState_LoopDelay; float Constants_SystemState_LoopDuration; float Constants_DansingSmoke_EmitterState_LoopDuration; float Constants_DansingSmoke_EmitterState_LoopDelay; float Constants_DansingSmoke_SpawnRate_SpawnRate; int Constants_DansingSmoke_SpawnRate_SpawnGroup; float Constants_DansingSmoke_SpawnRate_SpawnProbability; int Emitter_RandomSeed; } struct FParamMap0_Transient { int ScalabilityEmitterExecutionState; float ScalabilityEmitterSpawnCountScale; int ScalabilityExecutionState; bool SpawningbCanEverSpawn; }; struct FParamMap0_SystemState { float LoopDelay; bool RecalculateDurationEachLoop; }; struct FParamMap0_System { float Age; bool bCompleteOnInactive; float CurrentLoopDuration; int ExecutionState; int ExecutionStateSource; int LoopCount; float LoopedAge; float NormalizedLoopAge; }; struct FParamMap0_Local_SystemState { bool LoopCountIncreased; }; struct FParamMap0_Local_SpawnRate { float InterpStartDT; float IntervalDT; int SpawnCount; float SpawnRate; }; struct FParamMap0_Local_EmitterState { bool LoopCountIncreased; float LoopDuration; bool NoActiveEmitterParticles; int PreviousEmitterState; }; struct FParamMap0_Local { FParamMap0_Local_EmitterState EmitterState; FParamMap0_Local_SpawnRate SpawnRate; FParamMap0_Local_SystemState SystemState; }; struct FParamMap0_Engine_Owner { int ExecutionState; float LODDistanceFraction; }; struct FParamMap0_Engine_Emitter { int InstanceSeed; int TotalSpawnedParticles; }; struct FParamMap0_Engine_DansingSmoke { int NumParticles; float SpawnCountScale; }; struct FParamMap0_Engine { FParamMap0_Engine_DansingSmoke DansingSmoke; float DeltaTime; FParamMap0_Engine_Emitter Emitter; float InverseDeltaTime; FParamMap0_Engine_Owner Owner; int PaddingInt32_0; int PaddingInt32_1; int PaddingInt32_2; int QualityLevel; float RealTime; float Time; }; struct FParamMap0_EmitterState { float LoopDelay; bool RecalculateDurationEachLoop; }; struct FParamMap0_Emitter { int RandomSeed; }; struct FParamMap0_DansingSmoke_SpawnRate { NiagaraSpawnInfo SpawnOutputInfo; float SpawnRemainder; }; struct FParamMap0_DansingSmoke_Scalability { float DistanceFraction; }; struct FParamMap0_DansingSmoke { float Age; float CurrentLoopDuration; int ExecutionState; int ExecutionStateSource; bool LocalSpace; int LoopCount; float LoopedAge; float NormalizedLoopAge; FParamMap0_DansingSmoke_Scalability Scalability; FParamMap0_DansingSmoke_SpawnRate SpawnRate; }; struct FParamMap0_Constants_SystemState { float LoopDelay; float LoopDuration; }; struct FParamMap0_Constants_DansingSmoke_SpawnRate { int SpawnGroup; float SpawnProbability; float SpawnRate; }; struct FParamMap0_Constants_DansingSmoke_EmitterState { float LoopDelay; float LoopDuration; }; struct FParamMap0_Constants_DansingSmoke { FParamMap0_Constants_DansingSmoke_EmitterState EmitterState; FParamMap0_Constants_DansingSmoke_SpawnRate SpawnRate; }; struct FParamMap0_Constants { FParamMap0_Constants_DansingSmoke DansingSmoke; FParamMap0_Constants_SystemState SystemState; }; struct FParamMap0 { FParamMap0_Constants Constants; FParamMap0_DansingSmoke DansingSmoke; FParamMap0_Emitter Emitter; FParamMap0_EmitterState EmitterState; FParamMap0_Engine Engine; FParamMap0_Local Local; FParamMap0_System System; FParamMap0_SystemState SystemState; FParamMap0_Transient Transient; }; struct FSimulationContext { FParamMap0 Map; }; static float HackSpawnInterp = 1.0; void SystemState_SystemChangeState002_Func_(int In_NewState, bool In_Condition, int In_NewStateSource, inout FSimulationContext Context); void SystemState_SystemChangeState_Func_(int In_NewState, bool In_Condition, int In_NewStateSource, inout FSimulationContext Context); void SystemState_SystemChangeState001_Func_(int In_NewState, bool In_Condition, int In_NewStateSource, inout FSimulationContext Context); void SystemState_Func_(inout FSimulationContext Context); void EmitterState_EmitterChangeState002_DansingSmoke_Func_(int In_NewState, bool In_Condition, int In_NewStateSource, inout FSimulationContext Context); void EmitterState_EmitterChangeState005_DansingSmoke_Func_(int In_NewState, bool In_Condition, int In_NewStateSource, inout FSimulationContext Context); void EmitterState_EmitterChangeState003_DansingSmoke_Func_(int In_NewState, bool In_Condition, int In_NewStateSource, inout FSimulationContext Context); void EmitterState_DansingSmoke_Func_(inout FSimulationContext Context); void SpawnRate_DansingSmoke_Func_(inout FSimulationContext Context); void DansingSmoke_Func_(inout FSimulationContext Context); float GetSpawnInterpolation(); void SystemState_SystemChangeState002_Func_(int In_NewState, bool In_Condition, int In_NewStateSource, inout FSimulationContext Context) { bool Result11 = NiagaraAll(Context.Map.System.ExecutionStateSource <= In_NewStateSource); bool Result12 = In_Condition && Result11; int ENiagaraExecutionState_IfResult; int ENiagaraExecutionStateSource_IfResult; if(Result12) { ENiagaraExecutionState_IfResult = In_NewState; ENiagaraExecutionStateSource_IfResult = In_NewStateSource; } else { ENiagaraExecutionState_IfResult = Context.Map.System.ExecutionState; ENiagaraExecutionStateSource_IfResult = Context.Map.System.ExecutionStateSource; } Context.Map.System.ExecutionState = ENiagaraExecutionState_IfResult; Context.Map.System.ExecutionStateSource = ENiagaraExecutionStateSource_IfResult; } void SystemState_SystemChangeState_Func_(int In_NewState, bool In_Condition, int In_NewStateSource, inout FSimulationContext Context) { bool Result13 = NiagaraAll(Context.Map.System.ExecutionStateSource <= In_NewStateSource); bool Result14 = In_Condition && Result13; int ENiagaraExecutionState_IfResult1; int ENiagaraExecutionStateSource_IfResult1; if(Result14) { ENiagaraExecutionState_IfResult1 = In_NewState; ENiagaraExecutionStateSource_IfResult1 = In_NewStateSource; } else { ENiagaraExecutionState_IfResult1 = Context.Map.System.ExecutionState; ENiagaraExecutionStateSource_IfResult1 = Context.Map.System.ExecutionStateSource; } Context.Map.System.ExecutionState = ENiagaraExecutionState_IfResult1; Context.Map.System.ExecutionStateSource = ENiagaraExecutionStateSource_IfResult1; } void SystemState_SystemChangeState001_Func_(int In_NewState, bool In_Condition, int In_NewStateSource, inout FSimulationContext Context) { bool Result16 = NiagaraAll(Context.Map.System.ExecutionStateSource <= In_NewStateSource); bool Result17 = In_Condition && Result16; int ENiagaraExecutionState_IfResult2; int ENiagaraExecutionStateSource_IfResult2; if(Result17) { ENiagaraExecutionState_IfResult2 = In_NewState; ENiagaraExecutionStateSource_IfResult2 = In_NewStateSource; } else { ENiagaraExecutionState_IfResult2 = Context.Map.System.ExecutionState; ENiagaraExecutionStateSource_IfResult2 = Context.Map.System.ExecutionStateSource; } Context.Map.System.ExecutionState = ENiagaraExecutionState_IfResult2; Context.Map.System.ExecutionStateSource = ENiagaraExecutionStateSource_IfResult2; } void SystemState_Func_(inout FSimulationContext Context) { float Constant3 = 0; bool Result = NiagaraAll(Context.Map.System.Age == Constant3); float Constant4 = 0.016667; float Result1 = max(Context.Map.Constants.SystemState.LoopDuration, Constant4); float Duration_IfResult; if(Result) { Duration_IfResult = Result1; } else { Duration_IfResult = Context.Map.System.CurrentLoopDuration; } float Constant5 = 0; Context.Map.System.CurrentLoopDuration = Duration_IfResult; Context.Map.SystemState.LoopDelay = Constant5; float Result2 = Context.Map.System.Age + Context.Map.Engine.DeltaTime; float Result3 = Context.Map.Engine.DeltaTime + Context.Map.System.LoopedAge; float Result4 = Result3 / Context.Map.System.CurrentLoopDuration; int Count; Count = Result4; int Constant6 = 0; int Result5 = max(Count, Constant6); float Result6 = Result5 * Context.Map.System.CurrentLoopDuration; float Result7 = Result3 - Result6; int Constant7 = 0; bool Result8 = NiagaraAll(Result5 > Constant7); int Result9 = Result5 + Context.Map.System.LoopCount; Context.Map.System.Age = Result2; Context.Map.System.LoopedAge = Result7; Context.Map.Local.SystemState.LoopCountIncreased = Result8; Context.Map.System.LoopCount = Result9; float float_IfResult; if(Context.Map.SystemState.RecalculateDurationEachLoop) { float_IfResult = Context.Map.Constants.SystemState.LoopDuration; } else { float_IfResult = Context.Map.System.CurrentLoopDuration; } float CurrentLoopDuration_IfResult; float LoopedAge_IfResult; if(Context.Map.Local.SystemState.LoopCountIncreased) { CurrentLoopDuration_IfResult = float_IfResult; LoopedAge_IfResult = Context.Map.System.LoopedAge; } else { CurrentLoopDuration_IfResult = Context.Map.System.CurrentLoopDuration; LoopedAge_IfResult = Context.Map.System.LoopedAge; } Context.Map.System.CurrentLoopDuration = CurrentLoopDuration_IfResult; Context.Map.System.LoopedAge = LoopedAge_IfResult; float Result10 = Context.Map.System.LoopedAge / Context.Map.System.CurrentLoopDuration; Context.Map.System.NormalizedLoopAge = Result10; bool Constant8 = true; int Constant9 = 0; SystemState_SystemChangeState002_Func_(Context.Map.Transient.ScalabilityExecutionState, Constant8, Constant9, Context); int Constant10 = 3; bool Constant11 = false; int Constant12 = 3; SystemState_SystemChangeState_Func_(Constant10, Constant11, Constant12, Context); bool Constant13 = true; Context.Map.System.bCompleteOnInactive = Constant13; int Constant14 = 0; bool Result15 = NiagaraAll(Context.Map.Engine.Owner.ExecutionState != Constant14); int Constant15 = 2; SystemState_SystemChangeState001_Func_(Context.Map.Engine.Owner.ExecutionState, Result15, Constant15, Context); } void EmitterState_EmitterChangeState002_DansingSmoke_Func_(int In_NewState, bool In_Condition, int In_NewStateSource, inout FSimulationContext Context) { int Constant27 = 3; bool Result32 = NiagaraAll(Context.Map.DansingSmoke.ExecutionState != Constant27); int Constant28 = 4; bool Result33 = NiagaraAll(Context.Map.DansingSmoke.ExecutionState != Constant28); bool Result34 = Result32 && Result33; bool Result35 = In_Condition && Result34; bool Result36 = NiagaraAll(Context.Map.DansingSmoke.ExecutionStateSource <= In_NewStateSource); bool Result37 = Result35 && Result36; int ENiagaraExecutionState_IfResult3; int ENiagaraExecutionStateSource_IfResult3; if(Result37) { ENiagaraExecutionState_IfResult3 = In_NewState; ENiagaraExecutionStateSource_IfResult3 = In_NewStateSource; } else { ENiagaraExecutionState_IfResult3 = Context.Map.DansingSmoke.ExecutionState; ENiagaraExecutionStateSource_IfResult3 = Context.Map.DansingSmoke.ExecutionStateSource; } Context.Map.DansingSmoke.ExecutionState = ENiagaraExecutionState_IfResult3; Context.Map.DansingSmoke.ExecutionStateSource = ENiagaraExecutionStateSource_IfResult3; } void EmitterState_EmitterChangeState005_DansingSmoke_Func_(int In_NewState, bool In_Condition, int In_NewStateSource, inout FSimulationContext Context) { int Constant33 = 3; bool Result41 = NiagaraAll(Context.Map.DansingSmoke.ExecutionState != Constant33); int Constant34 = 4; bool Result42 = NiagaraAll(Context.Map.DansingSmoke.ExecutionState != Constant34); bool Result43 = Result41 && Result42; bool Result44 = In_Condition && Result43; bool Result45 = NiagaraAll(Context.Map.DansingSmoke.ExecutionStateSource <= In_NewStateSource); bool Result46 = Result44 && Result45; int ENiagaraExecutionState_IfResult4; int ENiagaraExecutionStateSource_IfResult4; if(Result46) { ENiagaraExecutionState_IfResult4 = In_NewState; ENiagaraExecutionStateSource_IfResult4 = In_NewStateSource; } else { ENiagaraExecutionState_IfResult4 = Context.Map.DansingSmoke.ExecutionState; ENiagaraExecutionStateSource_IfResult4 = Context.Map.DansingSmoke.ExecutionStateSource; } Context.Map.DansingSmoke.ExecutionState = ENiagaraExecutionState_IfResult4; Context.Map.DansingSmoke.ExecutionStateSource = ENiagaraExecutionStateSource_IfResult4; } void EmitterState_EmitterChangeState003_DansingSmoke_Func_(int In_NewState, bool In_Condition, int In_NewStateSource, inout FSimulationContext Context) { int Constant39 = 3; bool Result51 = NiagaraAll(Context.Map.DansingSmoke.ExecutionState != Constant39); int Constant40 = 4; bool Result52 = NiagaraAll(Context.Map.DansingSmoke.ExecutionState != Constant40); bool Result53 = Result51 && Result52; bool Result54 = In_Condition && Result53; bool Result55 = NiagaraAll(Context.Map.DansingSmoke.ExecutionStateSource <= In_NewStateSource); bool Result56 = Result54 && Result55; int ENiagaraExecutionState_IfResult5; int ENiagaraExecutionStateSource_IfResult5; if(Result56) { ENiagaraExecutionState_IfResult5 = In_NewState; ENiagaraExecutionStateSource_IfResult5 = In_NewStateSource; } else { ENiagaraExecutionState_IfResult5 = Context.Map.DansingSmoke.ExecutionState; ENiagaraExecutionStateSource_IfResult5 = Context.Map.DansingSmoke.ExecutionStateSource; } Context.Map.DansingSmoke.ExecutionState = ENiagaraExecutionState_IfResult5; Context.Map.DansingSmoke.ExecutionStateSource = ENiagaraExecutionStateSource_IfResult5; } void EmitterState_DansingSmoke_Func_(inout FSimulationContext Context) { Context.Map.Local.EmitterState.PreviousEmitterState = Context.Map.DansingSmoke.ExecutionState; float Constant16 = 0.016667; float Result18 = max(Context.Map.Constants.DansingSmoke.EmitterState.LoopDuration, Constant16); Context.Map.Local.EmitterState.LoopDuration = Result18; float Constant17 = 0; bool Result19 = NiagaraAll(Context.Map.DansingSmoke.Age == Constant17); float Duration_IfResult1; if(Result19) { Duration_IfResult1 = Context.Map.Local.EmitterState.LoopDuration; } else { Duration_IfResult1 = Context.Map.DansingSmoke.CurrentLoopDuration; } float Constant18 = 0; Context.Map.DansingSmoke.CurrentLoopDuration = Duration_IfResult1; Context.Map.EmitterState.LoopDelay = Constant18; float Result20 = Context.Map.DansingSmoke.Age + Context.Map.Engine.DeltaTime; float Result21 = Context.Map.Engine.DeltaTime + Context.Map.DansingSmoke.LoopedAge; float Result22 = Result21 / Context.Map.DansingSmoke.CurrentLoopDuration; int Count1; Count1 = Result22; int Constant19 = 0; int Result23 = max(Count1, Constant19); float Result24 = Result23 * Context.Map.DansingSmoke.CurrentLoopDuration; float Result25 = Result21 - Result24; int Constant20 = 0; bool Result26 = NiagaraAll(Result23 > Constant20); int Result27 = Result23 + Context.Map.DansingSmoke.LoopCount; Context.Map.DansingSmoke.Age = Result20; Context.Map.DansingSmoke.LoopedAge = Result25; Context.Map.Local.EmitterState.LoopCountIncreased = Result26; Context.Map.DansingSmoke.LoopCount = Result27; bool Constant21 = false; Context.Map.EmitterState.RecalculateDurationEachLoop = Constant21; float float_IfResult1; if(Context.Map.EmitterState.RecalculateDurationEachLoop) { float_IfResult1 = Context.Map.Local.EmitterState.LoopDuration; } else { float_IfResult1 = Context.Map.DansingSmoke.CurrentLoopDuration; } float CurrentLoopDuration_IfResult1; float LoopedAge_IfResult1; if(Context.Map.Local.EmitterState.LoopCountIncreased) { CurrentLoopDuration_IfResult1 = float_IfResult1; LoopedAge_IfResult1 = Context.Map.DansingSmoke.LoopedAge; } else { CurrentLoopDuration_IfResult1 = Context.Map.DansingSmoke.CurrentLoopDuration; LoopedAge_IfResult1 = Context.Map.DansingSmoke.LoopedAge; } Context.Map.DansingSmoke.CurrentLoopDuration = CurrentLoopDuration_IfResult1; Context.Map.DansingSmoke.LoopedAge = LoopedAge_IfResult1; float Result28 = Context.Map.DansingSmoke.LoopedAge / Context.Map.DansingSmoke.CurrentLoopDuration; Context.Map.DansingSmoke.NormalizedLoopAge = Result28; float Constant22 = 0; float Constant23 = 1.0001; float Result29 = clamp(Context.Map.Engine.Owner.LODDistanceFraction,Constant22,Constant23); Context.Map.DansingSmoke.Scalability.DistanceFraction = Result29; int Constant24 = 0; Context.Map.Transient.ScalabilityEmitterExecutionState = Constant24; int Constant25 = 0; bool Result30 = NiagaraAll(Context.Map.Engine.DansingSmoke.NumParticles == Constant25); Context.Map.Local.EmitterState.NoActiveEmitterParticles = Result30; int Constant26 = 0; bool Result31 = NiagaraAll(Context.Map.System.ExecutionStateSource == Constant26); EmitterState_EmitterChangeState002_DansingSmoke_Func_(Context.Map.System.ExecutionState, Result31, Context.Map.System.ExecutionStateSource, Context); int Constant29 = 1; int Constant30 = 0; bool Result38 = NiagaraAll(Context.Map.System.ExecutionState != Constant30); int Constant31 = 2; bool Result39 = NiagaraAll(Context.Map.System.ExecutionStateSource == Constant31); bool Result40 = Result38 && Result39; int Constant32 = 1; EmitterState_EmitterChangeState005_DansingSmoke_Func_(Constant29, Result40, Constant32, Context); int Constant35 = 3; int Constant36 = 0; bool Result47 = NiagaraAll(Context.Map.DansingSmoke.ExecutionState != Constant36); int Constant37 = 0; bool Result48 = NiagaraAll(Context.Map.DansingSmoke.ExecutionStateSource != Constant37); bool Result49 = Result47 && Result48; bool Result50 = Context.Map.Local.EmitterState.NoActiveEmitterParticles && Result49; int Constant38 = 3; EmitterState_EmitterChangeState003_DansingSmoke_Func_(Constant35, Result50, Constant38, Context); } void SpawnRate_DansingSmoke_Func_(inout FSimulationContext Context) { float Constant41 = 1; Context.Map.Transient.ScalabilityEmitterSpawnCountScale = Constant41; float Result57 = Context.Map.Constants.DansingSmoke.SpawnRate.SpawnRate * Context.Map.Transient.ScalabilityEmitterSpawnCountScale * Context.Map.Engine.DansingSmoke.SpawnCountScale; float Result58 = Reciprocal(Result57); float Result59 = 1 - Context.Map.DansingSmoke.SpawnRate.SpawnRemainder; float Result60 = Result58 * Result59; Context.Map.Local.SpawnRate.SpawnRate = Result57; Context.Map.Local.SpawnRate.IntervalDT = Result58; Context.Map.Local.SpawnRate.InterpStartDT = Result60; float Constant42 = 0; bool Result61 = NiagaraAll(Context.Map.DansingSmoke.LoopedAge >= Constant42); float Constant43 = 1; float Constant44 = 0; float float_IfResult2; if(Result61) { float_IfResult2 = Constant43; } else { float_IfResult2 = Constant44; } float Result62 = Context.Map.Local.SpawnRate.SpawnRate * float_IfResult2; float Result63 = Result62 * Context.Map.Engine.DeltaTime + Context.Map.DansingSmoke.SpawnRate.SpawnRemainder; float Result64 = floor(Result63); float Result65 = Result63 - Result64; Context.Map.Local.SpawnRate.SpawnCount = Result64; Context.Map.DansingSmoke.SpawnRate.SpawnRemainder = Result65; NiagaraSpawnInfo Output1; Output1.Count = Context.Map.Local.SpawnRate.SpawnCount; Output1.InterpStartDt = Context.Map.Local.SpawnRate.InterpStartDT; Output1.IntervalDt = Context.Map.Local.SpawnRate.IntervalDT; Output1.SpawnGroup = Context.Map.Constants.DansingSmoke.SpawnRate.SpawnGroup; bool Constant45 = true; Context.Map.DansingSmoke.SpawnRate.SpawnOutputInfo = Output1; Context.Map.Transient.SpawningbCanEverSpawn = Constant45; } void DansingSmoke_Func_(inout FSimulationContext Context) { EnterStatScope(3 /**EmitterState_DansingSmoke_Func_*/); EmitterState_DansingSmoke_Func_(Context); ExitStatScope(/**EmitterState_DansingSmoke_Func_*/); EnterStatScope(4 /**SpawnRate_DansingSmoke_Func_*/); SpawnRate_DansingSmoke_Func_(Context); ExitStatScope(/**SpawnRate_DansingSmoke_Func_*/); } float GetSpawnInterpolation() { return 1.0f;} void ReadDataSets(inout FSimulationContext Context) { } void WriteDataSets(inout FSimulationContext Context) { } void Simulate(inout FSimulationContext Context) { EnterStatScope(0 /**NiagaraScript /Game/NiagaraAudioVisualization/Effects/NS_DansingSmoke.NS_DansingSmoke:SystemUpdateScript*/); //Begin Initialize Parameter Map Defaults //End Initialize Parameter Map Defaults bool Constant = (false); Context.Map.Local.SystemState.LoopCountIncreased = Constant; bool Constant1 = false; Context.Map.SystemState.RecalculateDurationEachLoop = Constant1; int Constant2 = 0; Context.Map.Transient.ScalabilityExecutionState = Constant2; EnterStatScope(1 /**SystemState_Func_*/); SystemState_Func_(Context); ExitStatScope(/**SystemState_Func_*/); EnterStatScope(2 /**DansingSmoke*/); DansingSmoke_Func_(Context); ExitStatScope(/**DansingSmoke*/); ExitStatScope(/**NiagaraScript /Game/NiagaraAudioVisualization/Effects/NS_DansingSmoke.NS_DansingSmoke:SystemUpdateScript*/); } void SimulateMain() { EnterStatScope(5 /**SystemUpdateScript_Main*/); FSimulationContext Context = (FSimulationContext)0; Context.Map.DansingSmoke.Age = InputDataFloat(0, 0); Context.Map.DansingSmoke.CurrentLoopDuration = InputDataFloat(0, 1); Context.Map.DansingSmoke.ExecutionState = InputDataInt(0, 0); Context.Map.DansingSmoke.ExecutionStateSource = InputDataInt(0, 1); Context.Map.DansingSmoke.LocalSpace = InputDataBool(0, 2); Context.Map.DansingSmoke.LoopCount = InputDataInt(0, 3); Context.Map.DansingSmoke.LoopedAge = InputDataFloat(0, 2); Context.Map.DansingSmoke.NormalizedLoopAge = InputDataFloat(0, 3); Context.Map.DansingSmoke.Scalability.DistanceFraction = InputDataFloat(0, 4); Context.Map.DansingSmoke.SpawnRate.SpawnOutputInfo.Count = 0; Context.Map.DansingSmoke.SpawnRate.SpawnOutputInfo.InterpStartDt = 0.0f; Context.Map.DansingSmoke.SpawnRate.SpawnOutputInfo.IntervalDt = 0.0f; Context.Map.DansingSmoke.SpawnRate.SpawnOutputInfo.SpawnGroup = 0; Context.Map.DansingSmoke.SpawnRate.SpawnRemainder = InputDataFloat(0, 7); Context.Map.Emitter.RandomSeed = InputDataInt(0, 6); Context.Map.System.Age = InputDataFloat(0, 8); Context.Map.System.bCompleteOnInactive = InputDataBool(0, 7); Context.Map.System.CurrentLoopDuration = InputDataFloat(0, 9); Context.Map.System.ExecutionState = InputDataInt(0, 8); Context.Map.System.ExecutionStateSource = InputDataInt(0, 9); Context.Map.System.LoopCount = InputDataInt(0, 10); Context.Map.System.LoopedAge = InputDataFloat(0, 10); Context.Map.System.NormalizedLoopAge = InputDataFloat(0, 11); Context.Map.Engine.DansingSmoke.NumParticles = InputDataInt(1, 0); Context.Map.Engine.DansingSmoke.SpawnCountScale = InputDataFloat(1, 0); Context.Map.Engine.Emitter.InstanceSeed = InputDataInt(1, 1); Context.Map.Engine.Emitter.TotalSpawnedParticles = InputDataInt(1, 2); Context.Map.Engine.Owner.ExecutionState = InputDataInt(1, 3); Context.Map.Engine.Owner.LODDistanceFraction = InputDataFloat(1, 1); Context.Map.Constants.SystemState.LoopDelay = Constants_SystemState_LoopDelay; Context.Map.Constants.SystemState.LoopDuration = Constants_SystemState_LoopDuration; Context.Map.Engine.DeltaTime = Engine_DeltaTime; Context.Map.Constants.DansingSmoke.EmitterState.LoopDuration = Constants_DansingSmoke_EmitterState_LoopDuration; Context.Map.Constants.DansingSmoke.EmitterState.LoopDelay = Constants_DansingSmoke_EmitterState_LoopDelay; Context.Map.Constants.DansingSmoke.SpawnRate.SpawnRate = Constants_DansingSmoke_SpawnRate_SpawnRate; Context.Map.Constants.DansingSmoke.SpawnRate.SpawnGroup = Constants_DansingSmoke_SpawnRate_SpawnGroup; Context.Map.Constants.DansingSmoke.SpawnRate.SpawnProbability = Constants_DansingSmoke_SpawnRate_SpawnProbability; Context.Map.Emitter.RandomSeed = Emitter_RandomSeed; ReadDataSets(Context); EnterStatScope(6 /**SystemUpdateScript_MapMain*/); Simulate(Context); ExitStatScope(/**SystemUpdateScript_MapMain*/); WriteDataSets(Context); { int TmpWriteIndex = OutputIndex(0, false, true); OutputDataFloat(0, 0, TmpWriteIndex, Context.Map.DansingSmoke.Age); OutputDataFloat(0, 1, TmpWriteIndex, Context.Map.DansingSmoke.CurrentLoopDuration); OutputDataInt(0, 0, TmpWriteIndex, Context.Map.DansingSmoke.ExecutionState); OutputDataInt(0, 1, TmpWriteIndex, Context.Map.DansingSmoke.ExecutionStateSource); OutputDataBool(0, 2, TmpWriteIndex, Context.Map.DansingSmoke.LocalSpace); OutputDataInt(0, 3, TmpWriteIndex, Context.Map.DansingSmoke.LoopCount); OutputDataFloat(0, 2, TmpWriteIndex, Context.Map.DansingSmoke.LoopedAge); OutputDataFloat(0, 3, TmpWriteIndex, Context.Map.DansingSmoke.NormalizedLoopAge); OutputDataFloat(0, 4, TmpWriteIndex, Context.Map.DansingSmoke.Scalability.DistanceFraction); OutputDataInt(0, 4, TmpWriteIndex, Context.Map.DansingSmoke.SpawnRate.SpawnOutputInfo.Count); OutputDataFloat(0, 5, TmpWriteIndex, Context.Map.DansingSmoke.SpawnRate.SpawnOutputInfo.InterpStartDt); OutputDataFloat(0, 6, TmpWriteIndex, Context.Map.DansingSmoke.SpawnRate.SpawnOutputInfo.IntervalDt); OutputDataInt(0, 5, TmpWriteIndex, Context.Map.DansingSmoke.SpawnRate.SpawnOutputInfo.SpawnGroup); OutputDataFloat(0, 7, TmpWriteIndex, Context.Map.DansingSmoke.SpawnRate.SpawnRemainder); OutputDataInt(0, 6, TmpWriteIndex, Context.Map.Emitter.RandomSeed); OutputDataFloat(0, 8, TmpWriteIndex, Context.Map.System.Age); OutputDataBool(0, 7, TmpWriteIndex, Context.Map.System.bCompleteOnInactive); OutputDataFloat(0, 9, TmpWriteIndex, Context.Map.System.CurrentLoopDuration); OutputDataInt(0, 8, TmpWriteIndex, Context.Map.System.ExecutionState); OutputDataInt(0, 9, TmpWriteIndex, Context.Map.System.ExecutionStateSource); OutputDataInt(0, 10, TmpWriteIndex, Context.Map.System.LoopCount); OutputDataFloat(0, 10, TmpWriteIndex, Context.Map.System.LoopedAge); OutputDataFloat(0, 11, TmpWriteIndex, Context.Map.System.NormalizedLoopAge); } ExitStatScope(/**SystemUpdateScript_Main*/); } 7 ------------------------------- Summary ------------------------------- Num Byte Code Ops: 141 Num Constants: 28 ------------------------------- Constant Table ------------------------------- 0 | Engine_DeltaTime 4 | Engine_InverseDeltaTime 8 | Engine_Time 12 | Engine_RealTime 16 | Engine_QualityLevel 20 | Engine_PaddingInt32_0 24 | Engine_PaddingInt32_1 28 | Engine_PaddingInt32_2 32 | Constants_SystemState_LoopDelay 36 | Constants_SystemState_LoopDuration 40 | Constants_DansingSmoke_EmitterState_LoopDuration 44 | Constants_DansingSmoke_EmitterState_LoopDelay 48 | Constants_DansingSmoke_SpawnRate_SpawnRate 52 | Constants_DansingSmoke_SpawnRate_SpawnGroup 56 | Constants_DansingSmoke_SpawnRate_SpawnProbability 60 | Emitter_RandomSeed 64 | 5 68 | 6 72 | 0 76 | 1 80 | 0.0166669991 84 | 0 88 | 2 92 | 3 96 | 1.00010002 100 | 4 104 | 1 108 | True ------------------------------- Byte Code (141 Ops) ------------------------------- 0 | enter_stat_scope(C[64]); 1 | [R][0] = InputDataFloat(0, 0); 2 | [R][1] = InputDataFloat(0, 1); 3 | [R][2] = InputDataInt(0, 0); 4 | [R][3] = InputDataInt(0, 1); 5 | [R][4] = InputDataInt(0, 2); 6 | [R][5] = InputDataInt(0, 3); 7 | [R][6] = InputDataFloat(0, 2); 8 | [R][7] = InputDataFloat(0, 7); 9 | [R][8] = InputDataFloat(0, 8); 10 | [R][9] = InputDataFloat(0, 9); 11 | [R][10] = InputDataInt(0, 8); 12 | [R][11] = InputDataInt(0, 9); 13 | [R][12] = InputDataInt(0, 10); 14 | [R][13] = InputDataFloat(0, 10); 15 | [R][14] = InputDataInt(1, 0); 16 | [R][15] = InputDataFloat(1, 0); 17 | [R][16] = InputDataInt(1, 3); 18 | [R][17] = InputDataFloat(1, 1); 19 | enter_stat_scope(C[68]); 20 | enter_stat_scope(C[72]); 21 | enter_stat_scope(C[76]); 22 | R[18] = max(C[36], C[80]); 23 | R[19] = cmpeq(R[8], C[84]); 24 | R[20] = select(R[19], R[18], R[9]); 25 | R[9] = add(C[0], R[13]); 26 | R[13] = div(R[9], R[20]); 27 | R[18] = f2i(R[13]); 28 | R[13] = maxi(R[18], C[72]); 29 | R[18] = i2f(R[13]); 30 | R[19] = mul(R[18], R[20]); 31 | R[18] = sub(R[9], R[19]); 32 | R[9] = addi(R[13], R[12]); 33 | R[12] = add(R[8], C[0]); 34 | R[8] = cmpgti(R[13], C[72]); 35 | R[13] = select(R[8], R[20], R[20]); 36 | R[19] = select(R[8], R[18], R[18]); 37 | R[8] = div(R[19], R[13]); 38 | R[18] = cmplei(R[11], C[72]); 39 | R[20] = select(R[18], C[72], R[10]); 40 | R[10] = select(R[18], C[72], R[11]); 41 | R[11] = cmpneqi(R[16], C[72]); 42 | R[18] = cmplei(R[10], C[88]); 43 | R[21] = logic_and(R[11], R[18]); 44 | R[11] = select(R[21], R[16], R[20]); 45 | R[16] = select(R[21], C[88], R[10]); 46 | exit_stat_scope(); 47 | enter_stat_scope(C[88]); 48 | enter_stat_scope(C[92]); 49 | R[10] = max(C[40], C[80]); 50 | R[18] = cmpeq(R[0], C[84]); 51 | R[20] = select(R[18], R[10], R[1]); 52 | R[1] = add(C[0], R[6]); 53 | R[6] = div(R[1], R[20]); 54 | R[10] = f2i(R[6]); 55 | R[6] = maxi(R[10], C[72]); 56 | R[10] = i2f(R[6]); 57 | R[18] = mul(R[10], R[20]); 58 | R[10] = sub(R[1], R[18]); 59 | R[1] = addi(R[6], R[5]); 60 | R[5] = add(R[0], C[0]); 61 | R[0] = cmpgti(R[6], C[72]); 62 | R[6] = select(R[0], R[20], R[20]); 63 | R[18] = select(R[0], R[10], R[10]); 64 | R[0] = div(R[18], R[6]); 65 | R[10] = clamp(R[17], C[84], C[96]); 66 | R[17] = cmpeqi(R[14], C[72]); 67 | R[14] = cmpeqi(R[16], C[72]); 68 | R[20] = cmpneqi(R[2], C[92]); 69 | R[21] = cmpneqi(R[2], C[100]); 70 | R[22] = logic_and(R[20], R[21]); 71 | R[20] = logic_and(R[14], R[22]); 72 | R[14] = cmplei(R[3], R[16]); 73 | R[21] = logic_and(R[20], R[14]); 74 | R[14] = select(R[21], R[11], R[2]); 75 | R[2] = select(R[21], R[16], R[3]); 76 | R[3] = cmpneqi(R[11], C[72]); 77 | R[20] = cmpeqi(R[16], C[88]); 78 | R[21] = logic_and(R[3], R[20]); 79 | R[3] = cmpneqi(R[14], C[92]); 80 | R[20] = cmpneqi(R[14], C[100]); 81 | R[22] = logic_and(R[3], R[20]); 82 | R[3] = logic_and(R[21], R[22]); 83 | R[20] = cmplei(R[2], C[76]); 84 | R[21] = logic_and(R[3], R[20]); 85 | R[3] = select(R[21], C[76], R[14]); 86 | R[14] = select(R[21], C[76], R[2]); 87 | R[2] = cmpneqi(R[3], C[72]); 88 | R[20] = cmpneqi(R[14], C[72]); 89 | R[21] = logic_and(R[2], R[20]); 90 | R[2] = logic_and(R[17], R[21]); 91 | R[17] = cmpneqi(R[3], C[92]); 92 | R[20] = cmpneqi(R[3], C[100]); 93 | R[21] = logic_and(R[17], R[20]); 94 | R[17] = logic_and(R[2], R[21]); 95 | R[2] = cmplei(R[14], C[92]); 96 | R[20] = logic_and(R[17], R[2]); 97 | R[2] = select(R[20], C[92], R[3]); 98 | R[3] = select(R[20], C[92], R[14]); 99 | exit_stat_scope(); 100 | enter_stat_scope(C[100]); 101 | R[14] = mul(C[48], R[15]); 102 | R[15] = rcp(R[14]); 103 | R[17] = sub(C[104], R[7]); 104 | R[20] = mul(R[15], R[17]); 105 | R[17] = cmpge(R[18], C[84]); 106 | R[21] = select(R[17], C[104], C[84]); 107 | R[17] = mul(R[14], R[21]); 108 | R[14] = mad(R[17], C[0], R[7]); 109 | R[7] = floor(R[14]); 110 | R[17] = f2i(R[7]); 111 | R[21] = sub(R[14], R[7]); 112 | exit_stat_scope(); 113 | exit_stat_scope(); 114 | exit_stat_scope(); 115 | exit_stat_scope(); 116 | [R][7] = AcquireIndex(0, [C][108]); 117 | OutputDataFloat(0, 0, [R][7], [R][5]); 118 | OutputDataFloat(0, 1, [R][7], [R][6]); 119 | OutputDataInt(0, 0, [R][7], [R][2]); 120 | OutputDataInt(0, 1, [R][7], [R][3]); 121 | OutputDataInt(0, 2, [R][7], [R][4]); 122 | OutputDataInt(0, 3, [R][7], [R][1]); 123 | OutputDataFloat(0, 2, [R][7], [R][18]); 124 | OutputDataFloat(0, 3, [R][7], [R][0]); 125 | OutputDataFloat(0, 4, [R][7], [R][10]); 126 | OutputDataInt(0, 4, [R][7], [R][17]); 127 | OutputDataFloat(0, 5, [R][7], [R][20]); 128 | OutputDataFloat(0, 6, [R][7], [R][15]); 129 | OutputDataInt(0, 5, [R][7], [C][52]); 130 | OutputDataFloat(0, 7, [R][7], [R][21]); 131 | OutputDataInt(0, 6, [R][7], [C][60]); 132 | OutputDataFloat(0, 8, [R][7], [R][12]); 133 | OutputDataInt(0, 7, [R][7], [C][108]); 134 | OutputDataFloat(0, 9, [R][7], [R][13]); 135 | OutputDataInt(0, 8, [R][7], [R][11]); 136 | OutputDataInt(0, 9, [R][7], [R][16]); 137 | OutputDataInt(0, 10, [R][7], [R][9]); 138 | OutputDataFloat(0, 10, [R][7], [R][19]); 139 | OutputDataFloat(0, 11, [R][7], [R][8]); 140 | exit_stat_scope(); ------------------------------- vQ678Xxkwu 8l{5Q:<YL8Lxkwu8s{5Q:<`58Lxkwu8s{5Q:<`5$8Lxkwu8s{5Q:<`58Lxkwu8s{5Q:<`5|8Lxkwu8s{5Q:<`58Lx kwu8s{5Q:<`58Lx$kwu8s{5Q:<`5Z8Lx kwu8s{5Q:<`58Lxkwu8s{5Q:<`58Lxkwu8s{5Q:<`58Lx%kwu8s{5Q:<`5]8Lxkwu8s{5Q:<`58Lx!kwu8s{5'Q:<`5D8Lx#kwu8s{5'Q:<`5Q8Lxnkwu8l{5Q:<YL8Lx"kwu8s{5'Q:<`5E8Lx$kwu8s{5'Q:<`5R8Lxkwu8s{5Q:<`5d8Lxkwu8s{5Q:<`5c8Lxkwu8s{5Q:<`5^8Lxkwu8s{5Q:<`5b8Lxkwu8l{5Q:<YL8Lxkwu8s{5Q:<`58Lxhkwu8l{5Q:<YL8Lxkwu8s{5Q:<`58Lxkwu8s{5&Q:<`5 8Lxkwu8l{5Q:<YL8Lx%kwu8s{5Q:<`5Y8Lxkwu8s{5Q:<`5)8Lxkwu8s{5Q:<`58Lxkwu8s{5Q:<`58Lxkwu8s{5Q:<`58Lxkwu8s{5Q:<`58Lx kwu8s{5Q:<`58Lxkwu8s{5Q:<`58Lxkwu8l{5Q:<YL8Lxkwu8s{5Q:<`58Pxkwu?8s{5Q:<`5Y8Lxkwu8s{5Q:<`58Lxkwu8s{5Q:<`58Lxkwu8s{5Q:<`58Lx kwu8s{5Q:<`58Lxkwu8s{5Q:<`538Lxkwu8s{5Q:<`58Lxkwu8s{5Q:<`58Lxkwu8s{5Q:<`518Lxkwu8s{5Q:<`5$8Lxkwu8s{5Q:<`528Lx'kwu8s{5Q:<`58Lxkwu8s{5Q:<`5Z8Lxkwu8s{5Q:<`58Lxkwu8s{5Q:<`58Lxkwu8s{5Q:<`58Lxkwu8s{5Q:<`58Lxlkwu8l{5Q:<YL8Lx,kwu8s{5Q:<`58Lxkwu8s{5Q:<`58Lxkwu8s{5Q:<`58Lxkwu8s{5Q:<`58Lxkwu8s{5Q:<`5~8Lx*kwu8s{5Q:<`58Lxkwu8s{5Q:<`58Lxkwu8s{5Q:<`58Lxkwu8s{5Q:<`58Lxkwu8s{5Q:<`58Lx+kwu8s{5Q:<`58Lxkwu8s{5Q:<`5e8Lxkwu8s{5Q:<`58Lxkwu8s{5Q:<`58Lxkwu8l{5Q:<YL8Lxkwu8l{5Q:<YL8Lxkwu8l{5Q:<YL8Lxkwu8l{5Q:<YL8Lx7kwu8l{5Q:<YL8Lxnkwu8l{5Q:<YL8Lxokwu8l{5Q:<YL8Lxkwu8s{5Q:<`58Lxkwu8s{5Q:<`5!8Lxkwu8s{5Q:<`58Lxkwu8s{5Q:<`58Lxkwu8l{5Q:<YL8Lx>kwu8s{5:Q:<`5T8Lxkwu8s{5Q:<`58Lxkwu8s{5&Q:<`58Pxpkwu8l{5Q:<YL8Lxkwu8{5Q:<`5YL8Lxkwu8s{5'Q:<`58Lxkwu8s{5Q:<`58Lx#kwu8s{5Q:<`598Lxkwu8s{5Q:<`58Pxmkwu8l{5Q:<YL8Lxkwu8s{5Q:<`58Pxkwu8{5Q:=`5YL8Pxkwu8{5Q:=`5YL8Pxkwu8{5Q:=`5YL8Lxkwu8s{5Q:<`58Lx kwu8s{5'Q:<`58Lxkwu8{5Q:=`5YL8Lx-kwu8s{5Q:<`58Lxkwu8s{5Q:<`58Lxkwu8s{5Q:<`58Lxikwu8l{5Q:<YL8Lxkwu8s{5Q:<`5l8Lxkwu8s{5Q:<`5l8Lxkwu8s{5Q:<`58Lx.kwu8s{5Q:<`58Lxkwu8s{5Q:<`58Lxkwu8s{5Q:<`58Lx"kwu8s{5Q:<`5/8Lxkwu8s{5Q:<`528Lxkwu8s{5Q:<`5(8Lx1kwu8s{5Q:<`58Lxkkwu8l{5Q:<YL8Lx!kwu8s{5Q:<`5.8Lxkwu8s{5Q:<`508Lx0kwu8s{5Q:<`58Lxkwu8s{5Q:<`58Lxkwu8s{5Q:<`58Xxkwu 8s{5Q:<`58Lxkwu8s{5Q:<`5\8Lxkwu8s{5Q:<`58Lxkwu8s{5Q:<`58Lx&kwu8s{5Q:<`5t8Lxkwu8s{5Q:<`58Lxkwu8s{5Q:<`58Lxkwu8s{5Q:<`58Lx(kwu8s{5Q:<`58Lxkwu8s{5Q:<`58Lxkwu8s{5Q:<`58Lxkwu8s{5Q:<`58Lxkwu8s{5Q:<`5d8Lx)kwu8s{5Q:<`58Lxkwu8s{5Q:<`58Lxkwu8s{5Q:<`58Lxkwu8s{5Q:<`58Lxkwu8s{5Q:<`58Lxkwu8s{5Q:<`58Lxkwu8s{5Q:<`58Lxkwu8s{5Q:<`58Lxkwu8s{5Q:<`5$8Lxkwu8s{5Q:<`5]8Lx kwu8s{5Q:<`5-8Lxkwu8s{5Q:<`58Lxkwu8s{5Q:<`58Lxkwu8s{5Q:<`5}8Lx2kwu8s{5Q:<`58Lx/kwu8s{5Q:<`58Lxkwu8s{5Q:<`58Lxkwu8s{5Q:<`58Lxkwu8s{5Q:<`58Lxkwu8s{5Q:<`5(8Lxkwu8{5Q:<`5+YL8Lxkwu8s{5Q:<`58Lxkwu8s{5Q:<`58Lxkwu8s{5Q:<`58Lxjkwu8l{5Q:<YL8Lxkwu8s{5Q:<`5v8Lx?kwu8s{5:Q:<`5U8Lxkwu8s{5Q:<`5T8Lxkwu8s{5Q:<`58Lxkwu8s{5Q:<`5U8Lxkwu8s{5Q:<`5d8Lxkwu8s{5Q:<`58Lxkwu8s{5Q:<`5c8Lxkwu8s{5Q:<`5^8Lxkwu8s{5Q:<`5b8Lxkwu8s{5Q:;`568Lxkwu8s{5Q:;`58Lxkwu8s{5Q:;`5l8Lxkwu8s{5Q:;`5l8Px kwu8s{5Q:;`58Xxkwu 8R{Q:;`58Pxkwu8s{5Q:;`58Lxkwu8s{5Q:<`5T8Lxkwu8s{5Q:<`58Lxkwu8s{5Q:<`58Lxkwu8s{5Q:<`58Lxkkwu8l{5Q:<YL8Lxkwu8s{5Q:<`58Lxkwu8s{5Q:<`5d8Lx)kwu8s{5Q:<`58Lxkwu8s{5Q:<`58Lxkwu8s{5Q:<`5}8Lxkwu8s{5Q:<`58Lxkwu8s{5Q:<`58Lxjkwu8l{5Q:<YL8Lxkwu8s{5Q:<`58Lxkwu8s{5Q:<`5|8Lx kwu8s{5Q:<`5-8Lxkwu8s{5Q:<`58Lxkwu8s{5Q:<`5$8Lxkwu8s{5Q:<`58Lxkwu8s{5Q:<`58Lx2kwu8s{5Q:<`58Lxhkwu8l{5Q:<YL8Lxkwu8s{5Q:<`58Lxkwu8s{5Q:<`58Lxkwu8s{5Q:<`558Lxkwu8s{5Q:<`58Lx;kwu8s{5:Q:<`5(8Lx=kwu8s{5:Q:<`58LxAkwu8s{5:Q:<`58Lx@kwu8s{5:Q:<`58LxBkwu8s{5:Q:<`58Lxokwu8l{5Q:<YL8Px<kwu8s{5:Q:<`5>8Lxkwu8s{5'Q:<`5T8Lxkwu8s{5'Q:<`58Lx%kwu8s{5Q:<`5Y8Lxkwu8s{5Q:<`5)8Lxkwu8s{5Q:<`58Lxkwu8s{5Q:<`58Lxkwu8s{5Q:<`58Lxkwu8s{5Q:<`58Lx kwu8s{5Q:<`58Lxkwu8s{5Q:<`58Lxkwu8s{5Q:<`58Pxkwu?8s{5Q:<`5Y8Lxkwu8l{5Q:<YL8Lxkwu8s{5Q:<`58Lxkwu8s{5Q:<`58Lxkwu8s{5Q:<`58Lx kwu8s{5Q:<`58Lxkwu8s{5Q:<`538Lxkwu8s{5Q:<`58Lxkwu8s{5Q:<`58Lxkwu8s{5Q:<`518Lxkwu8s{5Q:<`528Lx'kwu8s{5Q:<`58Pxmkwu8l{5Q:<YL8Lxkwu8s{5Q:<`5Z8Lxkwu8s{5Q:<`58Lxkwu8s{5Q:<`58Lxkwu8s{5Q:<`58Lxkwu8s{5Q:<`58Lxlkwu8l{5Q:<YL8Lx,kwu8s{5Q:<`58Lxkwu8s{5Q:<`58Lxkwu8s{5Q:<`58Lxkwu8s{5Q:<`5~8Lxkwu8s{5&Q:<`58Lx*kwu8s{5Q:<`58Lxkwu8s{5Q:<`58Lxkwu8s{5Q:<`58Lxkwu8s{5Q:<`58Lxkwu8s{5Q:<`58Lx+kwu8s{5Q:<`58Lxkwu8s{5Q:<`5e8Lxkwu8s{5Q:<`58Lxkwu8l{5Q:<YL8Lxkwu8l{5Q:<YL8Lxkwu8s{5Q:<`58Lxkwu8l{5Q:<YL8Lxkwu8l{5Q:<YL8Lxkwu8l{5Q:<YL8Lx>kwu8s{5:Q:<`5T8Lx?kwu8s{5:Q:<`5U8Lxkwu8s{5Q:<`58Lxkwu8s{5Q:<`5U8Lxkwu8s{5Q:<`5$8Lxnkwu8l{5Q:<YL8Lxkwu8s{5&Q:<`5 8Lxkwu8l{5Q:<YL8Lxkwu8s{5Q:<`5$8Lxkwu8s{5Q:<`58Lxkwu8s{5Q:<`58Lxkwu8s{5Q:<`58Lxkwu8s{5Q:<`5!8Lxkwu8s{5Q:<`58Lxkwu8s{5Q:<`58Lxkwu8l{5Q:<YL8Pxpkwu8l{5Q:<YL8Pxkwu8l{5Q:<YL8Pxkwu8l{5Q:<YL8Pxkwu8l{5Q:<YL8Lxkwu8s{5Q:<`58Lx kwu8s{5'Q:<`58Lxkwu8l{5Q:<YL8Lx-kwu8s{5Q:<`58Lxkwu8s{5Q:<`5(8Lxkwu8s{5Q:<`58Lxkwu8s{5Q:<`58Lxkwu8s{5Q:<`5l8Lxkwu8s{5Q:<`5l8Lx.kwu8s{5Q:<`58Lxkwu8s{5Q:<`58Lxkwu8s{5Q:<`58Lx"kwu8s{5Q:<`5/8Lxkwu8s{5Q:<`528Lx1kwu8s{5Q:<`58Lxkwu8s{5Q:<`58Lx!kwu8s{5Q:<`5.8Lxkwu8s{5Q:<`508Lx0kwu8s{5Q:<`58Lxkwu8s{5Q:<`58Lxkwu8s{5Q:<`58Lxkwu8s{5Q:<`58Lx/kwu8s{5Q:<`58Lxkwu8s{5Q:<`58Lxkwu8s{5Q:<`58Lx#kwu8s{5Q:<`598Lxkwu8s{5Q:<`58Lx&kwu8s{5Q:<`5t8Lx(kwu8s{5Q:<`58Lxkwu8s{5Q:<`58Lxkwu8s{5Q:<`58Lxkwu8s{5Q:<`58Lxkwu8s{5Q:<`58Lxkwu8s{5Q:<`5]8Lxkwu8s{5Q:<`58Lxkwu8s{5Q:<`58Lxkwu8s{5Q:<`58Lxkwu8s{5Q:<`58Lxkwu8s{5Q:<`5v8Lxkwu8s{5Q:<`58Lxkwu8s{5Q:<`5d8Lxkwu8s{5Q:<`5c8Lxkwu8s{5Q:<`5^8Lxkwu8s{5Q:<`5b8Lxkwu8s{5Q:<`58Lx kwu8s{5Q:<`58Lx$kwu8s{5Q:<`5Z8Lx kwu8s{5Q:<`58Lxkwu8s{5Q:<`58Lxkwu8s{5Q:<`58Lxkwu8s{5Q:<`58Lx%kwu8s{5Q:<`5]8Lxkwu8s{5Q:<`58Lx!kwu8s{5'Q:<`5D8Lx#kwu8s{5'Q:<`5Q8Lx"kwu8s{5'Q:<`5E8Lx$kwu8s{5'Q:<`5R8Lxkwu8s{5Q:<`5d8Lxkwu8s{5Q:<`5c8Lxkwu8s{5Q:<`58Lxkwu8s{5Q:<`5^8Lxkwu8s{5Q:<`5b8Lxkwu8l{5Q:<YL8Lxkwu8s{5Q:<`58Lxkwu8s{5Q:<`5(8Lxkwu8s{5Q:<`5\8Lxkwu8l{5Q:<YL8Lxkwu8s{5Q:<`58Lxkwu8s{5Q:<`58Lxikwu8l{5Q:<YL8v8Lxkwu8"y<Lm8"y<L8"y<L18"y<L38"y<L8"y<L8"y<L8"y<L8r0j<5Fq 5u7S%693749D1-4F52-E56F-10A5-2AA8823F28B5!434D5A0242029952BD1C5E9509C3E811AudioSpectrumVisV -\-88Fw8rTLE'_Glͅ$Ay5!GL45I]N^C89q8$B-E88xkwukwukwukwukwukwukwukwukwukwukwukwu;kwu<kwu=kwu>kwu?kwu@kwuAkwuBkwu-%88zavvuv8u_-v`-v-v-vs-vt-vavvuv8u_-v`-v-v-vs-vt-vavvuv8u_-v`-v-v-vs-vt-vavvuv8u_-v`-v-v-vs-vt-vavvuv8u_-v`-v-v-vs-vt-vavvuv8u_-v`-v-v-vs-vt-vavvuv8u_-v`-v-v-vs-vt-vavvuv8u_-v`-v-v-vs-vt-vavvuv8u_-v`-v-v-vs-vt-vavvuv8u_- v`- v- v - vs-vt-vavvuv8u_-v`-v-v-vs-vt-vavvuv8u_-v`-v-v-vs-vt-vavvuv8u_-v`-v-v-vs-vt-vav vuv8u_-v`-v-v-vs-vt-vav vuv8u_-v`-v-v-vs-vt-vav vuv8u_-v`-v-v-vs-vt-vav v uv8u_-v`-v-v-vs-vt-vav v uv8u_-v`-v-v-vs-vt-vav v uv8u_-v`-v-v-vs-vt-vav v uv8u_-v`-v-v-vs-vt-vev gv #8eB-88xkwukwu-188zavvuv8u_-v`-v-v-vs-vt-vavvuv8u_-v`-v-v-vs-vt-vgv{8 B- 88xkwukwukwukwukwukwu-) 88zavvuv8u_-v`-v-v-vs-vt-vavvuv8u_-v`-v-v-vs-vt-vavvuv8u_-v`-v-v-vs-vt-vavvuv8u_-v`-v-v-vs-vt-vavvuv8u_-v`-v-v-vs-vt-vavvuv8u_-v`-v-v-vs-vt-vevgv"-8"8]b-58b8\-588\|88]b-w8b8B\-w88B\z-m8z88]b-w8b8B\-w88B\W8Gw7&"NiagaraSystem /Game/Audio4.Audio4- 58Lxkwu8Lxkwu8Lxkwu8Lxkwu8Lxkwu8Lxkwu 8Lxkwu8"B-88x(kwulkwukwukwukwukwukwukwukwukwukwukwu kwu kwu0kwu2kwuykwukwu-88zavvuv8u_-v`-v-v-vs-vt-vavvuv8u_-v `-v-v-vs-vt-vavvuv8u_-v`-v-v-vs-vt-vavvuv8u_-v`-v-v-vs-vt-vav vuv8u_-v`-v-v-vs-vt-vav vuv8u_-v`-v-v-vs-vt-vav vuv8u_-v`-v-v-vs-vt-vav vuv8u_-v`-v-v-vs-vt-vavvuv8u_-v`-v-v-vs-vt-vavvuv8u_-v`-v-v-vs-vt-vavvuv8u_-v`-v-v-vs-vt-vavvuv8u_-v`-v-v-vs-vt-vavvuv8u_-v`-v-v-vs-vt-vavvuv8u_-v`-v-v-vs-vt-vav!vuv8u_-v`-v-v-vs-vt-vav"vuv8u_- v`- v-v-vs-vt-vav$vuv8u_-v`-v-v-vs-vt-vav$vuv8u_-v`-v-v-vs-vt-vx8RC45!sQ,-ev'gvfvRLQHJn8"B-88x(kwulkwukwukwukwukwukwukwukwukwukwukwu kwu kwu0kwu2kwuykwukwu-88zavvuv8u_-v`-v-v-vs-vt-vavvuv8u_-v `-v-v-vs-vt-vavvuv8u_-v`-v-v-vs-vt-vavvuv8u_-v`-v-v-vs-vt-vav vuv8u_-v`-v-v-vs-vt-vav vuv8u_-v`-v-v-vs-vt-vav vuv8u_-v`-v-v-vs-vt-vav vuv8u_-v`-v-v-vs-vt-vavvuv8u_-v`-v-v-vs-vt-vavvuv8u_-v`-v-v-vs-vt-vavvuv8u_-v`-v-v-vs-vt-vavvuv8u_-v`-v-v-vs-vt-vavvuv8u_-v`-v-v-vs-vt-vavvuv8u_-v`-v-v-vs-vt-vav!vuv8u_-v`-v-v-vs-vt-vav"vuv8u_- v`- v-v-vs-vt-vav$vuv8u_-v`-v-v-vs-vt-vav$vuv8u_-v`-v-v-vs-vt-vx8RC45msQ,-ev'gvfvRLQHI4F8xL8„zsCc?ILz88Uw8rV9$p@CڗNLf]Sr8rZh'Bg%.vL]z88-Uw8rRpiCLPNLf]Sr- ]r8r~[HML@vD3.vL7z8]*--x sb``p b``ba6 /у.!omdPax53k 5=^PIQ# V`Q&&6 %9q8U0a38$^rUkdkȬX `FLF O[]DlQAjQU%fOBfc 7ݹ0{wn_N X'JI? Gd,ᗣ*ɛ/hE6f^1'b5 mho2|p#gd>1|]tݗ_V}&;ߩG/>h0v#sku|9"S4ʿVsXb5AGsY@;Ȁ) bk,KRkE! e٭\|tޤ^.<7MUя+W[7㛦ÔS͛rEf̝3w1Gf^OoOZ?пi_SOQ;Gf͗?|'9r&9"/,`-x/,h< Ǜet(=ǰo%F~˖^oN<ʘI%ίz!OJ$qŧ7ݛod<}{)́;vN'EtIR[Fq ej [ E.Z8LD\P2f0$u|gdQ)~P]"64jD%|,DŽd@5 1XةGԾRMqzcp 0Mmԯt;l  Q`gt-s,a< zIvp`23KU0h_&С]kCҫp-+GR@"q7cjPE<&/:ڛAH.xu!;9H \M,|_}HX‚b}F ." 2864{ŀˁ@ =군_ SmH'3"dײbIL-onJN Xi:֭vE|ndZmGr="2Gi AGճ-bgSHb 2 s^ 1Xv"s SJ}zpPA_k 'ڈEVO5q!hM6/H5s0s/s6ْ”s{NcÌ,XZq3W+*#L/6`;}⁴r `ako !\&zHIc.G4JȜKX`fg vWyfA[GyKùc?%'z: TKXkI'ae9ʼn'ح+Gy 9M %AQEZ^E4)!/ָx4>uIOө^]X-dxx8D/F`'Bǰq rYp(vR `$݉G(@KC*' C528!y!B#m#i߬Ý舅e VJ&RcžhxHq~YiW[Sj3 2㐖r̫sK#Oly}?}1O^쏭ědOň sdOU*9ˡίi5\hN͗̿1Ta!g[+n-m Yll3š1U=ݴf(ܛ@m-\@- vtQh:\EG-ӧ}YeO-8;wKD~X#6 [}u[Plb8m)T9t/L҂ (sBP?E#fI;b#:Ӆy }},YV9ϏV3'A"NC?OV>W}֝7cDc$'@ O#.kW2%DyE4_<[*_t{.rĻlF<{aC/ 5ɤգ(8iv`CrKȇ4RTP#Zz=䆓ct3W&'DqY2ဈ* hjՁ\thባrb5 ;&K<΍|n"أTx&2|/it"N`#()c\Sgk q)8(YU!S'584#؏C#Ɔ"oΕ,NJ&9_$1EȂ)iǕPNxs1^27p=w"sbHecG%H:ϒbD&i]}T9*dfLTyMa?+3cNǑ5p/}4 M.f>.l$^>s;*יNzϼeep7gcXr– )V?Y¶ߙzTΓY@P.zHz+A\G q…Aw:Tc<3˶R'\$$TNឌQ{RIh,$V&\x*$3U?B^$6Znmh9~I6qGV[L+b* (BM>'g0G_4_¤ꌴs%VқL Tw\񊬂v0Щ0oSʤsϒavlb`6;h%q8)Bܦ#!U~ 'Gd'mi c ˸:MP$<[ Jn1 n:-xeq]^è@|7J.^'qm;=m#("!JtF)QZ8rkdeƥb3fb>ۡ^!?x]g;3w&Cf^;{[TZ MF gJ~,ߨbIwNP}  ]>sBG.k&.'񟺃"5d[OcDp4'^ Cd>/6ҹIO|@] O >C ɇ'I:۵$4 Onא)' 5EF[0{ڦHKD@ ^pGx{Vl/.= W6fZ=dweS} Ѧ_A"B29I8'j&ǤU)'E33vi.%S?bKWNG*i7SC^ڑRwzvߊ@}0&(]N*λKl\wAs_FZ`P3ͼ^62x.!H)Mvl5W;rpDH&C/ݒz15k$ӹkXsYc"V>|=kO=ۨMv-w;4fՙYt;@?ttn~#4 Cs7%s-:1 F}Q$ou҈H#k^^FLBSh!|tjm#3߹ P ;eEVA9s9K sf ݴJV91'\~Gy _"u;@4cwA!%.ݛԝHOޤH4RxA$"aA,(55p[Ⱦ^Nn!H-#%6}lr%F0ڞ ɎݞheRW, W0x02TuU/`үSlcW)srAO% xVS:d`3 B^S?E1O`W,'?xONڬ$/Pԧ܋l@x~C07?E@yVuh_iAV2/TiYܻM-du\/8"=s bR_o=21Ή+WCt~fcls{Y<^#lh,|o:RS5M-n'"|%e1o ?^>>%H>~x#CvY 9R '/ĥ'9ax.|c=]XSQ*yyE(zƯjɝ(d؈9?VXz+D.}S0/6L \Jǰ6QD^ٚ8>O2[@mR~Ј_T@uA ]4.~ 9v)$GrIqW|gSfaI,)5hh<2cO:Puj"%#fU)XlF ԊT4 ٮjUΜR[43\"F/f$~e}?Qguz::ȟ8u =y'W&Ή]BWuNyO ڧgjw՘ ̟87goMc^23_Oֵde/ÈמHfF"9"AxzP[w qRÀ5Y} 'dT;c'y?7k}<\<ߺ,x1XcxiYC_90䉋Eb |<QQE.$r 'OIݕ|EB#q8_utrÌ@-YŏN촱xX2{`cCуfx`}tU\grPPVUVʯ-Dvbj-Ii*f'#.0ҙ9(DǏ-,,q !h|D?5|e,|# ,I=@cmbZ3JR+].,rP5M{M`ԑC9rlۇv,.|+R-3ɮByylFqa< 2뭘չ2!=Wb>mOD`.)'9Rd8ܶ?^>/󄭼i?GBaNO}'}X}3hl}'cDw UX?|1) v7ΛjƗmH^ v76 fn '΃Oy?UC_ӏW wpWxo^bCnQj"@' @3,=RmO)Ꮄk;yU$ B6&IV).҆i:ߊU2te̓`= =H0J~%K\$,tm{b ɸ塲0NjTx+N$\n<3EpV!{ag!8D/%YX ' B$7>{xmiaw!83yLb>rPQKu37p܅liM*\Evt3hw\NݶmmH0~Łrj8G; ;*5A|/F ;c@_CO8 Jɝq0ʌ,8gL(j&! o*]-ב{+ Mx}чO?yan~c̼fYɂ˫=do|gŐgP7O98o_!&b?HB=$0OeZVq}űỌ'Eb8!#BJ:w0? %@l >ݫ I&p,FGn굋oR<Ъx pzu?m+`۫+LNA~dm.^VQ^%lxL$EF"DlO<؟&0Oڰm*k5*xQ$>d&h+3 ZsSd~S.aǠfjm<cjdg`64~Lǎ&gv([t˛:7/ӆqQ &>MG"oP۪=B42:HA֖4P*]sd<0_Tz%бk=-8,/;IwQup[ܖq)Ȟ-M p>@8g -Q3و7qlrᐣ;6_8&$&> MGw=`AFŁV".uXvA lg# c$2>88h`0X?#ǝ4 9ݼQ;S6U;N!ƒVKhw3,/ÆQRb&ǒ}`t(Nۭ+ /J8x/rBF\̘|H%%Oߺpv1p9e-@w60;.- >swR{c mpƖT{l'mb}hIU# :^ʚ-n5(-Z 1,eH?("~*V~S՚ݒ3W u y|X싟 #ҨAUPуT?/%sߑ#3h R#k#2>psdD/þU:i"#y\9hϜKy87H-~؀*E%#:,$TZ~mwՍ}~ 9Kı9K``ËLNπ@~UDsgϕ#ccAU|j7.j6bľĜlx0U;x BȦ)8q,sO7ȵ ]pnl.wdFD}ܡONpcQViuw}wU=O`B?7ňh§Y%c )*Ḧ́ig>\22J8F*mU;o4cuw`, -N,2xxSY*udhy$Kr.E۔mʵrmsyF ?kjpcTg4w.'ߺ/23DͿ&kuDƃt4RFt5> 1gSG/!cQ1| ry"<~>Pa \P uђud3|,EcHy6fRe{So'9sy!' d}p$-C)?T-X|ʞ,NQC·FesovD.ٟ'4tPS+=pl IDATjAbC6#`.X={%+ hI~%v= -9!{4iON~Ofd:^OF蔫x~˘`yQ})#hNo!ђ K%/pQk!6GwjEUD~աϑRvd*9Ch=ì} ND#>.y;5273[>{lJbyL[z榍{Г??wS;aF<7.{IC2'<ͧH9]{Y~>~KKNJ.O?_ _1C?B.+o9$5'FJH?}ȿ҈թ.0ZLܒ>qHT Bۗ 6`&Y~jHԃlR${}(pNb${,OjK>똓뜛;mNde<ǯ$ݍ&# / c ,ƹ"9m ĘEvnA6MbqkC)C]O>6<;8n~ASܷs}9$˒Q7c9x5cct0MK i@)Qmz ӱ=49fFirO?<"`2\iR@ V,#vw$;' ~ 1 tI_} {K #Īu;77&cQx^'Jh]ȩJ)hG};XBL_ 6/ֽqdIUeΑS2KGxʒ̕poc ܶr#~,^lCysR'zxOv[}0sk>͟2Y xxqY'|_s /5>!:M4fǃɹLs1ɃMr<-',ݺ# *@E6Up}ǵ)v[Sf#y%QmSt*hk\Ґ P/?!!˒}oT,UnH1@&.|sĝd0@Y}ٖk3bw/!(>ٻa">zˏA>xB>@Tʍ\ƛAnscR@"@qo9'іa3?(a? bp k{nliW8,8fnxQhm M_~b.﬑Zr÷sܳcGBd㶇 yF8Y٧#{` F%'à! nұ hQU쌏xm/(H'j7mtTٓO^IdZy@dD(9m$) Ϭ&|&.J,*"ZN–law hE&P] E2Urܱlʀa#Re&\X!#2q=DLQIh$)ҋBT,ɋ;!F{պ/VƸ:$b .<:دz2SKJXxN}?[θɞx*HQLlG3mK+-*fdCr#L@x~l8 qikAevܓo TrYI߱?C η똟"g Um##8y%2(ʋ%_ W,p<$^xU#1^f|UŎ:&z}ΓO߹Y CZѶɊ?I"pTϔ1 uFdK {nȠeI?RI遄n-6{$yNv3=ؐ'9c~ud:[&ohś=vnoГȹ@Dž%=/]Nss[L "U tɌ:^BDGP#DL=(KttC[}tJ/i۝Qt\JE󼀢n;nǿ:kKZPrt3WO@N}k1qU[pqQE sny@GD0XḾ!Uؘ&}K J,G?L#EKz4dB+>ޔn~,מu峡w3i8u1ǟhd(#k^X.MN!H^t)rYk=n`mqIE}C 3ôOj At@HYH$'%ָ%8PdHn{FO25KkXTۢt l-nҩm$-06(i9F"QgW)-rsRz zZݲފ-ǫ/b!i\ aoꓦ'; $:S8rύ!>'BRWJ {~dv9rQfsq<oa ^r0,k l|a?CNgM9cOgeV%d:vbr'&9\IxHꃟgPd%B+i5u0_Jyd`c3 C)iL"t xzgMu$E@ձI7dĮnS n򏈥hW ؄NMl g>XDUGgJ <5M/I% :ɵyx7:2H{sCFY&Uk# !]aseAb#=~0Pe m5b:D%]m:sbXDo EkŚч~e<٪|cD=`ObzζX6Ɣqo[. zG 7Dw0Tz|4z HJ]NkH4&e6(wΩRAgA;hJC>{0c;%pc~,4 'wlJ7n}@ODBl`˥}^g(V@ks?K{1y EF D=^䍹bE?? x@N;sP hLh#9Q :c%62ǝЭ^KA&_j҃k]&}#3޻̑>V% U~j i@eHUr{·I9r;Ce->ݾYg&_NАh|sh q3/nɔ\i$Jye>t/K)Fn*Ek?~vعx_w j6π"Caql˼z, |q0VPdJ\q4C tP6=cYb5=4`D##zI+`jU'GQ,O_Rg_1bFY A,#`XAq0)J.=#yʘm|VM\ E͊EɄc_N[8(]|f!36C͛>t^i5-OM)LB]\dn#W ڔf}'Iϑv]0v`P>Od,?dM~@E.X@<"<z*>OK' ;8'娘n"(p_IG7d#' <& lOԍ}&_h.~}k<pI>/&u4 IOMqv[6qyguKU`>~0}-/x==e|jbG1˖ o.>-`N dl)MfZY׍<ӗq}1P3_fj yˉ74%LNR.J>~ sބ(:>e$ǂXhܴ3X's.6HmCyH0L 9˪Nf~\u9+U,Hu-+{E$5 BG"^lU15PcMzggn#"gb x[7sd8 qw\ħvGdAŹ&Ipono4/ B˨_m 6~r!Sq1c_%\9>V.pwַ|%1I.'S|TK~ր`"a~nRghɶ''< ÖT⓾G4|B%Oc!Fǚ@;`A*v:}>%$n$5wCM-)%>;6JD-5js}(d ئL[B"IFMUa ffPv8(ھ +ĐҎ@U7DU ӦP~yGB˂LiJd,ᱱ#c h)TCsD2ČoL8O:󃡦!u+<NLjl&5g❂ "5?F"qӪ|hLyDg)a/ E=%/h%cS@L6!v cF|lʉچnYm`fNDB))lpn:r%zjos#i. SmQo y{]j }06TyNRSj79η|>@c:.6I5< 7} EghM('з9sw[+ =FHe! %h>yP+[] >'w; 1\&?-Q)F~ gg7| ^æM }o&OHyԜ#\e@JqBktEG>R,& $$!TmD毱зLu~?#.e\<@`䌆vm5ƙ3=!F9tc"\gGXDP'3 i^tgoEaל%bc]S'2r?4U!4~:.YGىs|#}xrjK2G c2r{"^`%rhy|3/~,y ZZë x-s5G X3VO<;oyy`˟H3 4I|D-{$YWŰJKX>P|0xQo\0P+77G8QmyPzoY .{?㻈:<|?ґZ* s_4"O KN  ^kI"{}Hm&Bi}W DXa䱏c"z3(+B>.v ,Tےa{PriSkPN F!_3n5㵖: Gq>'gev"CMqnً n1㭶~a{5Iosx:EF3{doXh1 Jm%5 ZvaO(:9O"ϲvڨpo fM-!bZs#=ڵ_ػ6K}DŽw0JLtoxPVtj3.'J/]SZyma1ci^|#]QQQq~*hV5Lpvc8n36śqC\ϼgT]N:c68NOiզ?_G9-Z_I.P|8?`Ot?X(Y$-\Gs#N\rh揩G}0 kJ~fGo$Aj uڍ`FD?!~ >pPA{38֡}Z\aAcxM%>FAFa՜jT#s#T*:}t(_G95$x JA:%YPqӣtqۆI1(Cb~;OAnsiN\,uB9bE~۝_~$Ot|&Vֲ ՝y :AݩŴ=|+͌yG]/vO|ls'pfm@]"= RS>UXɫO@~1%PNb|i#GEdQU'@q {DuFBM3vWǾ G6tP"q=̺`WxoH;/* ǶSk YĎǸ *\g#O~\nhTi}mI-pdL2K{$7wZL.aCV_ "s3kTg("w\8štJ3I\RAZDmZZ_& 5v3K is@'޳Nk$G,&+j5܎FO/۔c#N2fwOH{j=6dY6xh<{h8xi…tс*:Xk;jĐٵ=xGEy!ma ք4]gƞq#ʪUMz ֈ@x61$9q{з>,,td3gܑl6.ǭ\0e?/cݼDжnEs'>G~HA{0`X:m ۖuz:H[tMkTFR txws!=x'ޜ OI"Ʉ62~ 21q _|X] <4U,c3EXyw 79$>\_qb")h,UϿiInM#rWN;̔RB 6{B'ѴJc(&a&h4bu^YV X3* 1ЎER^zX>[΂)6}UN$PW 7(`RZ`dOZ<1qiLܽ44XD?#h" k;y~,{Hc,Tp"xqs2x=|oy+9iAn}{l=sw2Ե <'W`q<*]?9Ac`>1)=.h@K~ֺ:_Ɲ=!}X آϯp$Hg p(!Q Se--AL[2Z)P"π7M"H4D=K{f]USM#OHqNVZ$Wѧ]l_ ~&غ% U|:anSB7SR$OLd|qLݾ!^m~}ˎ^ɵ@a3@ wS vxw oFb\=.jS_Ju9wJ62A^gUCd}qDH;Y)A5ubs(v jғDXw>Eg89wC@k}Vn9)-L"F,a0̍;Q&XYH%Fyj7>ݨ^Ȓu}sBf^]9kĥ@1Lgaevk=4n9iD_A=qtj޻*ӠMO$ǓN<&g-Rh_tB:s$ֿ_ "Q 0,~䂅68"W졗q\L.5ǟG`'p') ]݀yp_:PGq|kǔЂ6NL}H".ޝY6|Bb!kMmp91p7QK I?RE3վ^ 3.`ZFȏxP5|N ʉRĹ\y`>뎿Lp!@[qzÅK}L羨I#x,%tnD8Zdu~FmOoz7})s*5Ku: fi0f )bw}B1+:=/Dִ+NW2D9;)%$԰Xϱ֢E.$^pbM`0)Kgw'fRra}O.zF .`+EP C,En+$DRzdUre QA=(AֹƬ)֘ƺqd;7̳q 㤖E'oɾd9dd#-9Ɲ;4N'U׃Ιt/7A`3sn3Qt,v_>} 7)coi<{7aƙ/ˀlG\lyz/j'覘չk m&\^ȟ/uW%@{ؘϕ+&CI`tp 44F/`O} q1iC6v3#H Olk7y|7` ]0i92y˹O!kXw+rt{ 99{}|r3zpPVr/&I#; Žʩyv7`~ּ!@ &zYoYr̉|t("SX$a!VB,"F$sň+KBb9V,݋IFv ܭ:d `"h+;It#1xy8Z.4h[SV `\G)NC/b]l:٧؝uArl|xNn  ˈA4oAx%tއ cpGrzGDb ;~G0#E@yKGS oOEO>@e6L(A;F6:LF&qT$Tg@ $mt( #FK(gA-}dt I.lOdB$ZNhr Ԗ-,>z7W{予F%S4p)'䳡 7y1O/l?gr( ίqr<PValKc7ƇW䤈,6Xt8q#jNI6m`C1> tTNݵ=4gt/Y;'ą]+ '*| p6tOg%#Fe2y"'gOǙCp*DOƨЈyF3e2tA/ENP5&)=ɘU:G[׊/#-?sGtbrG?d4fZi{[Qմ(wY3Vf7z1?k{lği=3'Z\h?s}9~>탎W_&oպP#;ϖn̩W4@]|?ѻW}9-b DRO/xj?Q4yMw9 X&:L8@Ⱥm:Ew#@1qB`_qTY&ސ oѬ,qǁ^ \Gi`w}d[^f#5F\9I+Op!Q<&>a53{ 26f=0+9+&"Kg">ChcţMSc![W:7 PqэI 0Q6r se:^Otsbm.]YX!DZy+b'=Xu#Vr^LW-G[5#;53tc&:4UwzKyI'ܸu^}80>2 b\0 ্\ * ~׈./h _(Fˌ9 ocwc|]?7$|xw(xo| 8#Ao҆Gr &m8Q''En1iV>$0`H,<2d/V5\Nގ31'HaKW{HU 괚`1KhN;„$ò"&zy""9=&wU-EI)  5-[~R/ū68 O݆_96qJuWÊëSԽ(}ߠd/,hnI!(u0$ߵYbʕQXqGWk@Cl>ѩ;g:PZlhJaƷp67]8,/HUgr >2ԑXr\.XWG m_q{);qǍ\*0(jٌKĭ/.ޥut]w9IVN7P'RT㺰Afo('ɝ4'U8}~$ȉ y|wۘ9q2l> ɡp.}XfܡS iS.[ gaIc ƱЅ189Qi`| 6׊`VF~W&"tHmrrd`i/,^.Lf>ʆ/c {RFxGqݺcǐ;8L/R`[S@߮lWG*]мʏZ$NNQh9\V2D*}4O̾AUq4t()82ҲBbˋh\&ZK7NNK8'8O(ӎY3r5SHxޯ JuSʜC$1ǟz̭]bS~asdƧ˅^r '.YsO @bjdY'XxH6CG@G4("{k}d.{q?E4XqQS)Y|e7#?J*&됞I/eiGK@aGGT&+ @zJA>yƖWIV,xɱTWL =|N|, TN/{AL)Z!7MucícHO>ЗH&bYE-#G%SDz 9 %i$JAR5!9uРC #_uѱяJ;ʢj"c  *m!^h]ORg!_)_ NN_f}7c3S 2'CMJP/~@FdF6U{, p#')4R|Sw#:zt^ N79 3DB4oE~dK/}jN>u#_<_%qh޸cn;Iᜓ&,'?Wݻߘe0qtS6c|∗bl?etg@Fj*lZ)u_,zz \ e%$'bcD؍3CzUm12=.[Č_f$b<V@̎튌|}sEM ӺdvdeIGJ_HSO2vx=/sKOmbXbjtX{ $Xk e9Lz#sా~Aס}0 g2l_M:|1d++^¹?z'F@J|GN)T]ذ'x>x|":q18?~x`wcBh<_}*x9e?9T|Wu};a?d67VXYmԛ!#?sRx\fNz5Z?{fwBt4!γ 8JL1C#I^xtGGy]yM4$?Ux(N\"'"%$6JC' p݉q-h E5l"SȌaŐ=}cdE8Cj3k>k&ajX7Q2Qo؋ca~j|Fap'*$0{Ay[(~Ɛc=j7]O`kHU8w~Ϲ h~1n6n&}(H_dvg2z}F>&& >DžƸ>wS3>g\[h/z9HϡC/xv]s xLsM/Γ9AcTe3~6PћՀGxŒd[^3<~|y10?c eV wc):my dڗx=Zqy@*7ުO)Wjjd_AL8;gd"ǝOq{!sͱþgn[{]_$%BOܿHƫ>15>ז=?8yh~bƍ/B5?|4?j1ZmHH+>KywUڱz7нngJ߃^^:\gg}A!4j穤]Zukϱ=Vw|Tֻ9=LjVdz9 g$T^~H||&T528)9ߢL"c~qmf->*E\boJ&>}g]ÉOi*2Ӭ˶V7)ʃ.ܼLx5|6yFC9hF[&'.q(bpj;.rQ|*ך>%Wd1ڸ wX1+(Gsl2Rǯ>UU?x! 7 #r>є8+ ZG&Jr\W끢k4>_xydk'KԋQZ~Zb#<,i+zF.7 >t/mʜ?Ķ΍s} n$I/ zk ؈<}7R#DG䱞EGcְ9#j}7>`xe  #m85 T|BL'wtq,Z>II dSwJ\~D.渞-K>N#bN`ȌP*p.'MR`WVIg(&f7#KC D t֝ 4 › \?^SܤL_dW5j?;WZ㋨m߶{kqh0o, tO)o:ίraHU|,C[ģ.Kϸ/r{P>=_O`=:DڱN|uQtYcyߟ}B uSFΕ> >- ?)?~ު˓.?"f@-junvRxr6[D4$Z}t3QH?LrEQNF= ;1d߂\6/ g<»^ہM]LPKyte@U #zsP>bX(y*7sA0t)`u 0rA^̕;<@]pK9>x{q9b&lC<&W,O$2A 7**ȟ_&3\.@!Vsg1]~ő[,՚1(W?/^|r~wd|𦬻^>$_Eol-!krp2?Ǿ}ֱׯ#VLC%0M)|GN o2F.5b"SS$]W{S5KTqlb s}cC]@煕[*E߲Nsx%2GX[8 bOl~N}o'0үW%D1!z=Ι\Iv]Bg,WYf wM/qG!w<9< 1vN^4؀mFZ{:d'$_OLuA>yq"f70[4愖tl{}#啋&ᄁn%w.?]|yֲ_s ?Ҹ`jCP)5E,-+׼aW~P}A:į{_i= ,rә(q+ a+_2 ,wHӋtr0g ZsV#>j/fWi"GI9FÜK-xiޛdgϞVl֑a6'<Ɂ;'gg[}OO~V>nibڇ#J=Z0C5?~Gizx_fMX){p=.Vmto㫫'듧!ɱWxv<_͟=Bfߩ\n豧ͳD45.,nx`0(// rIZ@LN"[:PsKFt\#jPJX)3w:@jWVN)t W T3rjb ;.Krp`2 tyX}GeP:/S0G&ҀV􄁞~5&"qz2^# Ow%XمgKΦQ}w 3"Wɦ:z^K 6O|KsŐ:92=i:LV|ssTGYuԧ5zߖ  Ɖ^?Fai<>J N^\zZ zҹ}O>ʣ oJ{#fv'@||m7%^XO߱|Yin= ;Zn,zhp_Yc_\q-qy<>Y|מr{O݇gGwÜ5ǧoI'9X6Cb.!sCdHA]4 ܀":W_M'HΦd.zCKo! Pk*uIb"9OghN荣́Ogw!)P}Nœ,7`pZẆX_/?梯fc(EKY,?~艅_J=,o h]>J=`~HO.N 2>Fe~LM>v#rN>~*4ﭴéZuV;Ss#YKxև=ߑgG EG~=o>`1¾P&{iߚX2읇#<zIaE#g#~_jsuѸ O6=5dt}]OL;9b .S0X;"^s)+]7k=d*ZdGObhAWڿy|ҺdR7!.u({IMyN>:s`鮄#3-r6NG+67HfԵ,͏2Ѷz |p.mJǵP}9 |D3t_{7Nd/TȘؕu.şݬ^ɧGƖ Qq v m¯24ĥgi$k4V/v׾`}n v/JĆEOː2^>]ثi;Gظ#,IIѨN=toBԟ - 52Z;W>~ڃ*,,`o9Od| ·E9I(+bu q }\a~Ԟt+:ܳqyz^lm1"&-v)tBzWnYYy`R{6ߑQ"}t/OfPMɉ=E3a{qP/0s:V<=Q8|Dy `f#:g(oԵH/ur7kQEͣzivEvWVnr{/{5|Ւ€Z;%<4TȽ'pG> :\v+&a$2tlZSV?*=UFQwBC/ :f$yf*i7vN v驔I;MʎNڤ3i퇆ʸm>u(.67<(6mr'k\Xlcw%#r}gQ‚s1ҡX:̳ت_+y8'el^b𔜚n|aZ}rCW <_W*k?oM.&TJic.jzC wgt~3iՙcs֖PB?Cy2M`" ;ep2@+p8xRBy,dyWYƌqwZO$<qcMvu0R?fnxNO{Џu 5aV>_WinO"WzerJ}"ɥ8ՙ_7O;.2/1N^Ǻ勛3ŝE1f:Yv!G#۾AiЫƽ O~G|<~?_я7]00oOs|?~C>6X(bW/.X6k4T?_7G2Gϣ}|a.gX~K\샷Qs8FswSUS/sճՍsO szLB&hII Op#D# a* SJEN٠d4 g%>oRG?*_h#Z'@j\յê'Ujeb za#pU"Vݩ(K8Y̧^=Һ򖐛kog^og^IdTb͡oNYexw9Ŏj!s!^_3hN|bz"py93yL0Kpd Ot(suj~WB-%д|@8;F*%y6*.__ї+Aq[12\]!| [orקWPNe91UnG]F΍wTѷ:䡙J;VC͸aqw'mN0;jZŀ<|^sBw?Nh";.\97~*L-2.qm-b{σNᮠߺ m 0ͳVbHdtdmqOSJ@yM2.md) eglgVqbcaC<ܮ9Rl8ENѻ˿+NѪu㩲>a妙^ -QPX=9|Ӯ$h(0Z{9'#E$#|T.@seޭg|:sʟI4u\9|i ^J3p3FEC `Mh!{/!;O b=݅ş\H|?~ڂSl݇u41 aㆬӆ3DS th>"u$$ 3 Ȃ[jgX*0⩁θѶ18NCSFFҏnGaD}Ζdd` 03nԏяC (I;깢 gӄwn?9CWS;E=ZG/^/z'G9?i_ğ?uwzd{Q5=ŝ?.2 7"|" :1[726 1lw+J,xylS}CA;@t_[ce[̱L9'LTT/6bÊ<>E. HN@5k(ý\4p^zd1DB[3+B5I?>CYs6ӬԩY934.~`Wi=>bGfʧV۟7s} '<{Dd\֐7jtv̹e2i9bp=c8,UUPr7_a7>6ldFs-xGy~95'۬ϯ|6Ts8 g_=w;0{٘y)'.,3kv)}К&'9?`'leesl? r|݈u|/R؛Cd1T8t>h&9>J/ޜնyh+I/CIP*f~;>*\9(6$mȱwSM݅u^p B}s-oyZC.ϙ_qqĤz|Ÿ?A\!ܩԦjxppC/B z& BȘG7GE SP[GX{SDK&?E0Q% <|Hoq~%~'>P*@tX]"3 *j ?F/Ea\ҨtC}~ԛ>m'Oër-Tfk.atvoO{yl+pyMd=/-F%jl~KZ맳KKO||kq9w0ysFu 6g܍͹ CPq0|-y7z1~?'y[WT}ׯ3sf|<-ř?>Bc~gZ>'->Co6FE˟򻅳_ `¿W.Fkf-ϕa(#Kx `]ytU {ğ.ݍ B mBfwFa z}ɒaB|Zuİpc.:mZx^ۡ[ڱ?Nx3 ibWyXߙ8VS}iҮ~s9b͗:tC:]tCPQ#;Ir؛s q?z+įq,gyȊl ᡖh'ҕScIJ|B"cr{yT!z'xJ%.}M}xgV:ao%fr7"3򏝗?'ҾZ`>Ώ}ߔ3V€0bxE_]|ߋ@=|?~>tGg͆}p {xllxq4|hn)v'>,_'?Ӱ|筀nZ(@k( +\8ZvXDL#pثµ< LOq@#J~-.SKѕERruۻ49ߜ*c &,_#1N.nݜ8qģY|Мrm=f}M gnF;}aܤSSOgNoTmaտ :c׷Jn>k]-LE~Z>Fܢi<s}c=aTG-S=68n;>YTgvqx+Gѡ(" B3rpN׮ǁüs#-9nsO_\%p?B/⫊9‘uJSonUݎiwqG3H&?Zg,p]4>{ϩ$cd揳M{svxsL}ƻ=dCCGE{d=@6ȉEt{^/yZ~4FU֣v[S|'͗}´Fn}+nF:a.<V>X~d0"w'5v8wnqDǟ{0Vшv/T-u X r#"NqI$Dl9fdBHii+d;*thZ2Uң;`]N24[5խM:%i|G|:穱We mm"5(}1? S||"C +uU~vm1;ww܍R/ϑS5~LJLķn^?ί3MxhTֿ:R/UX'qNO Dзsgz*n j-C}' ׏6mzlwɗ7_8ߞdԶzG|`0_1\L ?ͣvW9 _ i@ hqΊS˓a>_=CntB/FO:h ME <5u~)&SmTCQkW@;sƹwg፹POMEgC,C+IU0ˀ._E&בHki~!f}h_0ciI>@vKk_PyOGfb1Sjyyi@{ix830tO WhKjw};*[/AVoi-vZb[Kz*g>Oxo_lP)MX3W.vVט2~2IR.N s~߸:C.q5dbHߏ*m:w`Bp՝q7l}_o[Iy\qz|;i} 0Jñq'sv?9>?g9oǰ!6/=Ѕy~g#Ez/c D1MaSJ]=yB)o$ZO챸G.S7Li5T:Tn9q܍lES&wꅯ ꧤ"PFS];n|,lU{a4H_BY3٘S:\^ ùLRBne"26F,2t<ȇu1wr;/0;}x_M+[?9q\(z`IJ'w>A%ZRk ͎βso@4^O+.;hA9tBKoћ> {vBm6D7ń51߅)uc<jZY_\Z o_[ӸIұ^Ί4||x|gZDhC ;Op矴|am9!rĶri5^SB`|2K&o?G|᧿w֑߽'o͂y&De 9åѿflw|GAN~.\ +|EI͏9/rw4`bo~66@ )e}\М2)"ݛ~jǍ݇>x) JB=$22Sچ^xs(SᕗG&~P6!v+6y%Iw=wgyDɊ!tMW<4:VS%MDwc; (yZ=U4E_7@Qڪ|]z0bS*t~9ˁ PRt"f(٘mOg[=VW|Tϡٛ|"T6樯ןflͩE;X ,'x뵸 1t~0 jJ}r(Zå7̻>؉Vk C\Z|iB\ôӇ-l:wH]i{^t4'瀜7OO+v`)SQ8: i~Z=J"47o!?87t7jenT4GGӺyK ]# Z:A9; j+`>)mX{>g߰r,sS94w^ۀ ?ۼWM~P0.\4=ƻ s)x>Ngsϝ~b7nA@~O`,3}(b?ުu3:b|s20FM&Z1Ђi<M (e IDAT\sgEuCY Rd9p-OjmJ@^&l}|LӞorrGq.7a!|(RAשN6藟QZDa i'6뛕jrtqa XO3&8Д\W> MKφL/^ J8Sr ٫Mo Y2}1v^eB]9#}֫>Wo@ SN--Ce7*6[s-1U}4-ܖ%pIޝb=^9!M ̫8cA, k0֧h[ZGh<ƾo/ȍ:i'?dA#$/}砞+# םHHYID1:-pqx 0m܅ͱ˽f3C|>y?b7Ι;?js\4?:FƧ&Fy%Y _cgbTYozkCWrc5i<#a1֗kL|.& 6^ҫv 5%`.Z1yh|]w1'Se3r=(1TyIhe0Ί+@Sg5*é/_'nMbb_618_}k*0đ ( _U3cJ\<2^5k7oG>3κ8Kr8dKY%b3'L=9ѧVZ7؏i| 7O %#ZZ?7ral'#=ǣ#煹!m?Yʻ>-BQۏG./g0o<uKKDA|cBX'vUsdds7eN?Cz77gy;[Bw66j6ߺjsZݽ^7Λ/S\Wΰ1XB4oSy"ۓGv'#þDߦQ+]Mv=#q Ň|(+ZDM*9vRyܑ3˂"`ZĀ T;%8UkΑO^W3ئᏧ\Qrs‰7ebLǰ<.F2x.+x $'_$+GJZCC[H}C->{AM|ww7?S۵-#梊9ZrU D\7%ɛGcioaӍiVKϜlCo*s0הsC_D#^ky(-h3 69:>ax5׶c{M9iTIػrz]XV}eŢ1:o+ZD+8$rXZrwr<ӆq3Hư?副<[n|YNN p EJ1*%4u>h쐽Z&tC4N`)^u ޹_=@A˯?`S6N/#佽7~.(~3Zᇺ֮׿y;D{>՜I8z5Ō$~\FO'})挥ԽuI*PgPߓ12%,Жٖ޹l/`p>{QpJ3]F| -=Vw1to ;:1yWgk)Χ6 95-wlЏ7_J7qy"4~bg_ l 4y&bAyŠF' Ch,3sHgz66Rm>ƻGʻDqf%4$K/ RJף_{`Lm:\_>?ӫQLPҧ#?Yyڛt,mQV|q_hC (DHW)sp;ݲUr8ykYF%̴W?aN|!}qOl܀_;cC{c·|}ՙx?ίոe6JŚ'yɶ9~3Æ+;{?‰DӉ@~{"";#/ MƕuSPA S3QyYz,Z}tOdqpS(ssWithGg<ʞ>qyz3$Tn{$Uά4X ٠!<bIf Φ6J_cr39K>B^o?̛Ob]J@ĆO_ U3_2'Dmh'bQ юpk옪=>?z2;9l@ycK<ʗ($1vMeKE=էߎA#A"s S;͇JJZ(Ke {4m+Α{CXnN9އ&f;ɣQv&lLv_1X<Y_nsG}6;l)6mPi bPM`hku\0;_j)o/k3UmdrA>}/s\ Od {&1Λw=~{ Za d >)}a<vo#~řF}XYr0xq2)rl:6(p$KMy?03 ژICu-ή,"{)⃚6I_r OVFl5$V*>jʝ2xx|P4b>&ebl<4&|uynVˇMHC&;KaJ`byJ⥯ ͇?ߩ~k褕;xmN0~|JsiȧFVVahԍW*g '7OŒJmP_~jQ۴%Cha"dijk̸9_kkZl%`khGS_8YԒww!Eq@(L0ݜo2dt,?z֨!iߍ - }xlsx\nMGMɫI(~5.}w#g{Mw^>*gu`E0uӻ~9q=_i^8ec:;^88dw݇\[M\$- d̙l_+9d&?ʞT+qq=*nGx5ct9Y 5\spC,42NqG/9J<|h ʜ\։&+)~6 T3nKdtST^*ۀ0Z7V78Qsw>o} A(@#±-W ]:Дy% ?iΙx_=i8|VkbFi9QHXR몿b?ϣ\$NxُiXu{|ac7ǔ[oS/ere`h]g(ɼf$Ѿ++u?Lqw>`XW}`?|pfw?)zOAm+uVlυ؉?#jwao~g"}^Poǃ@V? uQOi:yj ;J[Q)L~ g8F16 `t2A@bB%8l(M3:'lbdS#S qK9p>3(#^t2w^]k 䯤81} YtuT⢙2Bq 6cgd.ل\ο"Wɒ1uO|1RE 3Fo\uа)5sNᶤ1gcglˣ񚼒ȪoeQ)x!hD9j0](DA]^t-ȯ [9υԜ 9~ u,gZ(V7+gq9~ݣXkNwЎX191Y-^\C~[w]Ytƙr~mا10BbF]Y+#Ogs]˽ Fg~l>6X8oΉ7K'o`'7ؠMG{6g0Xs{,j H|;eCuZ_@aaGұaIWl83I#t]xtZ &cO^J|ur**ReD={I"4 yo>ONX֙ ސS.tȋB'wrpwr1蕥{Vk y:r"oUoOĎOJ';'?͔'F;t[͎%[4r^rQZ=d1/ =Ck=dDFdR7`zֹl3يİoH&䰸Gf-|* '|#NP^>o'r׮Y>NcSֻ.*oɼ\('Źo*NW|6:N>aupN/6H7Ƨd Q]6aڄ93Qn\+4PL}fjݴOn:`#bg?sgsL?sٔ'.qu~3Q0w/PSoO"߮sq0)~]oqCge<]7~S&h:>&(j+.g%.}/f=Yfž+`ѩ:2>c-=CD%Fu'wi?;z6y:5rQ_&Vba^Fɇ_X 1}SZDII|EzFt,Ar,@i5ɐ?;0Т/ bPFh zͮ4֯ȏ "-T $P%cH4)S=Ξ6Y9‘f*ӦkgiΛ^ɧTb;;Gbn:#p [Q5AZ0ur*6v4ɓ&GƇ^>׽Zv1 a$9t~ǛRHƲ.]=B Q/A=ڈb<9hS;7:gA%o?Krɑ~ʀg;O]kh` ?0O*o{nl9;ov Xyo6\5 osaC~^8zD…>[涋V49b߅ƽ}>dSy-SM7 )& =n uGb 5AAz7vԎ3 $՗;M#{oY|@9o[=>KQB ;RT_*B`hiQ8' 9L.D& Y>'k$ I iFPwhRr|4|ÌoΧ"+E\./;ȿ`wLˍGS]O\W2ӻkC~`?O uZxs P.ka}zס?ۏoѝ{(^sGxy.kW?7eu.ǣ7ylf:ZFM]:my'qȧW K&ޮ\V6FTtzy|9k34/ ?b}UQ[\G Qlo]_{ƦRΏ8@Rwώk+N%˴./eDhCy>+od3nP{n7=wt廓a>ys7nO$變0<#=OFI9wCx$> yৈ?E{O#bmdž|V@> %?r?FS@g&T7JK.BM))uWoe[a^͗\߉PiO|wI6ghh1ġ1ؔ9ßC),h^C~@Wdfqg,]LTYvb?i'E׍YB:h^p>/2Y?E~wqX<9PCV_Vb7^|hq!-&$=fgͦQ>=bs~AOـgsS}dN~m1{–n=pwݱ܍/*n~O'0'iDq?9P>8m07 Z~r1Vؑ  邉B T+H|LJDs#@ܿ@EUuJN YsM+IiRC]هHV IDAT3EgN7xV=.pCo:v4V@>~Vڛv5C o~L3m;1%pEne%Z/v*xReh^GiGgΏNپF| >=RM-uqƆTq=Sa9-1C:aGܴSwFHK 'J Vs?y9ؕ"nh\W~.Or#w d/ROO3;{{J13_R0G3?>x.+5g<.a\|_7isѓ)|tWDOF !6wA! bq06'OC:LLC.|Ψ h%$ 5lj/OFt@ 031 _S]u-4`4ۉhj.qD:ћC]CLJ4"Q+؍gcB7Gob˙4 ~ csVURY~}H\VȹVU55CZeq:j3Ŧm%ԁ#+|: $>9 Xhm< r"5Wv4јC안X֏'zsh(g9ZC|?͚t~!s@:!.6I.DWYknVUnP3g'{~_soa+P}ИUz*9mC !a˂Cf=뇻]yƟfϚ6]Uw6'&bן~!=sy[6}̳r?0ы&;>;n 20yHuA3wwv|jO ؅?Ğ` ؔzrˀƿ8HԟtT6k} (ʣef%iu*C]ĐutZ c-:|LZkAܡ筻4JB=T#^@/N,!^n=.Tr+Jxwt1? #J<PꤧF6/r_+UñkF=+i>q&ӎ@7Nͳ3w$YzFy[2xs珷օ(֔S>v~A4^:X\(th4s:~xL19LDxU$N~}{ dd;:ߓ^[p" XŎÔNQ} xCxelϡI^xI{̒V߾, x!4NM[xt1mc%=;%9W?6W&ۮ+9g\cʩRWvqlpZ _7kiRZN0Mgu!ŦK7n(2ܓv_Ghxz&fёJ~N6я-gn({<ϵC:l خ8ӹYl^NO5!??JQ_y yZGl$ g4:K⤲ $Lj0L}j@=Myje3$kGkĚXO& O[XbtJGႬGg)")16I牗R*e\cGdѱQ#O '31Y%s⾸)[xo,TML7&HvϮ.իc]FGҍww1/ݼ;:|/')`b#,X-yqaхY Y:-,64Xtw=y̓+|wrm$;g>V1 S.6y CVlڲ!p+ cK FG)"vΜc:2xJ҅679~ :$B ?T^j9[j8?B!tB9:Jy;3R+(;(Oé`/gdNǽW.䪞a#m^rN}K"26AFR94*ukWڥoJ?KPeP2s(e,rҨ56\xtr9{>"SܩyZwn NTV\+T tT6}FpOV坤lFA7O٠zcLasw2oH٢1sÕ{.rn,OYp-S΁xK_<OSYr@H[æl2뀯QX%[c?yP6`V+gߖzwρyxLZ))`6 FҴp0LՓWDNp0:B,pdݻ'٩xr$92koAI$ Хa8gv,!R $Iw{y;KN,TbCʙ%-(>c[mA[sN,2pJqr|%9::g\ umvz!vQV׶^аa6'LbP\ t(~NoS]{S-nE۠ 5TXX{[3Tbv|N~6|WZVv8g ~ᾓ4LlZI}|3 =p+#W֗9 168phh }Ŗhfp5=si"#%P.D-9-bGx><П5S?ԁGY"tW/ζu7[}?jo D_gG66ipq/sߣ =;0k%A?.;|S49Jۘ-? dӵ0vv= /.Ks/&CO;"p||^^zV" 3il"+/[}xzk83 OfgM}8 Rq//> ]> zYYTם[ W9kKGl v,ekuj8sLJdX[?ć,hy0 E4O=ٚs+!Tع -_dE[ #|CO?=_;g<C7ŚMG̤&?R[ƭ $UkEtWs%.~So]49F|"X)U9rTW9os dΊזJyNjH.d_mV -nxÏ[QTY|8R>u|hpCXC_d#? h*wTG?`1s`69X~<ߦe1Peѳ 1 ?;zeaug\wS,didom c\2LЭcf}|.2>\3)RGPUr *w" ]bo斿'6Lk( 5Ԅo+iKQ|4Px-xʙ FmI݇tl6_(/ OmH}Cfû hMJ>/DJ?O+'?%$_ɏ|Q'ƮʳY >)E{K.Yt x7ٜiН+o$f68>MJV;i~7/}߾OxI_ԻZi^VoṱuvT}^T$pQj\̵*P;Dd|j)|ʏsW(u;]$є$哳 *,c&O8r~C?D\& B{ n1s%kXL߼oe<| S8E| W9~ϟ]XL=bf? sH]A/;Jb+\GF뀖~o z̆>wĻINfh|X.`KQ?wDm P_2%X۾ihr |sα:GUc%أΞyALD8C*R 蛪)J,&M(<3Z!":<^ }hqSpY O&KT_V|_g /?iX꡹ֱTwd/6W -1P3ڀ߄=i>8{&{@M"߀`ͳSτ2T}0eq{_)$]BĖ*^I@'m"(`G7L =MpNO־^Ѓ%GßE[,>cbc9KޣhM h@"csDG++*;/Lʭdž0_|ն巀 XN21kj[ׯF]Zg&HNHQhφKa&sx4M'7W[`s=_s^!67Y:؊->d3و\S6EEx`w9賀;A {aM/3$9 ^_e/@GGy9pbFGY M\?:Ja9EIt#MS{M9g T~xdjQ:1Vk_A(m"ecn;ПqRzfGd ;! vhk,v|~rQ-ZI$#NÝO蔅6IBe_qtX%勏r-y2.Dn\'/)#):O0A7M7*u ͓V=wW?GjՕ'1LXOG$d^ZlFUT{F30W%iC{g迲+'Z)L5\Osm=_-EWMlxuWC~kizZ ^zE1WJC4o=~ FRd|gI}|dU4r˚#O<# D.wC$?BgmPmAx*"-;ۓpmX>2$ȗX6~_Qͦ<فV=Η\5xf'gA|,ǞYOH~Dvˇ!ɖ]jANWr<~G:#[__+7%GVzf[-~^#2<[9WA ÍeWϟ8sG-[\/ufl߽`GR_-ˀmF<5/1fH`~+~ h?bsR}}as^<>]% p,b̗g.?ZǛÅv;9D,=Y`)jSLo `DJ/U;##Y_ŞKqOt/> J>5ϱ_CmHnIa>y ¨sX]Mǯ; YTtt.2>ϺvԶWlqwv7 &KreCL1426R>&!72׭{;9U3_F2Shvr<"26ÖzI՛qxt]XGǘ1*״!-ȫY# ?}ȿp\R"ݗ*/[Qʩ'I ލ'yܕ>lAnLTϯL{s4~ҏ B=}7Z~yS~I;7M\jOrvah6>\[xKS+Tm2g,v~\έ Bn7>z:8mm5Z{-c&"V]7l:{)3nܔ~qѮwho==^; +/KA['lQWz}:^棿4|c䧅''ծ^z>?:-Bd=:]_ʣv|BYW) 2gMtj-3-ǀoNzn_#_;IrmT;A&՜>QY;T+ނXL^h;Z=oO[ծd*n¶QS?JH'xl]1i'úUL"GxCR|.<;oX,Xm[NGt*VF 1 '^'bD-'ب,I_RFj?` lV?nRj.Yom+noW.- } fy#dm'Ʊxzz6fH[d=X.br?nMfB}x-6DlEƶME_ b&ĵu BCcflFp{Esce<`oU4Z xG6. []_3z\|Y? z6<5~A?do>=%8q;]&L~UóIhu< S@ Ͼ2ETv)T6/6j 郓iko}&F8e61!ɪ,DEflϦY%͇GpzcǮGndbuFE6ؿk/}Ih^a 9h Ȩ|i^%4UZ hcR3V }CZdCr7zӣ:#8$Vo 5c냳R^}+!D]o_h_H.;UHIR?@gQ{B~Aia(ANGWe{~OK[6|4w-m}Cӵ j t LX __j2 +GGF&ukM~n\Q3nS_jDI>ud3cץb\Q&jrzh@I6 ణ9gdul!]вjqLtT$uʕL =v?avrc#5!Vh{hZ&6_ʿM` 4GKJ[ "Y;R.) h  B VP9ǔqoL}SkTcsϾ.rtӀb1wX- H)"HRm:_q4oTIε^)C\86DqXD?uxc,`RcNt H{G[s|9P3 WiNJ&N]9}y4Ioב4 Ji`*5I?jx}jX,]1>vE3׆?BbWܿ8ˊ}NE[ av\a+ɦ[`mcG -1 O"9Kibz d {EnsĥƗ~ P19v Q#.n9Ŝf.4%0D~w* 390i6`19׮x.k 3.6gW;%*ai$\4U%X@4 \"|+_8X`h9xmmc+M[\}ɻ2]E ~ҧh 9kO&W7ǖbЄ7r,'Xۇ hWU-mL_m`~0,_'7<˹tN?''i_r*;y 2EPLb};*E/QO~]xغ1G">KNHgj-ّ8q8ݢr*;ͧMDn%Ky AP[c>)$8Ia6IG1íPI-,g04&OѬ]fr7?jg/l] )rdo+nD_$W<'WnzuTxTяb2'4W~l%ыV==8;:نu^.d]o  <$$2)-Aܝ@mF*+xx+)lcRTJLU;'޾^ڽnKS?Y**}JE~x{/—]E-&0$v^#RqfEG@rv?~< bS?sڻ@7܍w% %%t59"g>/ѡ 6)K;@6.o> pK6G ;:oplZ̏)w=- ]'rauupc5M76Zg:PF)LUJ + P3J~ 89ÿ҅<;yղFdk"D. v]w+#W+&ِkNkWlZ_ a̯5b;"?1peںlu/>6Y!pxȮ`'EH)(/RT:#[,OD~}^yrlpU(ɫ 7Gf9%]kKgӵ[qmmȧeHG[UhZ~sc m;L޻}ԷL Ҵ6J?erK~0[_hGacFSrTLywe<co.VO md Cݛ䮦!Z/~#cKGvi?:6ʨ-XS}Cs{ ~tկڈh)==ww;ַm2nǛN瓴ChcsJ{lnN4NA?銇,B #ZcC؁1В+JWp" W#j}yŤԻ@%; ufw!4Y$= FP\H'_7V~5<)lG_uzHSys{䅨rɨ;^fW~E}QTOuYa?2l[lT{NB=b27aC0t[ _M9ti^=߾U9+}__X&?l4x6nne>1ި;ݵ.K—^Co?~?Cmg_[ĭR2 (kI6"u4c=i_ >MǿFsKپ =&c1ao/ǢY-_Oyszjin'L]G+Ej(coy/uB uiib+{׸[+AئOSk@Ka5}ccisZvmG##pd4Eb5DcpނQxd.zc= ZC?'V&E">c=Be2?9b\Mڋ&:2ÐTyϠqӶYۊY|.&^kv/u=-Y!f{ȊGh{?důqP<&{k 2n je8%a~V4|ȱ|v3x-"ŝ/j=Y k=Dz)symptUY!#k9=ĭ%U.Zm~Ydjld|7ceYDAbh欽D~&.Xu[ƃ5Q?1[h (,mJ&{A[]7 )/gLzFߦ E['wW]_2^m,rcbɴ >\=/eEyRdqpP\Wn|{@t/cˍzzs/Yɏ n]#=|  )vSF)&J8yJOCu`gj㫳zkJ}KfЭQ&v؋ opx9tȖB}iaG"yb寭I9MIΎح3b)e1 /c)k]x6S.Ӵj?['gCYn xԋ*rby8.j!Yl+RٱtJ&VĨ6>?HE[ߊ)~<%pTgɰzrGQ'xtLN(g Է :39鉪cOFk k3$gюY_%#sIol6o)gK(Wv);.^$hJ8~>2CFUU)WݏP'Tq9Б l 3zJI.n/^Ѝ[ck[s%9oݓVf.t73Tft+AF,ƱH,Ni.c9?qxpsT?dԾQK";L,mVd8Zt`ǙYI')l2'xWpuO"6qKc?y50Id9xyW~FHCl>=`*Tj%ӠV>edt 6qvm~q?ݳ(Mzpwߩ8[ux 7!g Mf%< AGoA}xw#ItmL-Y n<U#Xm|؏&':5eR3 >Kd6 x>>J5ԲZx6gER=PB[!zx>ÒO8] mH]a~eP_pSGG%-Y~7qS 7]䕺Goc{Vkf2# )E%}a&z,n?GNѓh3/@#y~ l/6/.E0 IDATШ] =28l>W#jV(wn1N8z;"FՀ3x7Gjp.Mh`r$_;˱5$&?lS j#Y0Wr,4į7 G:tcPk ]m׮GCZۥOX(BP|h~oK;p㩝0kCXɝI&=OmNPлxm=)Ͷ>*]|-z j`=/ -Z7[l6 ű{f=um'^'Ń1l bTg8 v uPZqnb G4oSejl %m;[7/69,] ${Gd}}Z+}XyF;lLn11xTcMc5,3--NxU8a|)>$Ox )pGBׯ_ңr QGȑP؄ԋrgJWXl0зf#p(ofޫ{lEh={ښ#ucy(|hk'.ըǟ{ k 2:/E="˸橯m ﮅO@"b3x;`NA-N^698;0;h/۠O6)>'ȚC&- pՁlCIT{#A g쨑^$4tF߯YԏR"^,:>h}).)}5@s}-:KʗkeJYNQ[BIaoQ~,Whf2'6NN/UFˬ%xПǗ5楳=f쭭Ԕ|ƨ]|Z~h?5)P^">4;j77n\_ӹ];;oFQqםO[2oM~> .d'}pxy&-BwF79__ =(oSqO.+9v /H4YR<K4.i.(&3qnkĖgGݤυA:h+Q~5%uJ7{ϋsD_$ &4n7%_ڕ,Rm@\՝:28gM~_.Þ^WMJAf<>NlѻBZa{vl䇽e;292oHM]Sҹ&T>0<1"gk~D]@4v]`2֫7ZAbg,gH_ɉ5 *. 1ʯtv}ςtqX܃^ 4ߠ7/T!Db"QYݠ$BZJR%?O# w g1G/|SmTg Mcj%mͥ6Ȱ$;BY?zY1Jv% b%ϐ3CW;$xnoB~|s]<W; Ű[Wʲm,~3#o}cˇ F|G~Ͽ륿?|6S^Y_%6Z8(7}w~1Eǿf'9~ uў;V0q $Ї+łV38st<ѿۯTq"8Cvpkh gT.2z;)Hzk OǚTܶ|??_\/K-~ޕZeTğ\9 8>rpd,>҂,5n}Uyb:v6-728jct͖# JC+3yj?U#|o7ʍO}.Yl00a"#ϟW rp^Fd:.zXضC|>_m9{.:6T=du@Qgchڸ!KwgRЅzcq]t+2Tvt>9+/ϳc}vPd\lا]c[7΄Oa8Ṅv&ݧac`-Gpe|)+X\C^{"^QY57FP^ovT/:3HO$-R{ i8a7⃳ڶ%@szM/-/l9n8m@翎As+?~QL(] ނ#6 6C9^gHƔb͉O'X밄=;;x/Y74p * T$tKt{ #`yDpH~.DjpanR+uI%ٻOJy>مƳPjT'1w|H[_;oDEQݗ H-&>!cgI'tT3X[~? 1HSFG^8#7:^ QVEg;ɫ,*$R> _}yk)F{'FmLzͣj &5;pn_#19!(mgW قnJr485Xd&9,low$=A(Z6. ?[?OOHb9O?Z~'h(&Ӗ ~(gAԿ> }NNk[aIkSպawIRTKi$+-39 Yz2ĭ X-]@=e|?T-k47] &2϶/NuX`w\_xHm;7mƺs@cJ37[X/ˆ-{~~v_2{tAfNWi j0X)QN>05]EGw|,I3 ko&JJ];gM,6 7ϹmOM]_ۭs!>.d&2,“uPζi`1p+޷1ǧ xǐ{X" db.#~kO .6x9l#$I`PlπӆXRCjBvM: (tn_nrCbȠ_p'}] Kr:0׮ ϾvUGLExci@9M,էOJ+A x Ww7Agt"] . 4ˡѱķ7߉b7*'l^8SK:&OPENPǬbD!"Ӷ 'wI mN txǴ%#S9|d$L8ڗG:WSeE{x}>_ ]/'r`Iew`NPς;HX>jO s Y- 12#nRIv| +kǦ2^DGQj6l5 .j#lTP .~}ח}'oR؟R٥oyA%} wP,Bɒ -pKnHm;4<_^~ >dC8љ)~9o=]A a~}\%^FA_d˻ D k1xTwGf,&yn;_ogjo1@_Fl6|%oW·Ys#3~v/ή▻yw1{᱃y\,~jI0W ~Bwin$Io1Y!F :LV nm?\֘:`oi>3_<>[tm_S'oWEM<'{i [~~yl`ON'],:4YNItS]Yh.U|ڎ=?:>I64H _mI-O1A[eN7MY\@F<*n1etV#u% ' A(z:O}lpq/guϮS'}ݸ.&WaxCٝ9]6$p~}fQNb/v,/Aą> . Y@ߠlt;:bFl`Kl,>i(>LꀈvU!l/Z@;xkLJ!֠"5 [R.ElBŃl]!=|-t#dvǘ<.&H&Ջh9 Od, `fT̏ǃ8IFGӃ06k'όfU чm??ׇoAw:Ku4@3)hV7>>d!+9",9m[5JP.hzDf ʒ|}ES]ĽKƝ{{EW*=Bm~I4A2 ++8صBA;$iDq@V";,L ۞o1|ۀ1r Ë^c+99+`Bhr =7صMȶŦ]p2K|ˇ7.?ry+vs]_/m4Enk?n(؎{7Ң%HٸؘaSm\+DD 5DAL˩Wqsl$Tž_L߀}7=1Ȃ*_(тNAGrRu7xu{Q߉s u>l 3L}[{JHLz 蟉5l݈۩%&?:cW^Blgu_!xGM%t}}&dkPxڨs4q"z6hxR"v ˆ+"}j[! ;ъSm3b妿vb|~kzB6J~v+lq4mX9=Dȏ⛎^3b]A?=bP=9l[O.5;œr}D~h,r+~p2kw}#ϻ`kx|O]~Y/<]κM7o{wB-}&?fſe==m {.?H0ZFj \.v?! !MP}SG TWևO1&Mk& /95L6-{sM/SME$x3=z'6|\߭٠l֝ue"#l$ǚkjfs[&Ewő>&r-$l@ ~H+҈8}@}h֚B4-WՉntxh=癲 X~|#&a?C>̾9]ΦgmK-jR A֪HLVI5^LBș]#WZ]L6~'~NX623bswRmBV-nl }BHX7]>Y|8O >a~+&mmcQĎn; 2m ~$$GTѡk{4eHK_Uf`06Τ8FYA_kR+G9ʊz0M)?+I|!? ]ic43i c]?J>$&|{}R9(6#ќop}|ɸM|k >F_1ddsk+:7?vCŝ𽔨mh g}t|?P"l Řԋ#?\0`klP%M!C欐De t nKj;Z@p:Q%̖[ 79p4^9 vd.PI[rq\d&@ؾTRZ^"OGXz2?zcur;4MNBh:6gUdNyY2ko`+h{(:Ҁig=Vpr0ɳ<l ނ)_ܘR>E/j<r}~m)>AqUIO gVclEu<ʯׂgn =HCA{Y)!شgsr/IOЉU1ىwb/GhgY;yOG?Q`h reno3Q<A>F!6&Zwy]|;e?ǯYeL+qk]#B]n݉O ڿ^B p,Ȃfle$q":%4Q{6CL" *a7,,hr0w픚XGni`r΢ "|{c` ϞcmTbZp'2M&5=+%ao4'lI.K| ۄ̋]1}imJWn芌MYe9Yrzưs069tJKdW# IDATEaO20Geqk}R{j[8 soR ttCGڢ<98jiSBxVf5&-Ƹ^K=GiAãY>VY4o:0mϯz7j -ԛ&d?bТ䃈K]=ڬo},VՖe:P)|^ڐ{[66 o6qi"~^?u׎䀡.^E1HBC>vԥsJ=P^|NQ8W'OD?GfwW2\u,﯋ְK7 E.r ߐQwj촴ZxS0Y:a uO)v~H/̛>.s+Y}C!p+lߌL,@l䄬G#GΫt֙ZM#_mkdT zs3QX V;=&,T}mx}o btwi6XpDV*&L̚-26xg~$2]Mk5:a_GwPE&w_ݚl}Nμ MN ')mbaWğvM6öar9IL"__"=6Znql> YEڛ|WՆk 3>w 賐t x;S|[o|`&hg N_á}u,UB>9Vp F?-l5zGaJ |P|SO D![9G9?m27,'x MzC2$Tj} Mv6@]Lws"{S1@/U1@dzc壹?֓pb7T;BcLhMQ?>9ԸX9}xpuk֖Ywy4uj,h;!9\{On^7my7^L|{owȵ Dd[p-zSb3 ;ϽƇ@KLB# 4t4mEcL?8M`Awu8L@v !H@eA1a0sLGլ ir򮌳ʚ}v,x>m/PwI=`u7i&.5As-y|_o2A;i>yb Hw ß4ʳe ,fbmyԎK5aݣO&yh'QԩE؏6 ̏-jgfm`1bCR!Sͦks 'Z_ε6B<͔k ʁh|:7V?8u i,Ŵ._lR ja}Sfǎ-tݎ Z.1U4$o?c6lT݈uQȩ~%z\`E/DB῵J|tJtd,v_J:=O78Cq+ WE?sulƼOҽ.dZuMFoW gnEq֘yF~?γչr O~7w)8룕Z /i09+TE9Ku ڔn)y ji5T&侲uUKj:O~e'k3;W ~9T;p >_Cp ʖ&ɟkS5z-)U$%I)ѽ k("v(ǮŕFM#iD&wA :.MfG:&tl-0s8xPlLPlZS^䒇@{*.OT܂ME dէsUaP0$ݤM䇓1/JM" RKƑ^)'cq}Nt~taVL7pVƉC)e]L=HR1F$)zPHm*n/1)/٬2k~c 2Tj%& ֣yUx銏|,sNm~q?ewwN}ߏβU(bvB I^S"y6+V?j]wyvΚb]GԖH/Asxyi?r;>?厂G ]|y5p+?B`?Fdk];- I(a0ؤ.]ꋶ ٮ"9[(9-[9FG$A]S 2nPmЛF˨6CÙ: }r&ջxs;A-&IyRʦ3G-< Iy,YLXz@tY ?>f.׉7"$]c5%| ^-֞E'1L]b!X3"ְv۲٤#lmBFgv NBVLb8x@xzß""[j*DOڸF* j$m8->ȾŴv{xD;ϪvTi(FE_'vثWLNGиZGK1$G._ J#QܸgSpKO}k}NlwA3^ ?.n҃_k.s߯Ym-_Ȓ/IO,nƛ6~L9m|]{=1 n 9'mbDM.!G瀶qxW^,$[ꚦjbUXn9:p)Q?LeN]ɥ/_,qd$QC~2i@ַVzUD̈{x\RQ:!`A?s+}m&[|v*~rT9R~?|,%#E>nצB8ZN^-OΟmTQgh7[ϡ3F;.IFgrp}. o \VvБ<2^~9ߞNZ U.xA@b ࡫U7H{V+ӵrs&^>Ӆx%Fz/Ѳl2[P{ȣ}> O$ݤ~y\M4ȁ7?Ě/L7Z9.Jz^"oJ HU(u=h|rH CW\\ }5nъ]r7(*:k9'V @ -8KjGҶ?M=ޙ6iP׫vWW&KhY!Wc}}QԆw1DdYZΫh^pC ưݵ(VNg`/%}΅+p]dx8]GP^ NI҇6aug$ǷW[(t4:uOZ~lr+*جFU4]ܗ5*MZ mXMftn7^]pۄ Շ^miZ 8Mh6ҐTFd夼0e&  ?5h}}\jLSn%;YdF[neg5=INiJz'fUn1X~yu:|Qӣ:|St<=Fgki8|5*ͯkc(F~Mm@_sw(hϣw -6!ȍK> ^KTw80T~ }dڜ(شBGnxkKx:~ GqѸyǂOz{.g̀s3>߻o$܇{=&-="^SW2?YĻxs|˽`uÓF]w xw/%WT;'~&{z`c_R,ݰ̏6!~D0ĨN( ΆIŕQ;Юt9]L `0FèM2:{3(O"gPI'+;Iy4/'[[6$ϯ}"9x.@Z;Uc˂0hӘ b4E j~'>Kw=1U[dIoP#E ޔŠ9|. kP/l4YNx7k{_{@!o7-ٳIg:/}rq#g#mER7&BߍaCw>_c*tʷqA[(G=~X<>4Z<2iE϶q@(ЩmXm}|/絽m(1)''&|%G}J|Ӡoi?;rky=1Ϩ">@I<U+s4OA@8O+X,#w&ue_,׊,bcI|"=WȱHc0Ac,-|[~B[ԏ=9}@_n!w*3gW^0N@Gxf1Li`l٘1q~f+`lx~nGb|gahָmQHC?uyѦc 9LGwDR^X%Wnjsr c6[.Rm_/mvYsѴ>ӛxמ:^2f8ɶe> ےO,ir7IV zCh]7tO\p|lMimPUԏ,;?9xQ".'$>{龶5K~m GX Y1.*N-J{l,?z0e+%4Gx(+tYu }Uub6<:V6*k\zŎiӞ 'OfL?/'\r'/<ֳЃÂ[dÿlmݴ?; ?f,Y{'vkWoжՍr mfʣwpxCX͡ݽu6uac]#I^1ऺ3d194 &-8OvͲZ3%\K7?a"zliߤ./7u+HoiM$?ACAdPip^hJ6_9ӧq:`3/Pލatڑћnѣ/F lvzٽn,mL;nfK7>Ƿ}T r nzhOrO!{b>mhmqnmxE%ae@:|o~6w~­~a#LfcNlBw!`G~>wm<~邮N{w.w3;~XӒ.gk_G?@ѽo_ E_ pGG_^zn7 (^;2rA oË"8ɛv\94tmp~ {Չ6WzRuh/p&KoM >\E67j$XBY[|m%x~R78_uCA :'+@_A;[/jOE;FJFJ=Dh47z i}~dO0ʗDsO4W°'|XiyX+.IL1t)at i3ޓxMWydḶ'29Xmz`5CCEژO޴@[X&-r|WzrĔq|W>]ͷZwXSk8:7<#0F?|:Vzuڀ 3ڿ2h˿:CAwqTϜ_skʟx0Ig1-B٢f!=qi[?X??mnM_kt.10y_If#B?Nq.B]hTS` FlmT6^z/zwQFſ?tBZ8%-gQaA VGP3 eVݖ&e sð2Q,C-=^iM_jpX)r:p& *2MZN *BMB!9`ڎ7N ^ @;K/_$?r0,oJx lX9n`Ri^~i߷86h*1UN^$E6X)'6wӳiǷڣ].nQpGlX.7 \4%$C^%H IdjmZߪ^?-TIjy[—s;j=cUBb85xI ?W7MT"q:bsY9Gx7=m0:-H |Q9߅Qv^˹4jG`dY+Zt !ڴMGvx[x"|^[Gxx:/Ώ8qㅖK`A 7"'[ߨȜaL[a7*c_sYOK!Ÿwy}.k_~NdQpmdy?I[l;'e,mK$R^r\|.6bQgw&]8ϧ.#Fc, )Mm/x$? ТcD9,lm,cv@cF<%ϧ)wo>tbdf"t8(]S3r/RH^xNM^7 naؗmNoz2/c?N`o*ÏnMKA9:h|k?*RήShnm0pnRd8OZpMS&EiXcAS&krjUksR8XNPeh@j3 [x;=w̎{.lf5ۦ>=6qhWm6`q~5>LJ} }7ymЋVD4 Nt3;ك=3YK Ia7)Mg-kG2_O5w;T_JCBIsbxQd 'p~'Y9>-2]:~ݚbcM6 W4(R`q{RIR.=vu>%w_҈ l qq ,5UQq!d;᛿~o5/?./Yr2LScPý3΋i |@\(N񹾖bցmӜrڀv|&RqpMc'y䆘DޅHt?ëʥ12Hh.OS7M;*M9.ܘqqwz|º(݋N>/CG 6HHnNڷ20RbxKNJDj;OWҼV8Ū~R&^^Ko?.|#>g;>hDɰ|߿?\+Wx}W~XZWqttαYYNygX\{ڪ_ů4+7R pPqB:iBp{C/@3ǍNImԥ9J$'ǹI^t2-[I!UF37i BРJotѩ\\4&}$et0gU>[Jŕ"X|WϧFt! 7'(V@Vώ2ݶ1K2bK䲭9%-L"J;`xs~)Nl8;TxՂ82ӗݡ lCj`^i#'I }fwo<o6@Q7P6Y[~W!O'Zo.-M b _RCѺh^ԾH {q<ƣ2mxK4Bp=_R2FϰX#Tvw$bҋQ V0y$ii23EOKF'^?TojIh0/<,Tyj+X~gt>w_1'`ti&g;J^9`,0 j2u6׊GExG`Vo=' 8:hH@FE}/0϶\av̆|+٘MdRI~Isv:i'Q.b"b2䥓iOa(I=y ΓEV#P<|䬼-<$-z[뎗 YLou_Vq u0zH/_=}9yTr1rP_A)xo{ ȪZK?ӶƹZb;"8 Sst`}, -7tx-tlK Wcs8&?NOl@я ߿?{kos ~7GG.Blǽ/]b/Io8xV}/2g +olq;~0=86\xpc첱 cpnl3l6\j<\{@Cݍ@#*&A`IrSލlnRX[ 7{!:\8^d(0~tPaZy!|gC/?d67߰?4|w[Ri0m(;>Ǘ@o5a)Si7E/vz,N-08{Y}vMӃ׾ mw]yN?7ǧ#A"U4W,XD7\M?Y<]" a˶4y(Ok}ړmo1M{!a3GNoAǎv:hЗO ôu\yW6x/ޭ~4Tv(^j͹5[d˕DҌ0h󋾱UuKsE-D1[ȕ琏jCn8|Uگa4b:g13)o,^>m'3IE-]SXx  ,k/ϯy!Զkf(o@†ש=:5Y檟_s9\z΋t6|gyLԅ0{}hz ,%ǕN;";+ b=Z&ܙC+Kb*uk27)|ph`w<5nw6D?+^KARD`eO;ś>"B ^WQxU%'9#o'n?\# ֍<{6V: t&eǧsr :sǂY`)nr>Asݹ_ ﳋJ$> 1y[-ѫ~ -k=߸Ymw5IePy[4L|yׇU.htasY*80| 7<*&R}EU(GwwO\sKN>1u%cr4K{>1/5:]#$pxHA}1#+NYlTYw8}^g*I՛>))<7v 8/Pt3\>dSxcc7zt V?^Pk3q|(j=] {5gn[z2 ً mg #}^[\Rhi|NM)KBU:-\>pmxiOZ]:'1>K-ʫ:3?,9'-~mt%./!Go\rz)0t؅7lM6]l؊ #q>ӏ/[nD]ژsYnsoq8oI+`tӯ P|wbJ-;mOs`" )pvnO%{sA /z),qڮJ_{xɏF8?l`m^[`?s>6$|ziA>H9,^7τC;A (u*wʒSXJ*r2m]7[vP'/X> Rnm"ִX{}k7}mo)gW5qi:]mm^=\oW}z/ApNM*m~^M}p%n-4⾾1_ihAHˤx ЃBez?)pqdᦠM&KKbydDE>(RGrE6|flmz25?2iLi[AqT72T -=&9,tJ+R[ vae T)mmj~,pMk%,yޮwem!]\nEpތCݢχѫkSB. _b%|@'칻 U_Yl[Vj`.HAml 6%`i>DQ{qx&+yju05 "t}WLڰ%ŌCxWrθ'OtNXF0n:ݕOq d.W#GQ4щ@*k0d#}UfY`@Yw0v^=&c=KE9K5:&kǧvmv 4UuR|y@~gF;}./cLI/ ĭuWYA~p~j|$f?Y݁wnp;7@>{͍1G'r6JѭqP~kof= 4Y`QXL{:)^wJ\qe}JNa&Rqկ'a'Xiׄ(`7Fqɀ1 <ٕdl6OT~$ѥz~կp/ #8?>1g5!9e[)֖I=m=Uao`y3W멮dB K3Nb2:pXo`vPsy%6<֩A*ӣpրm9HI[7ȋ-OXb h%9 EizAȕO| 0tSt"5)lu\Y`pWZ|x &lp|~ NG/d:CF(AveBrz!yb / v^ж:|~O@_` ɟ[p E[[}$iR~*Ǐ R"X!~mˍe~^cn6h<(n1f;e gEt9NխH $zT9w4ҳWd0zs;u]d?Yx]<=&u-@åW Ϗ0{Y}א'@a }ȴ6޳GR:kp~^__k?j\҆ '84.1[c@ԟY.ֽ4yr): yE|mbl/k[L(vr3tD셷Gx;gc=e3X; /]xrΠN[ǥ1:uE6P|^cR.[ojWr20ܼ kZᡭxIOe^؎SGT7I<>Z s)*MwsA |\жoXhrLiiI|-#{w=O'Ba>&Sԏ&Mrƫ"YSc $n&k=YA#.? nvD mWoUaOߣ=?8osh!Y~yhF4C|"J]ߛ޼ \9#}.s>My3(`-kAmL{NUnj=z̠WH7Y`|-ξʻ'm:dVKrA-GWG2_?WOtqRQ%IreX<ì%Ru>!/N-[+SiYx^,=.7mre,esG ..ˢܷB7Tɝut]Tw,6C\ӯ-ap_o>gBԇ!9ܻ8(Y`^Npv.C \G)N, B0ArǜFG/ (ufn~\{Zt.2e$]ƾ~yvz/2e(:*ig7hN{6.Bɩ@GC귾[+㘂r^[r}7lg_gQ9aS+ ʇ2<}tf~1yx_ uS^ej]EFvb6ſ8_aDtGT Zdw/Oi?dAkȆ HncUB֡H-qQGu~b`Huꩬ3-пaE1y=׶87餐z!֙m8iB}t&ԂN{&-rR.~+- x3- }ΩF>'́(!mT1US}GrcEiV%p)B"=_{s9W>N I}MlStJգ&U\o9'Lxt2=>4\0w,ޑ rR׎d&͢pH]>씂J[E&c:}"9ON;W&oǣtUF i+4|"@GiIFuaZn8>\+#*,W?S1Z9Jd@Pm]ͮb0.kŢ[~]W(9/Y^Mg!XڏPjG/iF7}ܹ(/RcyOw:"z!1:yY͎{?&"A]>zM v#-;>{%Ub|qƷ CFn-)Cz79O( V]QBːhc 6֤V0HPƕv:z >}:Ǟ&!)xMYS hɊmțxça]q# ZUIea KYiIta3^qrM(xRnISj Pnǿ >=: ~}ҭ|Wz郓7Ew4`b|<`4 ":ZqCb-^xp(ӪӸGo:Z+zI7aѳ)r%&LW;*_.H-)Y蟬OPќoL8MֆmNq0|k|Rf4o~C^eҷЕjkO3Y#</ZKqն ߀wmR~? f޶ο,$\oA6jz9R] QS-vY(>Ir̆Dp(婍[*! 2mTS 9wޠnZK= n$N.Hx ^Eׄs(ho<-v;': ՔǏ1N[;>yzZ௏jxe!kMi_Op`=oo7qb$NgRQ^Xh1s·||B7 Tn?t\3&b?6)n]q Tg|WcSZ_-E4<,ZBΟC*\lEZJ;Cl"&9G1~-du'NޥTv1e#Ng; >T8TSgL,.?dѷM-9ߦO{+L+MR?JIp}hz\>x&Oh_@]<}!Ӊ~M~E t%^/oCRΤ]H+zWҦgiA)[z%(wXݽjwzKpWk̰AȈC4^fⲈ9d!-ZڂA垵b#v޿6c<ñ0k1#RM <ۗ4;V@ÂOh^9Ni_ &.VlC_E)ǯௗ1S6Ӂ}kUe 1AG K-8% pNX<%z 2O (\;`5] ѫ)QRmMm=;$K*|7y* .ڃuA.1v۽ٝo?'*1-u4dxP*/R\]Jct0NnQdwoֺgtx>-_ZTg׌RxW9ЄQ7<1><6^_ut 2W);AY<6Wfq\^G<}/8Utv5<׊ڏq=o.=24M4vCXn qmc5ѯӥ`bT ~Ova"<@)uXGmѾuv$u>vhx|40"+:n^OÇce9OÚ0V, ~Rḩ^j'櫤=ks֘Gdp^Jϴ]|pw ,۴um MȤۻEr}#U5N[wHnnQዧ j31nCꝒ<xYcCыbZ<.T/۬7}UʴǗ.1gD~Z c(T%’r^0*KrTt 20m c9JST;^& ͝P1/٥m0l2XZT(cקKb`|Cݖd+6Y1J j?mGv7(Oz]\Q:WG?ӑJ ks!KfugBRZ~^L')M*yyDW*lvp0p`mX bKINׇ\1>o%~ˎ<14BZ>cn~{gq'H2p\}fYb4t PG'c> FQ W7v}yj1P;3k%ýƜrJbW_=AJD>=^hx4 C,n p} hЉ]i\+vSj!{zȴY>䄐>aFu\`U]l˩4O4b+B| .p֓ Te-zg16'v<h,g㰹8 T/y_E9p |8KFn$\͂1srCB֊hse/[;㑓2o8i=ߧP'qoAG>c{|M_W%Ω}\M^b|9J1@5z+d U,E (3YqOjW>_0-o06.fW/Wo7@ŨUG/ O8ȼ0zk17G IDATFN_xO5: q/ Ms9yV!??tI}*M-cUWTc?;O4(Ł̍7|ƧWiw|hE|k-iJ"KGk~Mkp <ԅ= /O>M8ld ˩*;Z8~վ}qۜY czHEN80. SBh}E>))Vtc~twzZRr6o)5%Kl{xE9p6*`>0VŻq'{y/!{z?듳y=!o<.<Ə|o9iD[9YEr/hd=jZ#dk0B/U}Fis`|XLfO7zYhItj<~רo-yUo[W&Slubb9II,xa^pgs-]ǙČm8= Q'>\0؟S~NyqI[_w}i~R|RyJL/OGj˃tՆ} /|nMÕwņ5UVl +>v+K]x;|&F?K tIx. 4+Gn:6 #7 @;|%@^͡pkZm߶P}I0;o_*7-6A>#1iX7ZQiǜLW096m瓔|»|rq ,.7S]BT MsWw` J[m|+\%Βٲit~ `etilL֎*X+;W1X|wwHq1 ]C|ß\cg7> "}o )2-ק/e M~K)/2ƩF S!e6?&)O1x2MvHR݇Ҫmcz%C6g@Y'e ^/,g ܔ`4AEnx0J듩^-f_ޤ1ԏ+αvA47O.'iJrWy΃8C>Mt(ӡԕT_ #T J8Ѓbb >0o_,l`^|wNE9MD<6)n<-j.|]}X >R·;f' SvX>lhьqR I0j=&ۦ``rpitP':y Ga )񎛚z;_ǣ5hk26\ׯLsc>mKfǍ2zN`Ms.ʉlnb'aΚO^gv7T-RؾsV0l/m?fQX X_ζezґξfmQ-{Ͽ[㧴{lCΧaQoUqfM 8kyJk 3 k#Y[ooOYP?7m)]c* Jl2Nb6yţ 3Ftt!n]s$.Xa;?E}͊ww>ˆkskbmF=op zNYj0Hh>'h=m8i?jwcsFNV YL9h:/xDo|r$թqjRHCwHݰGcr k-JQW:}d3O6<6@[2IKM  v`rAw6q-@?Mb]vl=eʼSʟ?߸7iD+M>]hq*i՞cWъ[4>P^m9=;E @|jޖ%ZZnǩrҼ2vmj=-u>UaT>W,GvKG 'k. ^*pI*6 Gbyeѝ, ?j/?KKSOd(-~2qH'?)?k _M_~͆[w,;o%+1=`_~o-|-K%~ B_ ZvwzXRFoq3N6]Y_fu-m>\V4VnI a̗֗NA N+.;*N1FLAMIxijݸ3~5 kw2ji9nMN{R`.tMqoi7eiZ gAd( vB Qn#1k }/fw׵?hD(`[N`1/mn`/ǿB "$#9DeO>4xTF|ǵ7:㱜s6Og-[l8@ &= ո9eB 핣`O~dj DIMM;a/ߢ~m kzQL{Rr0/%yݼTo'/_m[Jrb*/52X/@=h"т'Fo+|69 `?0xg5 ߦ9.Zoȃ"} lw-/Q/?({}tH&Jt ?@0fLfOz?[CLǝoŒnD'U7賎5SncPs7 ~ڦ+,YStJtP6';G!8fżx|$r錾q Jߵ<3{Gg2 <,|6Χ89*]yө, 'ˤ`i5&lBD3|=ZRQɥrwteZR?͕Ù~#89}BЇvm;.㯋EpHcm_ʟs|sj¾ɸxql~'hsXOIO{/ `^a/^wV^@lqY}4 ;7G^O朗; 0-}\SWq! p]u_ -^:% y/)cИ \ݐ}4H1=>^>r]-: ڢha1CМ)6GLtW<kb9iiўTkIhS$RNj dۤ1㰹U$6nßÇZِ;A}@ڟ~aSw:GE䱵w\2+.976-&=;Ϥ,}1_jւ)6ÅsrC>ay$r767oY{dQpuhp3?}"mn%x4 ~Ɍ}]|EL oo~M?sa&$IY ?S- :.0!ֶ0J(!~˲M и(;Н;p`*%MR‡_롧v^#u6Z#P̭ }קkg8{_iSA]nb^.`w(`\Kە0? `g2SsL3vT#`%R b` ^Ҩq>`̞ybcJ%/fgri@'^o"-jȤm,LM&!w?%3%rǙ ʤOw?=I{pp؜:g7Fckbx< s~;,/|$#&y2n?[xp_D ;7^~ Ev.~ebYk[9ȇ?݈ C`?YM&vqւ6ʂ@ L b83xifdns1:j1bN2΁CZm)\{"'׈,_ٚ[A)\]7&oIOWq!k:,"؊&ŏBavLgyNuy+AQ Ծk $*6g|4aYMOԕQES?ǜϸB :F|1Q>7!U7F|27,˗\M:Kp76WY񡜝Q|c1ͬBa >L3A0=[?N]L&syoŁNoNy6Z2[{'1&v`[ݣrp9wa^vE1El2bG7c&l{c}-D/dߚn1t18L~=!O~w/:iX\;]zg˚_~"bb.iK9!w6Vq^EBrXXMufk҂ [I%kTʎLm—Əs2Qeع{ЇTxEQr˓Nj UkCC#⩳2Lm6f*A-J޾LKy<0ߒAKT,Zst<} [DL5T<Ы;eT3%r^1]M ca<:5T)rɵ>I]b’UE^m^x/W9 \u&J 4K4Lco[):m~3[ߝן w&N+sm잗1;>M>W6H;/sצgbXx<[CMEE&VtY 9ؕ噅Ͽן+_bn*{9$ߢk.LScq;G~Zk4~(X9?脟6q,b/T"'`;f:W4؜J( ` /H6194A}xc'qnz;Q` k_]Z蔞MTyRJ';;PsS ]5)܀,.2Hћ-zPˮ2s*C\>X2x ''5:>@*CO5B4-%KM ׁ.NVh6T;^N ,8vh&/ >ǷIOiB:PI;l@q~xO'mwl;:m4tx[}V di,eO(Oql5U\8ABj4צ(_ T}*I}~_tA0lE@dl ШfGU&]/ɕ/ޥ ]WﳡvV6J\5SJpzA}w %>IhN;LP^xABkB2x8ؑ7#emY IDATI&Vt=ʯ<ݚR5)5npΆrx8u4H4#.Վ^ّ҃wc&$ѩ^76~l t_΋ZߏB5%L1>)2HB_囎?=e_ba;?Ok/7œ1P{TG3DMl9 5W<[52-ϋ2܅]_^g>X noiٳQ(Qp֦AI,żs撷JDF3$D&NӉԹUukOxْs 79 #&){_i#!I nՒرF>w?-,hAryE7_aRFF~>t?]ÀtG \ =.͗gӂw9:i4{QYhg(u;?/rVxN=K*ٷ <@;o.w->ڐx<{БP Ӑظ8M IymA`M:f1 ODzjȐ 쩻qq 7}?_QIho+LѨ zr߀!Q:1gy&7~N. ^{H=?yvM68IGcpmf5Zdw㡭Ն u> ឿ/~Kֳ573L'Hrđ#jds f1<~ [<Un(`> #4X}XXR{zm)m+J66q dbYҠ'Pȩ`o"0b;ʫF{/^9 IP9?7 C[DPxVI:r[#~ Doض ,^&ٲ8Rc ?chY]18n~v'*} p %\?Qπ_iӇ)?/߾8mrM?z>=-Z\;{ZxUNƴN-4ʱ-dW<7tHܢ4W5O;>?Ӈ{m&Y'\v[M7\|o&{_2 R)[?e1طɭO&ٟۼQIk~4ڭV*aL*?ev,<T=hKrSSC7"l{`>7R-؇Ż~ߜϸjGc'Gpmkև9R]i[yeE^`})wy`ON%@gEanE^sM,&ڄMTG|Fp_[a+I0Z!$!f %+?lK|@aIs x|<@GCIl[XɄ"xW+&;vڬߢK>!Y}yW᡽湖/#@#>*z}Zȩ޵f)qX[M~z,11>*^.}eXm-SFJ>5P~iɝ@\csw,䮼NTݓ|z?poCp|b*-|v)*˴t|:['hxk `m0jg7 `5dz} 9 ɉ/DZmH+͕Oj O;Rπ׽L6?e75z {ϑzo⋉m7 *r2ً`qdTXJ5a5lj`oULsɕO 4{7~΄r;♝l֝o=7+=_% .d.թcI?lrʿ^&$)1X .Щ[^cw=Ǐ}K0"`b!Qsw_%e$i3HmP}1 o!Aqyi˳D;O5Ć9Vߙ4y.q/2;K1C &Iͭ }+]nEH N>ޝ/UkO~u&-o1dICpf*~ͻ&#F.%;|D\>4V"yqOb7.=\6kbk #jF}؇wVw,+˃~tNWu{^pM(Sv]{|0LR˫~mۢqW]?Y|Vn&׶Z[7N_vNƜMHW7 @K!PLJsB qR|+['jqű1LL@&6_=;JL7dTlIC=v\ÃP(xub ,Q k4D&k,VБ,`~~Acv2nCvbooP_FxQ&xFO4Ŧ>эIGmۊG-(}l\tjs`0^[Wd[nUP,|GʗOsl'!5*tJ~]fŒ(N Nez8xup"#HwG5|~v* XRWrSR~!H÷#nj[;C+yD/dFE&=^L!y-h^L$kَo,a;9%w$EE?_b Oi_A!|)G +ǣLym5 llUH޷%GL祥{G4O~;TA G:$Q \ 4NhKUuQ9g g_(?t3^e˰[??@9+H݆(5K5c2xg;YpS(w}Ŕ֑-PQ_ ]FO`v;q[k Jr_FFP=5XCO߇g< *+W7_BՅ!xNj>J,6zZc4}\1fx"@byOQoLvOa@(~![ #J̾A|27TekGEdM3|nj]y)З@S@??#Sy.y>f>&-yxmI#Gh<Ʃ.Ik(gW/,zk1Kq8Ymp @^&J54=yVSÂ/|M6. nxr~[ެ ]<~A/-{e C6Ub|uu~Apu?J|^+$b'f֝C%Ʉ篲j]aQ޵r}v\5NǫvpPGs1~.G>˝Mw^.g~Ҟ 1# 3rt7Y&y=]mOForʿ _U=]]TD)_mH^y]~w;x;gy9uŠ$uϕRy1~F^q9/h)lRCd˷fu.lJ=z7J0X8;a_ً~5 lKTebMN7^x7ə*Y WǞv4amdQ`ٶ# bvp"r=|HyX,(8V`Nh5GHs~b1z2ෳ*m)][aOy Jްk*ZHW蔁MLJdyw{(l1#怛#nhҵilDiy\埁\Nӓ ]N&yy[FNҵ;URsv`L[pdtR>p}Ƿmkb*+77`ָə 1P/?zP,rPN:aJ1ɚf ,U7#O ^J:8 qB6W& (K`q@ xTnhS 29ctST7Dnx uM`9??=Q $#ϖR ĝKmE,@{mШK% \ա!l(AL+_h=goa=M#-?ɢV҄&  ? Z(Q<`<`/߇? -wpHV^r G1d3MD?,TѨJBObtoqo ~[N)~f,YYE`r3dnR%lQ _V~la'4/MNJrKtR*>?%wxz[Rw;N;Ƴ(j`~(ˣmKGQA(ejW:91ܘ>cg᱐÷@<9G'}_ \fSQ'hf oJpМd g5 NPad2 $aց}6\ʶ2bf5iXw".JQ~c Qlj(A[SаkrL g:[LGM&՝ϰ|0zL8mwAyоh|(^i?~Omz^o:qc7>? iJ9' q ѦGXϊH+`ue k5&#؂(zhV)=uܕvxF&̣k/zZ흂(˿*RB_f.^P>6Iڙ:#(<? 6&@|n,[i@GX+Ee%bF/Y7:P?QcUʑ\,~gu4[AN IDATKehO?G}4B>bO!d&艟TXiJS U': ϴЯ;85+.PV^gs\QX*seQM Jc&%o 8<5hʫa@?il 7<ʴ Lk 3(N*]fz$`Ot %~Z+,X4uw ]/?_G$;7kvz'CX >;Z] &&PnO+{V-ZXBsOݮ͏`xJ~T+ :$Ϝe|֤F?8-8;=)+x\(Q"1 5 =`ʥ3j~NTOҵR>OxA0%ubvl|zvQ"i:c!s1W}ofs ){K~_u wóã)J殾VY Vܾ;Gj+5'kAHM0fuPͺ`UC/eA?tdF?ߥ Gdy΀Uk2#s;|Bb* ffC~裛 ^R ¬O[5VA93R!1/U9@ZȤ?ǟ~HȢ' -Ȣs~*@JR5r׹R-/ȖmM Xsח >DZYQiT ziݹTypXC/a>Mfd Kल>+@sˏ_,I#টcfR0fgӛO&l|/%l:{uG&+~rpwVT҉Q;=Ƿ$îu4=b,?N'iPm/>١~Σz>MZLz*uc#v/ g 2`ѧ:[tP8`8=2[C1^$4ˋY5]]r ]XF1Ǜj']pV럶xsoyo۶ogr5W?- 6f"9r go_?:/u GO ^B3n^}QDk**su^\ϣ:m>c%VzږoVrn};ڠXӗs7_oTW3K7OO5 WXOS\d5y!C-3upts[ωn߂m[9~7%~5h~~ÇK)?QOhEW4JApS`6^'brxaa45Gqwo$ʸ݅;T?p =/5w\ aXwwt,gL>CP8~Bw4(Q֢DzhlE7bCcqg O^|oZ{Wd|ARLI^Kn|]㫶'W f9Rh|r3gv-/:.FHk[}DK3X4.z&]ҍvG @vrnKx/Fv)~|sg<.K><^ 6%YEv#K3anm!6xx3#g{^w3xkZ]d}wC>O#>!s~`idc%#s'nfL3_NǑE [j|/i\BG {qk'q=hqp n j'scS)U\GyZwO FmPR%yt %]ᒓy-tH6ً`k8ZHMٌ6hުM &=|Z7pkG[(ƴ=6o#{AW[ ߥHDյ_ic/9Om90l腟XƏݵ"d-gpYH1}ZQq[LIX6QFw| %y:4R|z^8]ϒ9$p2쟾;0ooÙ t*(?1Z4mrK~6?UmgV{Vk7Vg i:?m^<!JMKK4Blc FH' wF:A-B%鼫wfF(rQ˶=o}g wrٓ?Kv^W~ b#[`wu=e/55NۤQ+`iٓuiD?Ӱ>"ʢ_t'/~rYDx?-ho~̶&̓=mȢOEo$TIw[C-( cWWt.3 wt&}s wx sSAHSp*&U\`zۄ;@;~&N OCAq8)CCN' zCBK0tBǷeOvy[71_i {~r 1 J:wk3I'e0=FGϫfvz|lQ^f ]\-je BikТ{f0oD?&89j- Fg1cYN4/~z="5C 8;L҃c8;꧑aOuzx+q0|t?5Yvw {mpr9Ihy^c>wKP;H<]iMx\W ktI0o :z'ǛCy>Z[ƹVT]t ӳtU[Щꓺba%Ņ%{yfB?fre%,2}˜H2#CÌ0NVdItxp㭏h> Hp5wUOib8/}5E$HqݐgCuBY&W]Я4 h|vxo?+Z5bJ#?F矓IOem0L:w7J#d[h`Apo"[oDڧ>Keɦdd. UZd6zIj}'͵`>tiDsQÑ֥Ձo1h}/ z6j,E >x˗>9>)F>cjcr VA/|''wlë6V,-RooL~'nc>tL+:kVPMo>-es}}f ܙkE@{d@ݹV8S bkqNIѣ5ɤw Wäjb1L[r `-{<\G?:^i]'OOh~o̫Oן?ן]{4@G' 9?I4~Ŋ8:#]f2,~׬2tߍo;ƋވSםL@p,m|e)  sw[,  > ^GuC܂a8ඍ0K ѵwB;ڏ35t#?X &K>xHWFgJr1[V^ܯ"{2d˼>Ƶ`d],K|l۾8VZUoA)yC>|?ɥ֠:3ѾFz$-Ua@cP] d#,>'* Bhj+DwqTBsc/QVp+J>| б22kwhخ&G_1o{OE=mг{gR?X|Eo>l!%=>ċYT-exofq?NθLּĆôwe>+Ղ _9ԇ+o:wae}&{&lBwg IK[cMkį&1h 0YM&Mi!uw; &ziE*NE//stSn(x̿w/i)2'fܱ<>Cþ2ӿrt|lN&otJC!cO6_ 6m-b^9|Ę]~, Vڦ 6c70ѡG?JVS̀Ia rX EGHHh{&ǐ,taUrTNyI3K2kq48 Ktd3MNd==& WL}\{k־4oi j.),մ8]{&/[p`ٽ]N !;&Y Gtq[m)Zc=A*edF^w$V]zV$bNoM~wk:-7kcgm* &ANU_Ix\8fC>;S-8/eLsE*;o=G eX90-"w_UV{q֣':ڈZG -Jy3Q1аKw Wgg_]c+dOA`9Ap k,$-<ڌ8 ·Og[&? V GvM-Z˓7ӀgOeٝ1xV- +kLOW~ Q.ӆh%Z^T-Cw=/|^Wv]ۮ::| N~OR>:u0 rM{_P'f:d";G0p:'/Mni>>' ?Z[W;?'ԏV=S; gl2n0L8w'i/i7)ɕ֖wLR8N\[d1f!pwΜ @\ӻ) Ťc7X_D֧hE?z'x~򢃉b ]lK=nTwn.O{IItayVn2`F/wz/3&x]|V_Eӯy H9/y U i}y,07Q)0Ic1S7 oLx\dzl00KN^r;k0ey?Bq\"ASgejPyan5EXڊxn[-.- omM5Bal$)ũ(Bi5Hr^!:I64MA{Q`P7ՎhTr`9!x՝d) <|pQnxY=8?-KZR@U|ɻ&:ʵ|l}->Rī=6=Gw"{$ڋѫva~ߣ9mOMil+޹vM~8Pu=&=\M'\|0G5'n}<Ӿ!׵ Uy7>Ʃ7]۟{ K;۳2YmeS6{t3014]tz1$$QsJL}WΡ/&,%;w?z1U=}BԃWznn4hsdžW" 'l.`;*B&A:<\oa$ R˥1xa?љlx`h_S?dޑ6|S&xlAG'E>Bbt\YuQ-S~{<P+(_d' Rv`{uNM\X9TgbWrvkLBNI^[$lB~x`I0׀fR3H1S84n͇c4hXx)-h#>Ku)7m)cak QEj $ SG.wE߰kIX|u> kNm,LY5t)a3 3ra.t "k,y`fM'ږ`[{{G?qzs Ow#ۮ~&5'JS}5@ f,[HgTQq|=n8_t#@-8\ Iqܳʊo.t_-T87sd_p S=$AWk7s6SyeOdYdpzC c6zx> ]ǂfo15F )T|}LAmC>ٿ>[ N)|xt{ʘ;`xI_<ħYLNZ.v*nkGSYës Neg-PunbwSj;M!':h8,d|К)A )/ǢS9) ndFvtd?9׬}#h ]^ZZѰa4txzAң8F_o!= i8xN=6C=ӁT|2bѢQ3.j=~%R=iWل3Az/Yd.9:$nvy꽼IZt_o|ڑzcL |JkX|s-|"|nGӞ@[=dO`zgˀ^DzNJѡ d0q۶7iƲiR1Ԓ,h]n׻ȉSdH[v́˘EO9u3xje˱eq./r-Nc+M}3_Q}zyO`C"Ƞ_CȖ\;S0q teA0xgQBzj//|$\3^*9K>G  xkso2ipεUY6|M mMSL+FjKl8NioƁ=i JCLj Y=m<st>(O d:$ynV6JL: y4' i_~pwEs<o]ԷQ4RXL"@TzOROY@x?e b6r7/ą%A&'R,Q6Hy\7|D%W:0IByd q#ÊIxnɡ:vKɷ/wPiemаB6 owiƜ-`ni^k[è+jg 9PWppZ<K{dm\ΎaU"1Pbz 1p0!sf*x[ 2I[T'k> c I8n)ѝ=? x{]-/.VMJ4l;Hi$6:pF␞.᰾V|:W<2(cq7(kWt'ȹ~}XGG{YrxA=X |12z0n+RsVn#*uEG=T2bw8_'IHe3I9J3'Z .ww;3Z'/v +SE(Q8&vg-ToQ-{՚j3U>=|lm[L%F=Tc^"ݱoiIߣAMjs> Ar6*~b+Œ]3q7xL)T9NrU+ҷ{I;uէnxϠqn2'Wm0d=~-]Oʛ7yG' d/ mPq9V_qY%/8!X'02.G]_^nV W;<޻;7MOޕ Cr&8j[2:7p>XIv,`|xjm|M4xOMNC?m6,ETSTLnֽ&~GhQ5>/hO"$tw14XZl{τ~~qCZ?|~" }Mqv=+˻[ܹ=&G_+3лH脖J޸!SAqo!9FXC&0Α,evg*;Bpw_&1}:2[0T6.o!0Gue"[Iv峋f~&ӂֻ r݂⥎.9~׏9( bpsCJfiu <_~\7Ç|H|f=b'>bdu;Єg)S CB:xNtx? /7čc$ oѩ=^_Ga΃|Y{+7(<)cn<勂e:N=ŏraIߞ0A+^k0u,asR ݫoAS\  x:]gwxNY$_MU'lG'2U 绯@ =R-U\u@)mUw8+_8ߴ(~.@"(%”r<}8||C4lېog[dd`芈9 r5@L< l8Ή=|hZ E{[n袪WstMxTv|'c4llsWrݮM 7-/>@\'!/e׋օkrhCR/޴@Wk| ~ uAt33%<v%(Ѐpor&Qj+)iuh2P -u\:ʯBW<_l>{1ɳI3Lwwz6nlE 7ڞjKsv|ZYq_/_! ~wP8;[R(4@k=mF1] wz~d7iqpGܙ'_6;/zV$$h*ZӅ=n0̯z,(7x|١m>ҞZxg sˤ95# +8 lt4>r.tm/x.+ s+M'_o#VR4IB ϴrd&Qyf_j~Ntvkcu߱i)&;Dw. |jѭIxG K^;1b64m M{KLu ݜWYmJ]~{zr+հw+~?{ezNۺ&}w#Ġ}mYp3qiRaDZPDo}nSAUvt2s"&&wdg72CMDxO.B#yώO~?]>rE+@D#;'ѧ6ODfԄxo~#Z6]+;u6q.Xh;i";ǂlƴB\3ٓ#V+.c'i$]tߘsR>͞/|i^ u.w#_m&Os48rtxAծ֢xûtfe=*Й<B:|qT7ٍ0H%"-쁍^2W q ǔ2L~WX҃+hcvgOf+d !Lӵ5 \7ԉpIOx>SfWuBz\9:W^%i/el~,4< VN9 9h%Tָ[Dld o_+ţdUUS]65sVݟwۤ+Qjb_mag%[5_pSF]B,<M+&iF )O0RA+\'::H&aWO|J<5.< dGm~*KDȢVQn ҿMy7NP"e p oYͤz/!yO~46>Il ,}u: ,>۶4).?Yj;B`JUsj S. Ϯ[7 Q&n<3xÑfL_[~ pAQ1\rݍ+їǝw1KӐ뻜 V$[b>|1ߔAN\q/=[;>"È. "lfx9"uw!#ϫo@'_*\KS@³[qV8 f8+;mڳ %o{'=~]6~ݟH/wRmϕ_wRuzE_`bL;6& )_b/vȤX{ TӰ,:Re~d!Lw󱷓jl{o݂܋vpt`/lw;?oeZ>H؋WJ6)<՛=l?FR}4r ;RO v&ڱ7_/r<><@Ie]~4F?UHZNf%EC7X" W+4e-ꛎ8? ~@ ^N[hs|m O>dV׆ Z st inʔv$-^>_OdQS\-$ScX~Ad~E=Pzp?IY'XST6heQ͏DvqS[øzUz*#)|,+nQZWtS [^R$޳L?fd˘)[5[?z;_I=T6:y2w#fɔ7PZ/^6&ԣTL78`Gv'fcAkOLb<=j}[&L@}&WYV`!e.-c# hu֝-6RI3M:?)|J}FɝbebpXӖI.|9mx6VdPxt,ttU׹jGqBi7/#~_O|$xuz~&p]p AỤG!טeJ/S籶qllV[ëTj$wwtp/Yxe=h5"ghLhRF(QsJu( +P7u|%y)9wǻr"yMu4^Ӏvr_jj PnluZHSD>s׹g*U|FG,IBL@uN\y8r qN\0蟣9pdħp<]}eOIk9q^ױ VR4<hx_}0_+;J>r]8?9qMu|'mS'߿=n$^'(뵾,C*ǜzߜrLo)n Ɨm~ng0> IG~c]&ޘQSob@ސZsZ|xryO}@.okъwH88";'~H'{NL6޼,fɧe=x'=޿S }jNj o#|հ3ӪJd'h :L]:{u3vq\DG0V&ks& ?YhbFtgBՁ9}S~3Q!lO•10Se4̄lwҿ.?8E-[)s1W:I *`ឮZ+Ӑ֐[#PpҐ?[lXP@a9 op?[У0TpOD:o$hDu\msjã;jW?_r@&hUytu6s/op^fCxA=KUz x8Cy<?=~2w=ԗˏCq?3 x1C>+Bu~[?48kb8AQTU9 CX]_?dQthqzx@6S4Js xV~Ȳ @ÂCuј󷢼.\qxzڠFNICӡ}_n_ݟ&x">c|d]^k%vݳkՍ!Q/vMԈ1^ܰMta`#6]dKts!z&!Utoes8=`3 IDAT2p^ $pQ)G/ս:2 YU=gۊ2)nx 1_ WkP)Qakh\^}"_AyOh`5Z<)ÆNxGB W+}w ^=O ka wRHΞZCU<цG>@= S=|:˓I5l@im@J_xt'Ƀ :K`;a}yx(MSgF.<T`]M(J_Ѧo +vNz/`e텣/_r<~Vyur?4چmWgN;t mKwxg`&;/E~4}}S:+ATݗ\V:aឺ'K&hMeQp"w@w>6x.M6w|?w&m/nS>j<}h[a]9 I5ƘhQG}|4_e,~6rvn?Ows*t6ڍ@YD_ y/H.2 '1:[+^00 =ݸ7غ?Aǩ'9(s4h/οE(ݙᛠaϞ*{p.Ic~QxĄ$aow}J VݫU={u^t5 Al0d?QhD]U)` Oz VNl.3vq|Oth~Ot6f5N< :xBFo#}M }^{ g ^WR_C0KRH/F͕bS,|S0q?j^ OC/">m V-=,8ɽ>d\#>c`Kԟ~[oEUm˞@96>5EH&_"wHIoHwwawN8 w Sũ2W 7ƅk<1_8}POv\xS Zu6ޫ~ݓig7kGt43߼LV=] 8g{rp-\^=;0/[G_kvo,!@G.ߏWȠ|=-P6;1%mtWlsx|>[Plk]0x+u}/qAnEǣ{^u ,:Y]d[=֠uu]NOg | ۔9J<> zSLg6v]J G9Sxƀ܃?}kǵGUi_L/{R.rjh8KO;=fSz[J$ Ϣ]Pr.{xymoHJy>C{ cx(: 0DG.9hP:#.)5b RA6 O5 /p?z*uAsa^)?]BY)9d . 3C^і\Ʈd9y^_^W2qt4䖵Oeﱟ]]Cj[\`ujd`]>hMvKM߶E |>']dO{&gwوaZlhaĭf qo߇z|wk_WnD oЊe\~tOg.& ?[%,탓Ye\ڕF-ֱP׎D^Wwzhn݇~NܟRM@BL66vOBz_M)VS{ڎZg+}dܦDN;z~T=a9?"L)Ye O-}SBW88Oc37HAC ;?`?N)*99u VO5񟼧`PA 8 lx`xti\e]Tp EOr:I2+ Ja`l%UiP> 8oao{ʂ؟)sHV{CV.gq@Ϸp/dS hQ+*7,>[[2w'amݩ8Z;ݫ"9+p,H~%>8y}.= ;a5<=@q+DpeKj>{Nw\xxx_!VJ|`·-~NjD@[-ZMG})ꎄ .oY*]ڀNAw\ K\?*^6[B$˧<'2.&up\9.WobXmG @OL~e s|ڰ9Gm6Q\6HNr3|L?<{j{A,S.I'{oz}3rOgcՀS~u{rgCؚy 9O[aDmR~e s7Hi9 6T/@XN$YYxpfR_8㣈۲70:8"; czJ8J< چ1oS9j5wNc|vHq+0ɕ~:`/M~K_?LԞNJ5R1Äbu)M;#<(!}ѣSM]" L3%̓+Q>zmp_t<ǡv vL#q|=\j/JOA(/rp W6WoW.81aiX9~_ <+tң'g)a 辁W`u'"C>:؏spڻE~imp^AC _R̦Gv/DP-}&8bpBp8Ad^X7q<Q1߽k`fo3r5׬ǎ5H4ݬ`ZA^&AO3Wxۤښ*cx4v:w]EO`J]qC:xj zX_$wEs|um;-!_;D+ 2MC^ziث<-s2Uggg/-8nt2񜲜 b@k|-@W0&/xT&"+;H7=YqJ6;>^(b#s}Eqoьڀkuۯ|~i4aM| =3`Npa)$}=z^yq&6tbҿ$,I|YcGa:MsZ ͨD9K~Kq]Pvk@3jyv<ö˛Wӳ"\4$U7<Sft:;|g4mNǙ|.hFrz¦ǮUL}P܃!kP`Vηa8 o/]?5 __b;ḚÆu 2tI߻J3Ss9y:C x<9ժׯ)n`F&+^Nt42}\kGܪh>wSu_KvH$_ejp= kؽU²z|O$J{9g bvP|lc덡,WI*kD8_{2DLx4VՑ&xq[Ӝ/sKNpm~)lb!gsmue4eShqI K) ?m'!*C駴t;nrhB+*S:STqg+6a2 el@2B)=,]Wa, 9(CPΞv^r|oݤ/x<*]0?8B1Gb]ȩAM Td6+.}y ߓ٫z$jO'^_,,/0&äpϞ_n`h9*yu_ `"f!AwGÓt쥇6?.)Wh;[]]^]Dku绮YA_\_ɻ:mtl%oXmAlk2I-[}d ]㘤̑76nV:>=fip5hVIVؐk5_ܔ\u(E=G {B*lȪwwx;nXZMN >Lݶs?w_w?n:<$q?|TA8!/lq z5Qqýտn+n5{ؙg9H/t86M_n`e96&WocFC~7酿+:grڇFC"5d!W1iYhk`ksX'q)#uK#Q.<1p 9 ~4cB)Ճ(#:O94r.wѠsri?8U.Moprglˆl\{ח[Z&TqY$<`Lw#Y6G!Fwu|#y_ :%g PmCt۹D]})]>g]&耢ԙݻM%SJO!T߈WdP|~[j^DWjѠi%LL[=xH Z|cabʟU]9ȃ_{䤮wZĭ958iڿ[n+0V )m99;6L#5WwaQp&VP lrP)CZ&A9-LzŽx:+Bhf-mG?z?WB7ɽM4._I߽Mh>[=;ݖJ`tx䇟Lh2#@.WyfuzUpY7?gOڰ=ִgCp|5v >*2yGh UۺٞL uPO._7ŏS*wx2`y=LD|HN7 IDATrZ!r܃avh4ڤXLz@hP~s"rxMY HA{誫ݽMڽo^KF|BFF. 3ͪzu&TunyGVW$u;תrb6iӖ&pU>'Zv8E&\nN`׍lzxI=gߛE;s|O}RܢEq1=&,ݞvܿ_^7L `o ziSvJqsk֎`^^+zD`; LNھ2xMBYB:V>.j|de~5FOP@TӜyy L )` ^ \D1*Ra]O>hJQW7 hoRz*Qp1ͮq7`$wU;LgN"K9?D8W20-yJѥ'Wv< b涊_~)`1~&[qBۅw2 !2؆AZFoyƫQYsp`.NS\W}=>Y~1J% L7JBi|&.^UK7$;3PUJ\9~:s< 6W1)=D. ;3ӱ @ǟ;^6O9ޒ/|Û]_+#IB`m!Z!J½{S+jV&e&RY{\5M |hF96^,$.ڽ;湦@ak$㩩$7X承ߛ&QY+k_t4JnF?;9S|-n|伏 H< HࢸptL| j/z6&P jk:nCIS]Ï=Lg52^Ѫ `+xp6WǓ g9'ɵ%\dؤ=m6ŗs'd=[QviA筍*V&<<7CDF#@*}sh //wtn۽+хL1=zT@ qLt;?-_Nϭ\nS?0\=a]D`Mp?sBj`} )=5xye?.~8>-{O??sPvLk7Kw>zLN?uA~*T@L__dLYx 2-ɖ^VF}z9H hֺϽR.N\xa|&/ mLt<61jO? hqWi:Sڤa"|ُp6`&˝ž4Qիn@aXjd\P7m}j?Q݀ 9Myp(]2JcE,T$'Sm8 ܎GGax\'Fjd vD$˿v} Wequ+z3!S(4Up x{:L`;ѝ:W8֓VOnfq:> ۑ)<`fáp ZW{(>N`;CwlzѝX4wsP=y>LM|A>lh4>^Fgq&6|Ip.8~%=\irZ\.&=bp*eNfNvp=}Vb9 ׮CXڒO]g8~=/]=^vuSNN<yE"Vn|ukM yRVnMl*V6{<6DK^ml$|c'ͮMNW6aO2[YՉMnlWUIckྸ87t=PvP-klQ״~p^3KYí캱:]4xuS)FB h;w'+`w`>9nSyoS Vwn/?|ޙ7I F9d(:7?&؅YN3ނ|m)Cqߗo3Av& N*M'ͼMm@=>r|cVah/s?Ge~W>wM׻AEKyVoyE;41]'GV>ғ߫_ V?4vʯ[?mk8' _7dTtyKuOki\4Yadڀu}f#݇#?$~.o;An@vħmtsͱ0 z3Obsq0}W&H:'W-9|)Mkw|ܓ79]c;`&skwÙ&imW^}'^6a4N;-&~Ǖ'SW"B'Gc>pu.<.Ʈ9ዃK7"7v$O/@.3ݼ}DhR&D=44bTvj o;bf 8DN'j (XDܛT o>LC}⭑6XU)K8s9dNN%i'M&2 m?0ݜUQs<~>S<קP.3'ՙ!_ ~0\"? |ϱ{Z92Ǵ -X +^W_Mx>ZN#5+b/mJ$T~K@Js&9n xS-NS-,?Q l_< RvM-dqi2dm2?&x#+cٖaN~?*m$ij48pдVUݯްfxG2y=#8?3=y`BL~ sX7OZ hluF?Zypǻ~nvkk[-' ެg[ʳ]oe}D*Q~$SJU2G^uMlp]^޷9wuò/^}z^{vH=k:v?ڏ +i4[&IV 3uaH oOWW|0bx?5XiMm[(;]pYOhqm8߮Rp 9 ΋u]ꮗ?-9O[~͹GxMu/ )*ꖮYYpur.z`WE+p?5P~]mup{ g?tu;nm&>/y(-qoGB|? ^52A_Xk?J*1ڃ}v pߊjoV╌/{NqU9洟:H<YIl|pfwo@O췝_mWj2Oζ ,?۞vO_;lĮg$>I[&տ&р7+كq]Fr)A1JqIHZ)_[%y%8v8'9GÇ-h_.!q1ŏڷa{yOlF17y}>}^o]wxݶPÿL(?Qd~JrpJz4^;\]Th@[4'[9QnF #XW'Q$Ti'}r}0SYC?]4@8eT桶h6)z[q%[iR`ݣkssNWG8Qԗ"_ճg#nGz-{|tJ4=܀e@UOKu=q|N ν)\Z 5yreW#Y*1h g_/޵'ێ08oq?M8Mr.>>>[phOގn7|.ތ=:K:APk/E][0NpUƿwvMgㄈnrˏ& L}Nuozypmi?[9!p:g̭r{IGMlo5{xl}it#IΛ$ )Ҙ`HmJdmXNcV gPL :e`_ d|ɭ=<HO0 H=r{'Wgs{`Ge]]'K,5G3%z ?$g~2o߃>m߱+ ocL_ώ#U#@y`GO*ް8M"orR͕ D\XLvx;ٝǟf0r+MBUaCk{W Jٔ#G=,_> ECdl|g㭈xb~04Xv|õA빶M'ѫX %u *f5W{pwuFߠA$Yha}W<󩄶8#[5`3Mn2r]e]3=|%]!|ۅBS_y=K2Aol ֆf7xkN~}v@t7pד>Kei , 'VpkxV2,m+3A00A/9.5tOWn{& _z@/~_ZBcb {E#n7 3E!]t+O!mw[ڼ/]nxVGM*WՓ9 W{ݤ]8[p( y3_ݶ!gSڮl_~+\N[8۬BH >~បO̾sՁWK[@?9R&e'χ??9d~w]y-<5<_lw1a^>,[*KZN{8,|^"a7S Urc7/ jpg>vo1:DzAa>壌`pW'I:珯tŇc8;1; c׸p3Ot8!9wpi|ip=ٮG d;7{vFSYC-UT^#?(;`:GO䟝t G!&K'gTF[ H+mu[2_8U^eDJhd-g0ae3t^Z9_=>-4iͿeG]yjPDJ=AR?߽ixя:&~%c2YpQgpx{Ʌt֑obE=J)X94{>Ӗ>G簲Oޜ.:VVt-p䏔Sa=6@[ bLL>k=i_3+k|"?=f/O]$xO~۱y-x~ /Y/ڦ6kK<#K3[pWvt=tm<,dTX$p-Q׮to'_{Bo2x ouK1N־ o[w; `oܭgDjD 0h u5s!zi1>ʰeACCsRb#Iq}+Y.Ns[]you)5ڔ?rax]0_vDiL)ϧg$\ ZGetx.%4,/gJ֫{J#,y;n D\"ox4q*Nik+9X<^t@קtkǖ-@Ӟzʜb]Ձ},me6VUWtN?p-: 7 & >~SJCfe[ރ?gRۦmsOOn;g`lAuH̵l[]*-WhU*l`IΏI//dunO&/oRt'ӿ_!70y_ճ¿- Ok86$WEXĺ8Tadn] _8dg?i|;*ŭvm?էDWl(TY9t8f7A]YwSg% C'px`kO{j{e0ѯAлI9F`b"J(,iϻ3NR +J^ n35b2'sOѡ<@8ǣvdPC\)"M_]z -Z;-N.-ȫXuY'٤I#zSY(O/Fa꣥lS'x}}\\?Z-AH^_kpS֜zmNkPHƸt0784O-$se00U93SB&=V707{C`pRqeSt:eOVQ์-O(~>g}0#شO9}Ƅg{1*Ϥuvp ƒ+_x}Os97Vk:sdߊ0m߃~IL m&o23{Rƍ*YxSFΉU'dZ8QɃ=̚{Cx³k^]d%zJE7 tTp1WVDN6>cⷣs S9vx ~h[z}ƚ ~`nOYK?}@^=<>^8Hwu6٤KC阻x%'^ ?P#19)Y_{fZ$gBZěX˹G+occJi{OB2}YӐ}^ =N5Fɱa9aOf4ˮjK  l^xu.?tN'=npzx:m{Nqo }pm ;wÁz.x^~ ǣ=nJ7| @Byzni؊Y:#nK Y6ήu$8<<& VҲgoo+;(dV7cgIo`~9?BxpY[en1uiIe'>'bd"^`)]Aұ&$*˗*@jb~+t,O(zN.4YsdW]N~xT ^zq`Jvv6~훔7Qĥ=%M}>w!KL+xڠܬJ24p1N/>)'ySNkA]"wd)2􄊀_sDW.]`P˛ZápjiRqdh7:PsNZ;{+R6[ZOxUVŨ" lryIRu(WolU g 'ox^g9)v[Qo*Fs49{b+/"]ȥ!+s3l2 :\VXJ+]+o%6?zѡGPpXu7,&muC+[ ݾMܠ[UVJA2ɯ0hsC4'9Zyp*Mr`~1 CЉM:*c%+pծ D}Vt+OU-pyx} ᆧq zա鼘?a\A>鐆15wwkh5zwqؓcvES?aס_^e ; }پq!ti;MO{dsML>H;Yl- " [i_񽞙O?jW}b$\_'ky, Lqc[U Wy]FU|s(:x=F-&k?W؎ߣ8vctsc3|ey^3IE5^?ɾȶG1Ƅŗ5\XИ5O9z AHUQAa*4_>_l5M3ؘtNk?t0/F0|}35?CP#lg$sn?tP6eLc(xxwE(_Cw<`| K:=G5Q_FO CekXouelckJ=tC>sHt0&Fjky<]CNͧ^zW`&_slWW\k`` A.wHj$9KK8k}G_<9fI91:oc`++Jx6=&+#~kmeړHAf ɜM1]qܻ&sכˢ}t7:@ l_9:8?[ɣp$;$~ݪf~ܡAx; >y=9XSǸ}06}ɵwm / omֆ\8;}__n#pio&xCKs-igaLz obFݑ^ سRԁ} P5]! w>U>i'y_z)Է%_Vw}E╭\LZlqZ&4؅-H K?`=D˓-MoLr\sorWv*ⵎc 'KNq21by(vX94c$mypq(B{Na\P#@?o F>ػJW4k-|:|ۨƟzay5'h ,>uCt)cZyn"fx0Py{W&n_T60p*/F::NwۊxmAA^q_3OEU+n?> :)ྍwALAuΑ}lc`=:x_kec5]yѸNO4ml(7ιĻpb۶_{V6O횤'Э+;_Ʀ[TR5E2ߤk/~h =8e7`kS^׏mGA yPS|?u)0)a*B9#_y¸xOUlNrF 0BBd<=I&7|\Ϫo|x]lav ԫwwul;Mԧq"M((?,g롰y&V95lŀzhs xu0N6t3-~L<ΉEYԘ q+c8>/`GλzOiWo'9>[r 1%,|h;+>~T~EmMh}TR߈QAJu/WByc&+ >x#6*\7 i@;t?Ϡc@~o+#s'{m閝Џ~}PaO=Lg3h3^-ӹ]=}Il[W  \;xŖn\y:% jTU?8~-Vtwh5X,Nv>w _m(nɏ>r|(?oX:x$W^}n,!pn%D0;&OW8pxJn0FkvkbF|BUK}5y-p.֤&t)Nq1$d n]<6{iSZ(oO0;L!b'[k%?{iKgNIa̠JLBwOTkewژ\ 6۶PN} [)_^Dtˤ!<= o^rHc!O69^6jjvq6?D8ui#G oƛqm<)b`9/ĮNQ((C\3 ~яH,U IDATOARJ4vЕݪaF,6ZX28~CzZXßBrVJ.Ω^$j|M"ѪZxڿt/vWwGxDGwoT&J7|@xkR3Xg`$O vQw8۽n5Mj?:Pf؃q*2/{׼t-3u'ږH5̪z쵺24\0@,*|#=خL7AlU#o?%O9;q8lxFsMn2U\ t8ROA;Yѡؖ aߺOa1 j":mjߤ ?`h^|m`;qkW?AL{!bӣID"&naud<:k(7]N>ܙ⩣NOڜ/1a/݌͂͵~D,_{B}0NfFQ*v].m+{{a.c6m mRVG=nG'mc7s Oj+=fVkѿ^Di\.ÐЬhG?& 0H/A~R?P)HBd_9""w[ R * ^np*D{w>vvnv%ԽO W^+̸ÆV'Gߢ5?xLrneFsUfBy`ֶĖ%J+h5|Hm1\OvۄtjiYS`.qێ_#\I3l|Llikxoqv*v_?Yv(?HV0ul,_cWzsl`3OaWYW6:' 0dirA\yW$*;?+fwbӓd}9>)O;nLΞTlUXr lnEFݗ}+@4}ނ|H[V6`J66Xf xY ^]>G楕&ekp'z4PüruOnE1  / 7>LQ*=]IЄmQ}n&{赭-J⡟E_a|c^7+jX^,-ҋo͋1K1O?ҁQ5r ESgc>g,?1{tM(/+A~c%mުW8fwJ⚺S^;޸WÐA}SI<ҿfh\\P@N()uw%-ݣ11F3Pfj޹z\LkVrnݿtlHO ˯ȏK俇CP$Iy.;_/GW~dp،ܒ9'Oȏ$@-M\FߠQk$Y/OLxD啣h=V.yFr<wx8 W';!H>DP7^xWzm8Iu0(ͩp2骛Հ37!ך8&-$&l >s ,76YW[Ӟhɬ<%2 .Uf'sBVvo4B]y2n6  L=׻i#Q9؂&evMdWwx o8tv(d:CQiīw('<| X7_3Qmx7g9?T,pn<:0ٳS`NH&qW~y tcv*䏼]=gs#C*}-TY$s:ok+ODwxtڽ_H#ot~pn$2]C_g4kd~c 0vteG"{қ#hk'y">]cKoilͯЩ^ /yc76c:dَH5j1 ҡtFhis.)#rD6U@|2t k :'3G);4$}ͯ}{^g,\D͏o{&&_uli] i:cx #?d)gaz+GG'{0i㱻7^FdU1Y;M"vd[վC\,_Ʈ`7B;^ɋOZo+ׇ]c}&K2}MHlzz& g Rv3=qa}.+]Y?B?-.]|ǻ7ؽnC{mOo?!h_pw ̼'L;-R\?_o1rաnd+KFud{>u&a>"ӷ<^r%- @!DYËK|0ȅ0MU${¿ɂ[6`<.*'$>:N7:,ZY U,|ۚ?Fa(G^ۨ?zmk[KƃǑfψ" hOS*saZFd㵷a~iqPh[?~%@\+UO u,o@vm?nle2Wmi~ ` &Dr<` juCi0Ϣlpx%]Q~F&ݝGKo< O,}NA c0*7;w`\'߶:5? G.1I|f|U^j1},^o`b^vol7^y_%Cz$'o NfmIߧ^tM%k'>{$̭~߂ܟ[5MJK%›`Cb B&ZYU31q0NgɓnKAHhs6ƘX9>2[+9թrud<ɊdQ͎8q ߿%6f+6>!sV*} 6WN!Z`ݎ3?6o(O䨜]goeq|wW?ZqWXi- O_'7}# +ϟh\u9`|>Pkx[ȣ}rtW5u[v<%yNM&6A9r =1 W?+\\ FoBͮc$M5[_.OO&~W,lO{=fuCNl01}Ҳ d-'O;|n[݂Ne_MFb}ol0FLO9<wb/ngcA~7rp-tC`?_:Ej##dp)_8}W*SVOכ4BOww]w?ޗ`ݻOƽ63QOg hhI;_ V(1U?Gfw yςÛ=jor'G/T B?y~̳3N0+=:Wyڧnogv&d7ƒx٭dL͕-[\:,..>DQsbq2]y1 hu lmΩX txe>|cI u#Ȋ.\(ix+~[zwqN #fkOzt8prp-8`I9g;J]'g7v: ~=oo0w50& XM& !)Rksu 'AiNh`G˛&] uG_%/mv-_SvU6Py{_'Or(ߺ`sТ]H[F_#5*3@fLhU7uu$z *&`U|ҧ=5JNZ+|؝B@jc| g}YBe?A+7X7h݃*/[$ږSU{OHPn!rg_'{~pd{ }&Dh J[g%OHb.l?˄Y϶އ= ec O Wc\/>ݣv"\ &Α_R|9te!{د2Y[v_ů #tKd pghU[q].{mQnOjl}-`lB$`31"=O'|񩍅tտ Uヮ`rDCPSS1tKU n l3¿[G_Ixmnq_''p,F/ݟMZ;,XFN<+cTh4q;/P} | U[N ,ЫN0^Ҏ?`n4Z{6gOAcK:nH*ن֙iWD3_p.]iwxʤ$][߯gCj/Ώ?i"gu1/ 2-Id=˿Z0q{!mxl<Zy=?b.vO?Db/7e&_cD&+F>3[v6͇AN=j5F\[obnD$1blRn8٦|BOVˬpJ#kM(7,›xDP?Tѹ;jƗR)BUsɢ C)Կ1:^tacvc:"=<׷]D |qA#>P_ZnR`}BtH77 { Rܕ戊 kx)KhŇWL a4~D% *0!kN@2mAR|&!u5iUœ"/A$CC ATޱ: Rxů:3pI% ٕ}Ѐ:SugWt9ã'`yeGw=_6{DOYEM36B5zү߂:&Q ?LvqbLa(]3 &5q>l9˨tQ!$'xK`˼}@O3g`BVXˮ%Gt}鴏d4!YuZUCeWZG7M[S|h]DAV{mzδ;΁^v9+M&ń`rXmʎO'cI82lT|+@;XۻMz$ "h)m43d0"^y):5 W Ox&70k;DsެQg~)[vӏY ~ݓ ma& BB.jɧؾdo+ {7,f fS70f?S}dtȁ0;^OX%R(bd$ĕ 9v*h _~Ū\}  iiݳu޽pgzٓ"N$' L,wE*ѤظȃmV~0f>-$v;9d h Ӊ7o/iLE`*_DiFhoB(Ow~hiXy,u *^gf󙘑q1iS w]}M,tk6@|v{yőr7V~Iocٙэ_M{t4/X^ݛF+W͖,smђ\g4F}[ 1Z_/nV[d-z_K=hbGl^q2 Bp>tiL-?W7B^𚸕@4ƺ]fĘ|̜lyYZpa($+=[G8?4   fe9 \oZ=1 0Mb<7#peBC3әؔvWn| 9Gg j]79rMΨ?^dA!g]Gz}l j^'6a[g'$4O;|6=8$xm2Dx/2 mw XU4~xR)+OW?*I~'ʀ's#I{&Vy2=:G?W` `9A/SCn`v7w`?+@{pVr[+իs^nG.Z@~^rlRM-@ab=nbrK~f<%7\]?LFfLـ=!+|MqA%b IŮIuFk4b</#îckv_ D.2~ >[#ejVy ׶m~}Q+(( A޿Ώ#:vUdg+}q;Ì BY|9Ȫ6W.>Ƈ.3P!*\"xU/>r$ct(ЖyE˝l;L؇Ȣ&%;5]s5:6-tFA&:*䀾_yć_YN[7|}'A;:rh5z}}Q;ȣvoJJ?5tA(y)zO*d~A*t6.#,g >a7rKt]yc+?>7w~q&}!E̮S:zURLz|r 0 cuߺx!IjC39 ܮ]!VAg U~$uHOۻUf06?#ȿ5xbW~'pgzrk~k ҇TҾIO?4Y8wF8|] 2tdMLY8#=1yJ-C}h~wUvv ǂ>s'2zUm1v:! [)K^d^s23yGUXtjΞg*uax&S;W&1e#ö7]iBD_ vFN59Z 7ln:9*JMgP\' }*l@pWc܇svθT-*>jHVl|v[M9mgGж7n!(K?>"9OYbvA 8 Vy ә*w.b[iL;'ug2 (EtK٨7;ɉxR<䉇=7z9#7Mw%΄uokA&xl~ܾ] mWzX &ϭ __Mg2]jWWv/o5*5 _G?H-I//jq?;KN atx =K2IotV<#KmYʔ$$. ʳ|$M?*[0oiQ.'~Kf0F# /*M4_mwҷ|dq v)}2걩־MY6ZpkA3{j܁N|-í:Wƈ׶]ٴ*!Y{@whV [ lge)8$7f]8!tU`,7{Aye'1(nc}U8+ F~(LsS =٤Q }k=Cw ҕ^Ē78kׁE6'y ~S;<6y1p'7h2գ#chخc<|Q&k(dpicnE>7ǥEÕL軃@< T6'7:I_2aF<3ѻ_YDI_ V_bUM緥VxWmP'- M IE7 vi.rl>~" 8lgb@++~,%Lh Q#+U25!̎ZGh0%Gu7U~}wلDw 'P9ِԧѴe8}&OeZdsN}e.xcmĞH3 A-gdak*7R sJt`p%M6:z߽Gb/*ϨeLD&zacE?`yuVfד]-GStMMdxlj'-js#?oA}BN-Ye`g rȽ1`eT&΅X5-`/z/`@5-GziY=&7,J঒WoǸ!y^/v/_LB5n7&{bFy!HC:z; 6L|#HGO=[c{/6oGGh* ?ە%O|&>b|>ҭj1#2]_ VY 絃٧ B(-81!+H9M0&a:Il WwF pY;BX7ЖG^6 tsLoFۅIv? Q}"SFU@Bvm_Bjt _w .S;]v Ǔ_~ݑY&,`+Lm_H.v͞ '.E>⛭fӋ6s[3ϟtyl_{vp`/&yP\UцtyNege0'3x[xDK{qKaB6gx,vO;X&وT;Q&P4kRSb:by[>֬='QRRGƉvs[ h։v}'AlW"ߪ;ŌS -=d7>Ntpr}EwDF:g]dP⩱vLdUH뗋+p&{`՝.KHv2WO;SuO2\ |v_}I\pľ&M>oN:":]+&uZps'ջrgG4A%! CXT`ŸDbv.yڠ 7'1(9{qy'fuv4ؠW'/9q[Gte M|fuGەP~wW5I^?;_ ~hO|FbW{e_w^apϤ2@;y?\}3O8/Z}wO6w&Ҷ a5f:>]T离3-h\HxB Ͻ7ټ7씼H'?m1ޕmAW߯$kأ;yY(n3Ҽ/5A zGIpkA24nXZdG ՝$5ucu_>sbB iV wۇ‹cіG :[ڲͥ;G?2΁~?N=@8q@y>Y"(ƚOFƿEs~~ӏW=3Vu} ;tyA۵rzY`{a-;~ow~rΐc9 j 3$=`ØчA JQn٤h2S+g{N90O6d |鳅{n?T#}35{dm*?z-84X@sM٧ ^[9/%c߶ΦtOm'Ҍ'>R(?FЪm;@5Bg"^X[-וG 0~IA.zMH?JI՗Ч| pd?*94YEx4>;w/!.Gԝ7nI XCjk]Qhxw /4GklƄO#=Y毕iO47&_wp%ED=qh_TLtc^>X:MU~ _7i\^|Ʈl٫[B?~&f Z[,?N:`iRy:6t&)ߓIەacH<&fN9x+t^ fH'"-4ǚ>yNQpeOi;%s0<<0pM°wߜt8Ԭ7(y m{@r6_ \:;0ק#>KQ|yMVn JAxob~`z;)'_ &՝/iWF\+;C屹i#ע>&`^;3@ =Z@v πʟ:ݮg  `w U mCh'O_6}3ŽI`^yW#} ZDR 1dB1[|N3p?ryl۽/s/lߧ. f[' ՑѰEjvzNo9V&B_2WCz=3l4W]O: |eNb^KҚXIu=NU9ms &wpoylY LգH1)jL+>xpo6ҨI,+o3IYc-YTq@3 [Ѷ؋bZx0DC}GP!F?oآ?Lp Ed/2E- IDATa6> hrMy"ߌ\BK_*|w0\:7mE8n[Abieh9>EmJ4XnTbdܳ $gӗyxɗpB}̎\˖)0ggF/FMo{+{-ZSO^[4yr`J+k4Ib!ny^V~ynٍm$4,F>räLc̢'_gbSFʎm 6i˫ӉKB 𜗂7U6^Ĕ<|շ{֮l¯sWwvֆ)hw1@䪝/ƟG}N@Y/nv ,>zg~s_D01<@bvH,xOh-`5,֠~~7GGvٿw _<[@l'/օ W{ə tѽvLB0 g 7`Q ?Uø̀H㴺Nq(ZR~JdAM1O)R,Pv n3IEv# tcI[ _;-椵s2}ə91:ܽpK֚B/Vό:QKtױ0C1 . bǑ҇ -&?o]] Ҩ9a@^jX{-x\_̮oh1 F--&{'yL [4wzW5Mͧ }`>7 鼫1ל<9]ɓj `m}ҟ^ӌ.ƌZ||3ߍdV[4A܃M]:K78Wpؤ=C-()Y7a; .@BL[YpοfL&/ګ/!z%v(7?;1 +?a'-lҋ3:LyhfHs0&ݞrk ;>zb`-;MĪ3v:}W.[ǏBAG&v>ӯE _stHBl9[5׶w@h/'WSGր/'Sp?n_~VETpf D.GXB|ƫů'FBš\ytć8!hRE瘮*W=6p^(qV:m˝j|IN*hrSO%4=jB yO~%i[Cv'gI M:W=qüB N=d vgJ0ɾq#vE.yWϏ!Ǫ~$eWDB VPZ?hA/NhSyI6 sF~~HMћ̂H]uc}P OA@ZeK%vR ZY ^k&x1=.OiOOՕ?d~w; /^C #{Gl1~㍆+6w]RVI񰸋ÓTS뷯5묺tEZr<U˖b3fIhѽClrQ |;?a!>b 6&{hr/h>xv~ӽ {' =4% s낕dv>8 2^ p[c\t& $ʒ&CJr׮ؒ|`EGmCA;ݠ+N˫{-F椫Omdp:M#g79&4+0gI?:{]Fu|K ۸7t-'To(xWK$=ȫ 80xm3xΏ-:BܶQ_8 ֫[# Fg-MF6tOd֤j[7!N.dY] 0; n(mGgye(}*fs3_~St\_@ Af9ӓ/ >ѡ7^,97$>8F!%/XAm@JxJ#vc27){~6 G ^R|6o;ۜ/'C@)@@''?Ğr<2NG>f/_|Rj]U֯{v'jKX_OsŢOõVuUv ?w{B%N}*6dg_bud[eZ2vFERsz Q%v/|,g9zpkWC$sko9rfɝٞ ]&۽f~έ}n(᠏gɥ[`'2\bၟ&TtqL 9 iˆ^*Uǽn^; uF肣cU4KBzK:~[W[+ ?5u>h<-Đ Yx8T.s"k$6hPVyF'F+W2nF Ft}y24Lⷧ>}&wDdvt1v$..'&G 9W LPsWxq Z6p& mW=ߕ\I9^"AI0X?~eI~ARMlޕ١݇Q`]]9 vc~t9Fuofߍ)ւ25|Em0Xm}MXJai-G0=r9N}bRCbMY>/}ĞʳMl 3)'AC}r:cQ쓌ջ=Y kl\y{d}ҩ>g'K8Z]/{.''j}@W&+nwV/YB[ӫ;]?d+?}>ڣ=,]t<}tίN`$Mv{,~_o;6/vSCXj{ծ{W<]ci<;JN~xU! or$9ğ4{t?^[4\} |fr}zA5n3=vi{2ՠ,}FNx?֝xˣW@u=읫pO!|ނhVI[Dz𭂩lͶ"t.TU=~tK-&x(Z&G7m!\mU;>hϏL 3c_AExX,-:ٻ聄?Qs_|`:WKƉ3鲛!|V%;wp2^#z}fʾ?Noɘ,@vSߋyvO~Pp_ຯ XkuY1qv cőyY~s@O?Aԉ{2~՚@*EpǻX |O%&`N c>SվV-QCv7K]prmwLR+AP@1.˄wϠжGf $$p:&W-ȸ>^dYbzplL&wzm[{`;y vF 8]o9܏܊Ve6a=ՙM/@toi}] ?ڷ-0zITC}NF=p;V`]M= wHmW=~޶;ئЧ&1ۚO-(C;3?Ճ Xlk{v.϶V,@=xq5?AL@B_G&̷>`t$/EK,{=*.\ga ^N%#^St:Op{"'\$;9<W6`BiA;Oփ% -d!K]TO;e|yԳ8}&>XV~>1V]pf|rPA߼Dd=MGο͇mvVC3ɳmw7fY75> +gLHPQ[΃yyMS%\oLqQ:^ D~zŜΙ Qsȟ^vjGrbTYp-2 &ĭ#uv8CgHnbP&o59>a1nQN瘷p7K:"<{MOD?(tב>:?ܪ'zA6=we 5fxbnA\x/Jrzy>%^T@qŧ'oi4 g>4$HAxA_*6տ-.xl(0st4.RHh3)EZY@|m3WV[@m;jd& մ3sE?۶m]I&zf >[n'7Sl M?ЁЛֻځHg `4`ѯoANxt`鏎/rIw8W+s3ze'rlC0eG5ew%V[mIvxN"H6CdÁ6f*W[~rW>>Y]5ںQҾI O xR>۳Sף&kL9/0fDm ihosU}BJGK:웃Mo!^]aX>]~o+@ [駻\eGmФigd /'ɣ6;?UfZLmzprz.~w_} ĉɥ%u{!V"Kg%mU(oEY .YѹɿBYf-Dch/E ' .0v#&o!0B0*G_#Q#c70b=?Ivρ3=AߕF{_3z'cNn$jg~֒'LqB0=Vnޖ`kCSv"y,IZ^FP[=gًDa>ls  FUsb|-hkF~sMTo:\pP`'ݾyɰ>~j]`nRxTv 3Qe6ZdZII MA'l`篝?.]}s#.R6 tSޱʇpU ƃX+f$]g5I7i-R178(FZr?cuД1;2:{jv_X{g[$%!dVܠF)<b}/+ 's쩿`Ms hvd.:[DW4JW@|هBHOkɴ~S<-l`g*&kG8} |Ca`}3nsS6J;܃zdq5wBȉV1a›j^}fLYZ^9o=@==dpatf8'\M@@Zo M@j -guz# 7!Ս>togD+y2x?/hmk٩f99㕼o ηX+ _+ 6-ޅ竉ofFcTq>۳p2,)|c]W &;?Ht{j^մ6\~'x/)7|6*q<|k7/FN2pv\dxl@kAl_>8Wsf{ /*#@ܿ- "E$3v>hU3~c)MMrW`6;y(_tOtU b~긱N1 ƃ1 IDATSf7/vWm+k Ύ v̔OЉ@ꯊ/" &܇ n҈e$MퟱI(FA[O^{rEFu#Dm㯞 8yK6V: ^tƇ }!9}?~P27r+x ߮5pӤ48_ȂKm[UMx 9úpۤؕ^&)0 ޕ˷0kGyV 3Z ^;/ZV;wOYv'﹇Ώw/[ja}s[|<*L|B?, [8h%p֯9['l7!_nM*-G[h #rdO4聃 _Df{p.Aefc0.\=9Zh{>4ʓ4j8}`U~"c c!OJ:Wv`B$>Rvb:0&?bkqݤP\tjga5;43 #~Szg[j| >(BpߍmIl/-H ބo=j*=Լ ;t|E#gw~[b|cKx¯iipv}al |8owh6[|%x+g ~MCoP,én_*ʹ3+O4Q%N`'b1?PViF t^kEi_[_SϢ?zE3ڽd-Nl%gbuo6~Lv +mCi lCޤ>}M~QXvs[QV˄+v5<9{}5+~٥`wx vU{IU?_~8zwveHpYOdK}+FÄ,%VS# Z,9.;^F#۞ܷ+o>>6bűg$~&-:'TB 3e@Ϸ}D&y &l?S+O5v4|1Ԗ W g[xOCm&eW߾jyxQ& ͮ/sU7#W\@R.3oDc@Fj'#-o&tȞo9a^~dL(܆J}m#D!n ^}rO~㒼=5_Rǿ:;DYI|ءg$[F :z&] KAլZߒŒ];Ƈ*IN'#ك -:~fZ?cj'n`b9&:]~ԃއhC)PP?<z)wr;;C0h0>a;]/N?JBsr=CDjt<akO-*'2 VN(N-]ҽrvyLXG6-}_gW;&Ez+&[kk~dE A4 ދQSǿnQh{goU|rH;L7멉֙ϹoG_vEL獗Eʒ<s q^OnoKpO6"I4Iv|q9۲ge>`w*\Sأ~ #4IߢCی5NĬ\Ҽa9DϘB S K>sFe``VjP Tui&ZR語I:5Iwө3HeQT@Vb>4d2 }z7[8S0dx3. ؐH<ꊤY 8',ؗŚսNsh6(mn!.?JVw_} W1ʽs$IN-{ğkҢ3ۿ K(~%[|W̾nԍtWd'Yک.Msז T%+eؽϽ~W_:[m]Ome} h˛N7?޾3d~XBQ|kXG; ="_ GP/+?*W:}Y q?_DiIt sK<2ݕ yO`ɘݡ_y#Bx8>D:LMM)m8}.+Z3sE^ tuO!E=~ui >m)_9V#_ v0D.ё\I* D6YPڽl! սڵQb>ҋK|)鯎бCy'|ғe{x <ʋ3ysns^̠~ diĎ|&-X}T{rG;B-+&}NK ; ^[ףnxV'cw?;(ϪGv Ƀ67͑X>b|#:n,)(@JGLd 0[%G":UUed+Kk :d0OԞ_/D-^}k["b1\MɃW li9x:GG+]nr_}C;xdKn#L{!I:v~cuTBUv6ۯ%hYS dÆI'68xdM*ɯk3r wc# =.2gWy(4#+(^G&{N_HR"W?!}QlۤG00ZU}p]^8'j;m9`P}oh `֘i͟2lioIF+#W`07k oN|ji۬3 l^ڜ/c`5km%$UEPXX-@;{V7:S 샞+;Q9ʃTkJokA?j ョbmTY{b+p>_'D׷T;^ঢ@ `-7&nv^--dBc{7@l}8ld@ϐ56~r|IiՁ w_nʏl7_"!ɯLz]gb,5UA8t@:M?3~@*IHGygO!!A1]7 <̣=f]y aY~<ֹ . 8ђA }vtdCӋo\1Paׇ}&Z\ę٤ߝ=[,{KÛTC; &_CK"kL\h~w;7es7Ȁkf6|^3o{3,:_hhKɋfsu[VnȊ &ҕ6>=umw!N4ٽ6!;mݬ=VÜ(떌+k[c~kPaK3E|dt{ْ~xM{%̧`36( A~R*iYjJK;_?X1NwlԺ[2?߬oжAc]\_4}|8n ?G^g>w嘆C#dC0ꥧ_|f` +Xb[Tl˚LsQ] *w]ޫAMwՇ`٥/l rs+.o\_H Ƃ1?:^>]Ajh>3Dz)}a6nabVBg--ۨa1r3_)9.8{己!gyb[eMk k`ܚ=Y4Ir)юQC;ce*,Č c G;JL`왾C >ZtdtoYϦ[:%V.ozsxxEoVuFyOm#8ՈŎp]?CoH;62gVGl8 HpRS,F2V^}G#at>ϐ:`6lb3;I:M[7MFNwOv7n0 ĪD;b˓_{] ({媕 9_񽕀(=L~=b(~u]iBv U~P'P0  EJh5m:i4ޗDH%<˭bA''FE5k>ktG]Λ0_ƾ_i=v2DwG3'FҁȋXAW(v oU`> Icf龙l>[%/3Oj0Xy|yh Nj`&B~ٓ.eʨg܆8(P:;zg!WkÁfs賛>n^>&#w ,WȐA[uId,f' XH6e-}P{`. &C}./Jҳmeխi˫i ׭äX\lehK?ۇ{lԾc/!7 }ntC/˯ 9!ҷ5W kL@lȫx:Q:o;7Dty/3[W񼉮gdqa/eG'i0aXs]K/P'rKs9Ds X]Eΰc]A(sg|GjÌ [pxThPC_h;m#o`9}it@| /{ƫqFc, ICJޯ=6XfKs1t݈6zKt΁KDXE vAY9įY3\,w| t%-Zf3H,Br?j!pA셃 8ߺ׿C_t"&:>9+s=8́OP /0? :3xz}t" mmAL[W ?䔖~q@ #z \DL2-? V`>x& [Aڽ*Apȳ:32ʎo|X3Fd?]zs+vDv z1=FNFgϓ`rmdʳUvU8RUwަVWFw4[#|je A"vYighm2J[2s#@wKM}).g 6 dGǏM`>T_o6Q1&41dUrd(KJӣ!L焨8Ns?qa;Etjn51{Ek汃O@)]#]!@ ؂k T0͌o/>p9cT9egfӯCC]NhkH`/<$/YMhu駺NfFnW ?ՙ(k!Xwd> 1;j;x-2q;l\ٞ\7@Fֻw_X8Z*"q!be IDAT,I1[ hɥs0?h-k |0Y C:]gJ @'4MNvJrF6w_},1[pa|G"dtLc]P_ҩE \ɏd>-{*E Fg>/:~O1ۼdG mtFRSu-uu/:k@V=>6y}/{͚9$)`bAorW<^:;X>./W]n/mj%%z>cG[Wm2o'M'"Ǻ}@&`# a=XQZ[& 9/ubJNR H4w ~%ϻ +{I|=c8j$m; яfќwpO,`֨?AM282U4X%™VV<qyׁivHlySzhu鮑kKCgA!k}Pha3D]FA RNw{a~`2).Y-?{jrvBX|mu^hMtl]L)лS䏓~kGϿVo,pg;z[U~xq-ϔ쫳 @G=n&* F p ͭD2n[roV4!A:!Pt (H]zȲ`w J \6e!?@>"5*[!LGo1Ebx|pd-ytxo#D_G'vܟ?m%?l3;Qs/'sqG_v_&Bh=jAA%|6>*= ]NĚm-)D&ɦym\"~ϔM- rYY;y~`wD(՗Gs8NF1}G].޺ eju%MWFk9^K䋝u.v].1xf@N#&dS'KACC4@Oz8U">x11cy5`$,#9ݼ:@a}4^!z(jfl`@AGyxBg9ү학C-'>-6z_$D芦_e߻-_ݼ7.X?~o6oF{8[$\|,IVx@72뇫 it',w*@o6v|  y/[c`[rSѼ=cG`7( ߥtN*'X~:Wѣ=Dpr'l|@LK'H'T>9Gy[|`aVފn^&.lVζ脬Z>g}77},J'߉`C!ٔ6esu?>ј~Iv~=tN^) Ԫx1^kxtݦ#,.|ŧKE+iN6+\&ȇT¼03Q!#^=TZ|ǣK'~' V ͻAt>?{|?͆8VڏM :%6vW^@[pOffqjG]!|mut4'z V냙;bXdCߑyf r" :jm,c@9&x_5Nvr]u~<#L v)#;eL0E Բ5ܟX@]RATFmb 'x3|`PTAÍPy/t[|8f&27hUrK.ȀK| QUp8{xP]w z濆 жx, htbkO u]M8ţY{aN-1gYFY94AG~]o7|(]T߻1mK.Ȩ7XR ߒ߂yefA7d~~i%#%=%5ݮk:v۵<"I٤3F/uvν%N~7C|j{4vPAO;@ucbuHN73&:uK_{ˋO'G} "s6ɩˢfm'&ABiOM喹sY# Cѹӕ╥Jc!XZ] ?7 ٫/ćz}e(ֱ/n'Z'6QwA##/ͳepkLx>MVQW\62FsR=2/>7Fllr}btlvnv_JyҖֻޥP+ʀ}ȵF)M~W=v]rqx)93LŒwo@KSyV \*apU%Xvl.{}T'<_q<53?̠#Qdo䆋|y3b{N 0P}p^9Cn#MqߤԨϳ%r8?Xnd &ݾ뼻8:Rj[7{l(YY 0tף ϳG:oT.龳o\a&{- ^{斖)Y!a71k.U$ d:\2, ²y*ɶtodC*~jtF\MmwӌWur|.=.>mt,m wY[`O:٧ tSo:{c`eG Kq+` >&z6uG>u*ZW\{r1Mv586hij>eVp!$f';P:?|Vx nOٕJEc~# 6 VVW `}q7s%o߽ C3"gA]_}G/[;cvdOɰ](59tc &sN,$ ݡsl%#X?_CtM&t_6 RLzfo`,zInK>yƆ)Z!{.p Et#\/s 8-b)ʌy^Y .f'fbI.9W"ٍ~$9P>YdvJf |p>qL _ Gk,ٻ: ?d 'i\ZwP'8gHk7yx#fg΂%td^4͢q{+`}nm2 EmWՄh Pv#o~6ccq͟l(Ȕz!VnkQ_`3rO>mR'. 24pX}XM0= tk'T}k94:߹\gWu-d}OKVwZ>{Τ+m%M~Xh6G#ptĥgRo兮<;h7rv_a圁?a̯Jd+/WpE)զ K C+m|س=Tl#~rI"O6W܄ #8 ήMlӱRgbx9zN }B7ÌT(c3l@*>1@SH8kFĴVBeE׋T-Sݫ8[ ygLJD ֲyxXi hL!DjA}|JM2 [$K:TYKuTt'jǧN࿎@Rl`Buҥ`: aSry 3Ɋm0;bg >J[^/0Ѩx=s*_cG -]OMfٔ|cHDĒ}Ѥ P8i G^bm9ނa-ʂKÃRhv.g1JN~/޹|7|W'eoK % |ꯍ, ](cٷ-o']>khjd$?`O1֗VLvy-³-HGwt\_wWvŜM9V\vnu}3Wpwn|Vč_ 8n.ݥyk5`P+ͥF39b>ݗm^:a6_Z`Ky׉ۧ:Z0Pr?;.lGLZt^^o/?Gh{ez{i]ޥ~h90n+-)K%mՓ,o}54}wbPAH g_ A42>?V}oXl~Y0*|BҐ9 "W[elJ:UA)c`w|rV ȃKyv$'L~~17ZxKO^S;׭io&wKʑGx 賆{-_'jL/M+Xx!'S}97mr+CQ4a~S(8 q9o>s]n]2 nĹ 4>4[fU{4ܦLk󋆮mp*~ ls(rl*&^x>0:zg jr"Yzn>#N9<+53ub雽y7 %:` /4(p<<6d`vvGz }۝g[hoZpH[J  mdDlPl߽NQ t&'AV0F~RfqXkqmFL/ x# sG9Ե~V5 B{lc/z(.1d4dK{+]׉~,sB}r^zLy|ٿB P:? vcvTS6 $ʡ!ь*<Պ;R:11u>߫чnFqc_ep|4);o ->Ov m WAsLuy _{MStO Υq#;ϖInt,sv=GQ`߳`$Lz kC`U7Km}/wl߬H6tOա}g|h9pjq+շX0;Dsj{9:Ps v(c:d+WQN!ٱ :"`nYônevqß:2q?>:x_5 -#$!;hB99W/@⿤)M֞MH3h~6x3gs=g_p}e3h g. ][ {}N훙~Ldgֆ OX74{R ć,{slܓP%cb6Z7H$<;Yԧtl*!4&%6k? Z=evrG´ IDAT@=|x[+ MRije;v2^]_ FE=qد>`䭜{/ #}#~mDZΒf4+g}tWy|ǼJ&)ƲWV*VX# .qE|:LJ6(̿MDf>i|c|_'74Um"CnV<ޣ|w8h%1iٞ1 ]/8q_eȜVWp7 )_s3D^;gu̺fsڄc QP!P(.u[bb M8\A#9 x3Œ E}R`Wqlyz{A+wGjA.]3o.OIhew~B Gs J2s7{mآgւV|NǩdžY~|\h^VIi;*yTCx-d:An[Wx[ Jaw}(FjOAAc.uy*PA$^V$Kw"5O[v-sQS"1fj˕ ɨ0*+mixv::6ǻ2%3ڣ3+CdqA7gL҇Q,Hk覹C ZV>=䧩!Ր#v[b,U)Pla\CX5{-nYáGѱSa2 p)'@5z 8C( ܻס`FwU@^Mqηlc!eenƊXGm7}jT]/%GF nO;ܼANV`z"x2G2Ì z09n7Ӊ hguG\ǝa: >L>v~{,KieSwk(>Ⱥ<<q35γS4rw<4YEiw9 '\_<`7'Fgho"|w =>.1}͏\~ئRԧ.|h O#i跑/nA. Be%ׯdۀ'$X=>5ɡSg3Uw;~$| N@b>0];Z<٬<ٸdh;<<ހ/(x}r0[ym!^@LQ+L"ͱݙL>5n ѶUrǗǔ8>tFWZ*=TIrc) lX,U8fIf*+a-5jex1$Qy#$ρX2i 9r[ *͚!Qg6΁|nAT`OEدs֞ G2kcm;Ofl.LhpZ9Y~w 7z. &͇2x Ab7cHV/&y:)[gus@ ɀh̢N-ڻ󜥕lK쨾vC]EOGod$ꝮpٽÖJ^M 5z:k7 P؃݃ ɪ~WO0k2:c_~ 0o%:"Db6HbSa7s7FΥat92\pu٫g TwVpLoULX\.jinN'Rx٭ˊ»x$Guaw\-"О1x9:CMgvJƇC߽.\(=VJ\l!0*OcdrL?{:b@|1%{ǿOϦڕ@צȯ _s13 |tV_0?G [ f΄ YQN7&aD)`|(4Zjt?` WܒŻL' odIDeGR<*.=Jh{,Q$ m^3 Fb/LWqאM44h58 k>:*ypwW, Fv7lb~)&.XĨcV;yO:]`[mS1-w$Ή%-¸q mS̽l:'Nq2=9wO0>r} 3 qB,K{ ٷ-zҏx|?H/H9p$dPC:{| [.VhPrL@m!,҈#<ziοmC|Lem2“?gmz\=byAѡJgD7dTH;|:s'!l|T2ȆmUp'wx+rG}i77 Orf[A'.Ѳ /Gtrk8tuU^="%`^YG;Y E)|SW9 o޾/?!) 9fH#ONvWzidK !P}L_NCQ|dd s#?%`2bKd[;\Bj3epʃ?^Xӕ>Em,1!̾NOw2-8юX8*(uN #eg{KI?+dzۈF肊/-+7]{i:@wAa Pq? yɵhsN:P$y*4cfa: v`ɤv :zNPfr,@gKNr1z fuViЀlCu1:ah\Y4obCwlX}\X>q7Z_%AVw<Ќw:y'= 0k6#X~\pP> juo@@xO#CE>4o41 '䕱1+9RQP//h 3@^7vnγpvMVN{Z"?8V._ntʦ8_p`@mr`({gO?%3iGQ꘭?v\:+\PvG;/>ګtN6zfӁxhɳZ磴ѾA+zӷ>TGˌ`LFé?{}t㤅]Ic:21\?b.HֵG@@n`^Hq#惽 a$$)K8d8 tԅ\Sg"7#ZT4kf |4 :q1 K6VϑnOl㧟 luZJ&|tTmvMdx/K5\gN"K.I q?ʍjU6PߌqaKo0+6$8R7o7g9% Box|鋻O &*WϽup{~/j:,0s,hGg딫Cݼ-, {Wɲ6hy4y4F4`/c9C]@_Jl<̖pp7 }x/=nOpG}`7;dnYͬ?]㓼؜gɀ&FI~ɦ<}]V._޸3!~#,{>2[gY^:koxt|>6SrXN ]NWvhron}%$Krߤb7L,o0GfC 7Oa6W iV]Aܰ^ym3K{dޙ:j:/]D߫S2^{u?ra4`]ݬzy2GzFA _YnO[}K,{|[_]G2ٵG͋$kլ-?~[9k*ط{ת^Li/dn|<9E8M =$5E9J' 5F$nJhP0Ny3BHǣ,#lކt_LO 7KhPVb*4 ۮCu,"Ek2@ux5,G0+`\~{h27k kv'079ҫYkR;Clޜ1Ї~ujDsoeͤT~rO^Kͨx5ڽ10\5UK3OuskFfd|h8'utP:;FHKHfPJEB :8V df__rOrcOFxp77`k.Ymqm}ͪxbmAYhG+ K41Ost}{ux4#xHY< J{A_b_C$tF&{u?>^{W. d ~sKԝWWoP_IM:;j }m#ډ2z2Y"8?U2QY99g VDy'fey%'v.}K٫̍'n^/lD:9]'@{gԏh/ێ [olP-v>BMFɴq<׷5{/_tf}>э|ol_Zj|+ݚã} '__h/rգ ,dQ_=7:P 1N@ :[6WY&Jc9Hh^||Cό̥sg@/\E4b輲lFaJǛn6rMbpEiUsc{{~:e7ԧhzm 6jl>p*u(_`AGs7f|.`'`%P}t%| J N5,w^Gmid7Xn6!&hAY  )1]6;f&#B;uFOgSw Jl~?h߷_~Ymfs X0g$x>D^OlM nIl2ł}˟g7[VaJ/Ll@:>2k&3o+qm& 'P#9o FYb170IVzT~z@Dݒ0:=VXȤ,#:\@Ќ+Et@#@A;'COC}<*ѓsA9_>a &|V,voar0;O( Fk?o5g~]oe>'xHM$Ud25*U|}T؀Y{A1}tXc}efe'>rDn-;߶"8sܻFHl?W^ބThNC؇)qY+ GSX0+<E3\!}=rrGZL@_eHtJgPDg 1yN+'.:?Q@Y,LtKAZ:{lUvޛEn%[9asN4Y_ `~颃Q fA7Y52:'Roy]'Qk̿c>\נrW|8?y.w%ylmaZ!c13@~IːQٻ`5{@p\{3t`tdz[zO؛jgA{:_g[<r+/AzTDnVPp_f7tޥ]N>UC-C;kԥ,m{ڂ3((Cwy`;jfeKoڵ ǫ(S6ַ0,ߵЎN% oWL gtzgfY[!ܷv钷l^{ pI凷`^sBIQ.b vk{:¹UhQ}uɒxw䒞]k;_2MN}u{E phh |}Cd}ws^ɹyAkmxpn;Ӗc IDAT:~"G}r+IW?t(:XXXonG}xNQȳ7xt^|2:=`ܜu^^ -#){='pEuq(#9Io=Ym~dV(Y;iD͜RKt_h@h;%gr(i/ȣ-ՀCgm8(Х|tsK`PK%XZ#yKwA? ȶTWܨ<~y`7P)W @<gRӡh[.O"<{ٜ hJ؏{fI .oR=[X@ 1ٚhIdz#18P5㛞cv^mpPB}ٍ e7JA__NuuӪ:pm0%_((A?HBxcێ~ @m@ŞpXv]nP4|4@?˜HE U:fuDN9OdmLN6h`}gD F>>G)/\K*6GV:$d׾Wӡ-њNhn;RHLK;@g ^Ci3* o'˃C޽rrvΒz{%>;hwJ4CstQ#[;ZJ!HkwsyB/Φ>2jed`0sV/;)_^c_\O! F{u`T_o؇r.`9!ӫ\6>+˽r/A_~̓EvJt&k_58f1HQA;tY' 0X^cfa9h=ײ@*8JS*eN;X|z0jLpu:|,c_#)+963݄QZmEgxkݛeV.bs .:"cI;8)_6JF]IVp8vz+_ԑ)sS`/>Fxv`EJ'cM VỖ>f4X/H fum)=!=3yr>!prS<2yu6 (1lx뼣 e7Bf[@ Rq$Jo]\zyH3.(K ;/; f\ K5ެ0ޖ7$G#ؙ X\w"^cSIX'", m}m t!uy9Yc,t}&]Rdw_/Yu9MVr\*<ړ/)  <YKO.Đ%gٵ?;t=_buRh>׬ @ˏ,$U6YV)/sբNVc嗟l$j|i%dmi '4&"`' ahkO}]6N?B"?|qǾ2wൃ%FenK^t?l}cMN[tS 4`ֈW"F 88) u$ P\[JoQ'X32cEt . ҆w3rtƫUoPI}@MJ6eEB᳡ @^e' o4'O5?ؔؾ+ 7ʾltBFuJo^u{P:zwlVh 7 tѯsgɨIjfMB71kGɹn[vz+Rsq)9zZ곚 6x'<- y:"`9q p6)An6R7/0yyڄmK8"$LvU+H9ϩv#?:{=hO#gc=xdp/lG`!7ݟ4Y.@6yNo^$֌fuH:VQE%K |r<C[ (&7>1d |_ ow?עQm~s~啔PjlWxz*8j7W=d=jK>æ_-/3zS8`L$%w;当w ֖@Z N%|{(}Ghm|PZheuV:{;j' za) '_k~x)gmJs.z]gP6sڄx**t +]i<Ӟn Y @rHў)A,N[u^]<61{4µuϽNlG#i-?6[,}2r4 (?Lٓ׫O(Џ} Jc?{Zp~:2[GAI+ |`wW~Kp :n`k: < 0fNQ=ZwyjBF#np#a+i{z+?ȉGIG}C|~:ڳ ƴk8p+؇=c,Hh6c#6cYM쏮< ?7HSc5&xd gK`_ . O̶˜>[ɍY]"ȏFWD]ڏY1F >A+P,T;جR:^&@{C|YKh>?k|ZNwMkc 8J|3puF Ѧ߿YZ|^M ʆ1eOsG& KNDV N>6zf{fBV_40pxjWځU57)mf-{BR>z̗x62MO}G_\: ʊDT_{Sa,=g#Q*`9؏܇d{K>pn*E9͕TsiPQ=Ănjh~ο8=iALYrll'lKOI+n zD?,tytv*Гys?RLY~xmW%qu擥|p0g3pη&7j5 p9ZNO[rֿ_+д[Tcs~ePybK#)"yx e<Ξ=ИoՄd|u?<=D$fUJr8 xpX u*>L&fpŒ,B|yKQ {\@y`* KkL!Wfxrv3D$714o$k;* m oC#ߡm?;7=ZYo+B=:,9N/}hhM~l!U^*[Jc2YFVKl݇ѥiH3dw=DYDi3p 9\9<` ?m&Ej'׏4%ooI&/툾A[&we. `4^lqʁUyvRkRl>[M`7`pUT'6`뭅g?7l`:Wrf~@/>b&񝫹bd4cpP}xt~8=]vM>|M̋ϮU Mfұ+^{aÀ6Z击SME:c*/N+[9nMENZds4 ;o?sȃC13)h2rsW{xI G5ywῌZ-oZnb+yhꬺx-ΓuvQ?BIf=ß y䭭b򱯟- 6oЀ Ee K:}G<1-fWq9ɚFoV2?Hv,noeuJrND xI'RIh` {0(P/C`9"v<%OAZ 0]h)u3"S"l;{w›,  M\[Y ֠Dok"%_1Y|n 8J7Xb"0>&Ăӊ]`XAn|c =>,3a?>$1t;c V>4գuP; UGƒSWǚW|q5 ҙJ2vW}`[x6`600޺2|s|1u{z-ѧ uwIpo f&ςXy_R3f/U2ʲbghR#6<}7zltGCs_xOWګ-BdA8=`=pi\l$`g<=z~. n}ovf/rbIYCܤ}V5 cqUwKt~}RfDbg3_~gyy;!Ϯ{쿝 GdGOumu g#8~xAgќ=yt?»6qr. Kdn tacվΎW /=ѼB[vSvn' (_ [v)W}{}1.A'(tdqFyZӣڎeZD9RJ%j &*ѻ@3xߗK-V}moU ( Z8!&uH>JsNz5_8L K @E؇جj*xI]3Kʍ(BQ&\lF$B7WbTG|[&Eћ-}(@ɜmvO2aor(%Ǽ؛.8Cށ@n`5Rݮ'YA?A_Z:!5C@ 9=5D? ZMqr:>@$$E&jÑ∝[`ܿ<ꝗWOLmcC<d!lpo+}f,-?V^cn6‚a""v*y?m% Ŝ ^~\e7v+%]y6.9K3v h\Wʗn7Y\J-r;G\.wE} $<᜙nʿPr;ٷLaUD hl kQW`](@馍RzmgnƎN:W<8 J- z;ZTq%C=e$FfX?%]}*b,4'7ya« lLp:w^]D&Tڡsdgw;Vt9p6Uj&Y@TS9nsU;snoyG.NwKA7]Qզ'ni1WpmKⶀZ}٤I7M[~~'KeO!(Xzr w&#fcsmw:7x}Dk$i|: \̗EmǶ_!wG䥅߰+8BHՏud`Dq%+a9jN(J1)Bә &m a?JվU |F X00:DrKmn0;:'Z>NI'tI p d{Loaҗ\?I]'ϮX "(_ iDW?NN0ހ0;߳&( ݓGel qdcy[ L{B%r2@|pͥu Wt~o[a)#]};K r  )`k5([ _$t~f@䪍վdX=$!7L&ito6d߭4^dX}k2l NfOMJw/`8 Ց&t6 d?RW~~\C8gg*u IDATyzgW)؈*/4jVz&AkChDD5|UYzcKB6gEt\vYl kh)!y:; K4NLgl4dƨ=(M].|1g͂}_B:}ԑ\`m>qv|Xmn77xߟ.$96&E$o,U ez1oq̐>Cx>cD6;A9۠Pa>!`'ĵ/sx&CO-d7,~Fm};CEL$ d٠ >x^\YǮ@zl6(0,n1EiR DV_@"V/&lN%W<@ 6a%h__xRlvײ_QA,#K7>M|%WgASiLf2*&ʯ\-vXKWkW./o)݋j=^^Sw7a8$H5 X8;r863b C<"spU7P_AC8]cvȶ@uȯNMWgDx@!vm3Xme(R8LЧ4 X$1H(95 +sтaWG}MYȤjZe#8w?O@`GEymKwW4=KQl nom=PZ F;M;Kp&'XW$mz&JU5A?fij;ˏ2j^fb}oh1 {ت v_Ά}$!0_ѓyG<2KO2off!s &{ [؏<  :RUc/C zɟ \-ޞdS+u#c}r7`OxKrb X:kyZ͸'&OqgbU]ڒ m_G/s~x04AEiKuky*3IEYmq !qm{Hw\Ёރ ?ۘ8UOld*":>cH<7')9d>%y*>og0#\ 3/*. 3ݷ(}7qFM>=;@'<0-K3-9(۞a}y>]d\JFml 'D7 ~Ցl߃T:EcYOoeom9a=þ` VXoh-Pgܿ/^ۚ|nP E˼=S&u6dVUߪ{iHȾ;,\'֙zv _vnRO=@q]y$n /rlps'Unt@Q=9;+:h?qo.6fYLIl wEG硿<]e`wPp ^o O/7iJ2icߘ>,SscN ?-wIA? AwPE@+f(6r٘q=+Ȟ𫋽xFH袃KY vBrMصo褟|Ng 55&LMɧrUzl#[t*txMޮ=wu9 uueaDЧz@ۢK]1OLab>;~_wppc?k vw?|d#lz[.>3Rs.Kp|ߝA{a=7%ƌ7-Zp09ިo>lvL 3Kin{&WE+,Ii"ssCu2X7qh*pW#0u, u˚HQՋ z0d_?ȫ`k8  .Y ,ێ_8;+o!Z܄_ ! mvo2 V: [Q ɪd,_@Z5`-4>INk@K2kL?@٤-&Q&?6D%ɰ{#p`"qJ җ.$م BY-w' q`bCA]s_W6>_f3Qau~'W/%k shuk;plǼB`cri9:RI"/:S[ݤ^|i>xq`-bwA~DN}93YgBS _> Ci"_ 6wž#!ނ fcU}ls [{xKѮ+7LoYndf.vٮgA"2?Wc| RhTZ,~7ew|'Fguw6xM"xpoGE\5^ˍ!+!` ]@z7[-s7.V-TOB+fmoT@B`;uw@GA{)]WoOj׃#8k+O5Aɮ{v^gP{'k?{X vg#}o>ѣd>IXy`vs8АuU+ϛ_C߳ Z{O)T&րQn -ʫ[ ~l1Ow<}D8s'n+^E=qy:]?vI>sB0gugE>Wuyvkh[;$\=Z񸸿H3 F[աy,oK1b-*¾uos_d$ŏxZܼ:` kק}/ٷPU]v}_GWb oO| /i{s?A݋~~?"cof'8 2xjwKn9OGSn/!|؏m۲ߎu8$);<%YwK0 d !(.xALZؤ\w@AZEPWJ/&ԝ VX}_֎&}*;d^4#8~,*W l߇GȠ:{<T(-ƺg|')ga32+ndLvm/-Die3qff{hWƯ Xā/m&zM.N?H2;oVDuhW2}T``˟WIx]#l>n;/kH ,)Obg1J}2l fZoY{X"?η(Ǥ/?b'w-_F1}ItEzuŊvFuPnzvb~Էu9lDݖR0H~Y˧~45Aoqm1y&6v=ӓIt9?ӱx>?q5Ïy (_[<=o`&Pt+s*G΄񠟧gal+/}OU5.l^Ugc9{l})d-C{ xv[;_>E jV ?gL8+0*19MpWb gxdhPy)ٶld68*tǼ9WW6f'?5HӰ6gglp:[Ob3^6CW_opH]"D9xeK-o;-`Φ PdPAKz*?1I*ؔ)D⟻e@פV?;Y8 Pyw h"&]n}%t Z?LdhL-o+&Wљp!`NJxw [~{B쀑>tj\lf֯Ȭ4{ZՎ61 }D`\e~s ' _;;n`W qL3WC7գ>y4c}=r]7>UGشre<;o<$EC'!z7uN&joH6>5\Ix8Y[=6 `$ Og-H59G *XcbG4 Cyolk~.` xʜ6>#1FʳHj4\攂P|b52[hT8aWf>yNo^0_ޕ9#x9s];N^.̝n2BVsidܢqTTeth$ǚ5 S A&lߛHg*rmrmOi8Aܢ]/M$h;*|ٵzWt8>Udа}w@ Vtb>Mu(r>HgєXzGn7EY*$}G=^5 /h動 jwVXAtt:Q[SIM0n˔N+ĈqQtv+6\F'|x&{J)j[di讀BA{zJvP^x 7PS|;O-R();W:&l@sj\ 2No ̬R]Vw0O,D\4zA'|y[@ɷ@_o%ǔP5PG 2P:2cVa+jyPw*(96A/=,oMa\u6u3flY=\dO@T/8ƝB $xui[U Štat Iߟ9C ;`^Q9/lkx @+=+qYv<PW~Gg1#o9|v{^wsmbwT"&ݯ}4b$ ZzKMekNÀnxKtߕ%F IDAT8HMx[E} _\؝~ r |θJ7N~W~&5&?ڕlq0 ڟZm`GuNj?A\EZ M*lS_A1 Ў,!Pvd/ҋ/ 1^S^3~h}o$}%=t΋q ^e@$%"q0uOgX7K 0 v'zYH9_4tHxIڙ;@p*~5Ťn_+ውk7_ -~[}}#xrXc< _z+^U4m) ӛXL<d^Kq_Ld"Wgvg.Pp]ZAUw~0_ ҾCcUS@С:4^"\tO5DThlYpjh|(3RU,+tOwuy&ͷSOjɧ'z_pih\S'/;~g" n'ǿ]hx`Mvnr/6~56h8ޭoNw@GO>ԝ%LxH :d-&odt dè~h,3B4$VmKƵ6@dMuES>whaqGt1փLۮdwS6)#K3ߓ$M 'dJ;egmR6̠]-QǾ`ZZz, 8}#G:x9U["{7wf? h`i'|g(=ė_B\Pɺ3ǃ|=gc$6V/U_Axݢj4韇}x.5+$ĜEgM5[\*}ћu`gNMyQAMS9bEΣ@l]9Mr^z-?/^ "ٵG0Bs ;vu5^Pwk U;;֙jҎjux*=4pOp@Jt#A>Ƽv4$isZN5;B hXUImrMd eb|@Na^l{vP^{x ayv7x,o?u?oq'Ed4nA+7`<`G"Y^sv8utHV}C_wko4yWds}ݶ8rmw~2ݖݚX:?%תo;j[g 6*` -6ٝj(E4zu1__|& DY;G=,.Yo}*~QƝg@e -@;]n՜H_&,ЇQm& uh%{@Y:ۼZcvނ+Gh$Fd9w:-zowg/vSlWgW |_>_7 }яAm{pK׭}Q́x-l&z4Զ:ԛ@w'fgEݫ290{kE'|yCΆIZSrN4A8HO{'gN]-/~X^T[c|8ޡヴחcbΆ+ rzٳCwq!Ŕ-˳5.nW8;(yrFK[?|+ЍZ_}fh!$.-.)>/#'=8RWbd|+?zyl o M7.'˄N]i?r{h1<_F ђwg*W"/{Ebg ddEN1{>]o77#?:\~#x(E΄RT+ui(NCt~^UB{7h>8gWR\'3sid<u L; EMxƤ8X"m#Ӎz>=!MlCMs g{pElhۀ n94ʸݡnlVur߭+ Ip|M%IȿVVsx@L㵍kDiQo Uq V[vMlӴŽJ7g$]7axϤPL=W{ k6>mߏnF !dV4 Ie>+vQZ܎CHEZ7UfM̋b;fOrU`Ռw~l8~J@־-dF l|a]&CΈIYG_z s1 I4{{xGN}Ixl֖~n~ 9W&Mm ])xʿ>lfh?j:o upIIv4=H4ޏ?~#|&%zY̱s"nَ=aL|*1X!>!]('h_ 6È7ֵrT!\~ǫT8Mq&fD-KI?ꯣOuع/y^@M|,[{P{k:m6Xba~H3IѾw@td$v@Eʅ3VN̡u+4H 7G#+X0躪cp׾NɚG`xMkxXP&ý_4F7ٯ{iCqzSݕ^p[I?i8ᆾv",P닣{hxt3ZpO*Q&]&W_&k[/]}%܁J=u*Md,kWvw?Lk̯oƏF Ng}xv7ՁeW!. W̳,X9BTҲz+zߓ)CA>9E)ZF ?}YLj'5\YE;aWz!~o ñ?|:u NZu2Eϩd}QVsJxx.k0֮D\tt݋!i;yWT[ 3ldYEvJ--J b^S|'`n 櫋@[,?ieR]t>&?܂CŮ:naD[fo2K&C w6\o );6 l|ڧ =[WgtZj{'pc-QGoyuzV EfMX"d.J3E7!vߢnȬ|uWaH0<=*ɵտrd$l>~ZBvkZ,̾ "=,)O'lLt$7thbzEȉSXDe 9 8}&g jIk,hxMK K Q}zgЍtm\zoqZ f mf-vk&N>I=#3Kۗ7ڧgurV]LoGq8<69hG+@.?mݭ&[\}mq­p] _%cZCznRcA$+|v˃Lmuۄ[d9N=ϛ(? :)?hZiLn4,@ӵ“&%ܧadt`NlqRBsvA>6B'訞Q i nhD,J& ;P] %|ɧ-X:"ok>y>_O3L7_OjCd킽%;yhƨ|6uitp{M}=vPEA <+WhÅ_TWWkoAO&tW{lW8A_v+ۭRkOЍɓ<.o%xZ7\_~hJa.gYY?!jV]x|fEr)+}m/k;cIWghB;m;(|9`d:`YEQ᪼9^c <~49^jȶ (8pVoHl:0m!;fЯW~X)VUȝ}O:A-煳 @(sBQb$Yf2WSv[_Aܽ$z?ȋ{<~_&'~9INbe l/4!ɸ.='༷=>DN/yp6Q!A~@:cKQ=H~<5ѿo%%hY_ uWsUC,\2l롖Yn]/W ],x֦cO'O&+7^OK&ټ4hR1FU|xr|BW';?qLVU#v.{}·1ɹ],r}~\ՉV/م%=JŕI[->;1Ntrg3F+zOނA{ w\CVND/m 01v" y7n7k}iQYbPUyloŞ(?pn _՞ڍўc.l?;O7d^M!n[yPV=AP<)v&te/rG_'l?a~R!|LxӑIvE**?Q]eemp`n`4ņIQ|r᩟LcǛy;fdE9::֧B`ΣNԊ/p:ݧWNϻ=L3aǍ+v5hwa#1Joi%??ގH ZW殴7N<'%p\onlsk\.2>&~G蘷YL?wyu\mG<9B^I?_5cE2-`<}߄ݤqzcZ|:3!rgs(l@8S hˌ҃:Wum_vxNWMш{ EuW1Zn_5y $iT0:=^ѐ课,Xg6o^@pVqέ=t{|aNN&-M: [\QM|ɡSl aGGIcIW/1{ IDATxPdI-_A}W3-7=7/ rMh=6z ,:x#^}x }kxpڦ'|WG? G*N &ђxd-56dK!W>El<=+?xm`,k;/\5gc=R-4&ɺ zu1N8Tf&5jgyeo @*d`]'`D~tya #âht۾qCq&!-@6yW>CO t.UcW?KiVh(ߟ3e/=+d8`:3JAl^gn,.jnl>\xڎg$ +,~_Z9 }Yх/h:o ?;iʤ:F0Rdy%ro;m!=1| xqW`oPDNns1J}e}xkd~?s@&I:^]5^`Lc}k*|^OGp{w5) mRu-\ =;ֈzסgPΠmi싽0T/ή \:B_\=4ݓ+OW>EW&?jӣo 7(W G#Lâ+'K5ݞ鋧tŷ|7daŭ]&.mz?"iX|~d%Q)'^Ko l*;{^vpx ٵw7?<9Rks~iS6b:#<۾]C 4v4WXds /Țl./K_z_D<&6q︎򮤫8U'XWɛ0_J- z3O;#"2١h6ؗo/-ւQ~v?>^@#[O3)UC .uü/#aҏgpg/ex,to'L{W(jr~s=&_Swvy4ۙ#~ö8#,BEfǤkbm~oq" ^^r?rB/-Wp΅LIU~ADy۩'#<^デ2}:[AF,&'Os8#6L f@m?ߖbxolT',t$Э-wP;q]p矚_xN¡~zIl< X\WE_|QP e_[JtdܝOz+>6H\(] ?)|BOa$D16a|~??%x (w>X&0d+\rD3oӭ1tùeޮ\sxgӌf35]~>j/GHpt޸Wt$3ٟ>Ǜlw=d; oyH[_,Fp(R&N{[lϠ'=?.^?ȃqr;/UAdۿx4'a~ms¢xQ_C\/ vx{x[|C_p(U&WS~Гos7@LDȐ?3ӟ$h)JNgJ9A{(5=܀ %7:K{ZS")8MT%RS6 s-=^奓wx-MdNՑu9 tRV\o\iYA%qbM'd!6WTT/|{+]c/ձA?L][dl0 N]lpٕ\ub8oKtί̕&ϋWFσu4 v@^Nl2?dK0vIb:>/࢘l%dt}^"&]|J~}C_+YLo㠲 x=?&nm9Z-D8 :^b 64!eu&prxVz$Y_T*~Hq X= F-؝M"驼:}Ka(PCM_\ъ[8y#Y2+WS* ~k{;r+K5ζ/PjX0~qC]aV9*5/- 3{flY_`?9/ܑg^%mt/wPPpGxpG*CȼEG~p9'P⏓93b꣺M?ru >z+Տr_7?Lu>jA}ސWF!MQxIv!q2V"&j@ j39BUvLƇm&'+nO1dAb⭤]57;\@Vw$Ztlr` 0: 0&3FjO(oKc Ţ4>vUPsM:3ߎ:_n Ͽ>\ғ_Wࢅ$w^\ [t-کG'qX~ˬc/qvX|Oٮy{m k]~r7weE&cs›BFxuZwVyy;ɬ58S9]{b(-ܻ]w' :{XrԐ^m'Ml'3vW+I>,cmE9=޸W@#1vb_KŲoMk|bl+ރanjW/aTg<2O_a?}NplbE^F7VL_ s{*ZxFS&}J8U0{_$4ʖzh!ART=yV7QbS7Dx%JP F7̜ôi x2h7+=e4sF.UƷhMZE CLPGzMQNAU,!39t7m:LoGq8ۮ~&0{ӡ+:{JH'-mP4z[XߠR SR&+D+B{yg!:bZUҚؗ8gnGs0+> ^MuS14At#[0~dډ`5EUYɢNKCROGP@˞Ngj s4UE'_3g@/n5虍]'"mՂBsGqLo[hK$-re[<"1ݤavKxx~_;ֽ2w;ܤY>,EZuϿ?M@U{>ɆEbSt+_!ś33.Oj%=6Ρ_Z Wb4NH& A=4,ݭ챔k)@6fٳJc5f$ՏKOMl1W])~QK`L ƟLyP,R) -tn24FN@24se1ԟe_;穳x6{ʁ_h?5}f,ـ .U). !a`@3UTqm90W>ޯ9bA/[1OPHg( שmܸh8Ngy)fiѐ ۅHs] {fzCy#K4h}\U|{O>AMgp`oC{ @=^3]qfW 8t8 lo|9eW\$g枦[voO6Fd';p0iB. LG6;eGx ыvVGn ʯl~㛿K8z+i4rud~y2~4ϗ;bg2mN>?5a:y|SG_GmN(Ei7 ^г"5oЙěu‹TƝmK|7kX) w zE\rzCMx3o2S,9`}TN|ƅ~#-8~^'~/UbDm/v %d 0k Zx@7 졟,[z?,+vkv3)h6 >gO/}U.V8u>JY>z=Ap^/$j}eo o/#O)RL+^ZQ}7rQPK֜9wF `Vf~H}1$o;zCV6uycPp t 4_gqRyU]ER TW^Q~hi|kށ9 /9瑗ԾA|W$8 '0qz>mIj%&l@螔}_2hIrPAY? jufSA0FIO~R:-2u|P :MJ9t2?$Au$YǪ-m-5d&F ]~jvk[#~js7<ɶG0Ah8j&aB.zh;x/9!ɲG=1U iZ/vl o7[ 2*FNk<9-{fk#בl+0"Y}@,jOu`f~=`ou>8:_n3lGmO#zTi&Q'3Q^ek{Q6$,G>:[XD^7Ft}0I>/)ԥùƠRtm:f2Tӟ?P([6o7'&h;Ngw+~0dp9jo4ſ 渲?" /~K٥_v%ڔL3PL&O1W ˙p {vMu`]9 Vמ `7Ad`wkۺx6m5s##'u-Z i;Fe$>5# tlg3 Օ'f9ij{W>\I8xE))r}. V6)~q^.(#)5]Pb[0@ϣ#|;5In#IԾs7R7oDfSdE8Ȭ);ihW,?V(!"@ζIޔ/䎵\&ִbEE'Q}aX N;51  }bKNe#\{iObv DC;dsƿu ]}%͗.ql1jϽ+(M qw2HK:;w1"Ho|x봯A1rbwj=ebo??t&FMg\Ҡ+u،4@1SξEuKɆ>c5NWk}H_z.0*]>kg)͹Ri=9W~u-(-& HkYu!EWA+JG0Up]{.[%HtI2Yj?uX~?T Um2 N^~R]YT^ڻ½EoTw?SH+dc\WAKfp*N9rVh+!gz-Τhjnm62KSC`Y{R(iqb~n(D)?EάK[oNhW쎨—}X7Sq8ܕ aNU4 . U7ݘVVohWM5X*LgF\2H tȧu},dg_Z>m-{ba'UQNe@dvJ?}bmڂDq6ІdKt9_)yW:Oc. IDATdҳ;Klj~zn-,*Bc:s@Ft;fšYhK ,`nA +^xf|2dy٦o/31mwttQa Oc8: /@u97f{r~skWV#w[Y`>B)O<~!WgE&mauJZhf؍. ["žhXő@jG:@4Zj8qY<ژj` MƤ웑bWy%6r,pLG݀`K#䭑9>ݦWWW'/9 t0My4^lTl rI Ut4\8}S!mY'Kc ŝՖ8"D'koiSs i`P[6J}PT Jaas'd`pjH#}l?gg\\%PRYx,0?Lo~mIdIgZ`&ҭ[DO9m^qE@R-bL2SϊA^w?E 0&ؔRV*'E>0HMg΃:ɑ4Vky/+y[N7܀-'/dO $j^B/sbTIh+ v9z?}WwV2WPTtvLD"@e'=W쉭.-^:.>LkmThy%j|'A+2o)' @,S sߟڮ_q~>cׯOt.d_[zA\v|nGՋ«y+" ViN_nE+SKljכOQڂvF+waӷumQJ˯}co>1^>~ΏӅuʯq3Φ׶NQXh-4 (h2J%u k4:\5EzbJxNɭhu>kR\rkƸCE^ic'WLX [5 hLB_ꬌ)DhuL!m%yY/fOUԽ\MMڙ(Ct2hL>8;P!ޜ,־{BmAOex }6Aԁ:[K_ `X`_{3oQG4L^)4&2(!ǐl}گ-> GZh NLCEKw'թ}l[Dwpr~`Nٟc|h Bw-]OjONOLR+=XDW>7G.`}BagSÎ[VL~Uɒ:>HHȸ8ncU{kYhMF:r$-D Ofcw1xRʈR5ߝlGʤbWfa}]Lh"q{j̨K\9~#k6WWGecgS7gUON6@;dcQᇞs}ȹ':=v؂%xgRT<ڻotS+pHڨpqZm&:&pk猥ڢyξ磻a"htN?}Itr\k-Nl \qaJ'*9{&Jgxaט62 q%4vsw{ ]R:EArΫ +3g9kݑt]17g[V<:~fjOCgVK'=dNrL;LuTU&G6U_󩣠׮SVyg!aγ%_YhΞ|h5͔n%xLɈ1mz&R'#'vEf`%Z$._jF ?>!q#Ki¥Ū/K ׉yi7/؊#J2 { ?ܕ2F#]$ֵCz$ѡZY$b!Х:1;*cr;Ա މ O[\_3|'sD݂vN ywrW ` :"{X'yW\2Q:W0:Wk^qX'T#q=(YjeJ7[_u} )$^LԖ/h3nPx OךIр@n׉W);GBʶ -4)52 r'|pmgSOOqL}(1DْaBDl߇"̋0W;l#ǀv:#;*.K6QEU9٩-Z{ UC{Cmó\#[Y0wpqytUr :Y$_qx-M66&P TGdm*CB])ǣÙc'^mZg-~u#o6>t%_, a/l)@|l9UadTN{lKچ6Z,^~KK>?񿅪>6&^w?QDZcI8H>8 Wzd;U >oԞ,Ο ?y|_c~tnF6_i5W[FT7t=qjK? s6=9ESE28MV;`ξl6t>8B4Kh=?+j3wWub@WJHO:~ m>6{(?ޡ7@8 *ry_x8jNjmofYT޶Ďm}Q A`a#޾8x'Gyʓ>KcߠnV: Mik'`Lq4E6Ň@ q'}mAz,KL VJ4 vS C]`脵wJs?t!@=O+/Tq NT_k"cjW55m#Flq >ߖ`{㉓_HV>Ai>}f=)Nj%r6rݩ6mSڤnd +c~J9xf>|z+$W9o!goxȎcKS{Ϧ}Ptj4m_[Ee6똚6Ѯ!HQReyݎ$I'r2hx#~GR'Wr-O0Ο5+ᮁǭLJPg|;&#;끡E{wW5&.3@Z//< σ4j6q8"'pNC_}/n)U`q,ՋCqֽS*#~\ Aˉ6Dh4Xn_rܤK[(seع|Rmz/vOF5;Oy6s旈]hEv2m䖝 -~_pxVM9^;V kt@ ^)8€N O6$=?G ?BTtI*:xyLowuQ Z.Z+] Ȉ]Vy.׾YcU~ιXXVЎlMܒ,qB@YǦJ"'n)N=޼?V:4O*G3m7ed jK5t&W:%ݔCy xN#28WJS(ahU96&=[_:&} 6|ʛ_D&sRd{t%w}[ݲeP$ͭȼ`龽ERIM8r^jl)mPFPr=㊳{'¡$_t|d.&u2n(ujvǖ2ŕq p Q=K9ܱCdq)ˎ(kâcI"0L'spC6ȭ (C'Z9*c2++k QUW:9g |E2EwJnh;G >D}r_v:^XjU'Q`bhZv<83V\~ *i\'%F(͏JF.}AdۑWM/E'oGt 7-䳙 -㳗O"ָJqƻVecyd<W|sL)Ϲ%~ie[:. Y9dOw7WasolUGw>_Ug/65o rފd%S;w QZ2˄q/Mnc[{B?S6'ʜFmef/қbX{knԝsM853@Ф!3Xh_lqnbWя5脤&Q<9 B&oԯSR ."oJG)qX$:JH)"KWWj 륣 q}\>ీh2Ư~|"(ډf&_so<%?\x>ΚZObJ-m~B{_NM;{}>¥F&3fG2=-]]՗}4Β%9[^.D (ÛJLy2)9N- St+ W"! Xυ1UG@0YB>#<~+ J&?rrg 5snhJ#L@ Hyz݁10ʥC2>Qc-S<y$5.]h׷Sx\AWفaRkIO#oGkT a=LOHjNc ! mv 28@I_u\߾s̭M2<< bi~TTćymr>?W£7Ek?}@?S1[9/M WƮ|{%ХkӴ!vAAp",:[^}#n4 Z/g I[=6->UY0 < 8[9OR?]$[~|'l-V06DV9|ee68m'%w^wE5mXGEpGT>j-mз_S Mr_eO W;orGDRU|PRlDѓC?6aG9]D@a;&7n")9}iweFd׻$p7B tǕY2bwN ^Ga~!$%I : !W3R6VkOy5]ci<*Փ :6auG*s?']yk 0ObٳuhyB'ǖ@PnlsJ\"J'٘XQ舘Jo;P4%vb q^[QRo2e <}lՀp_/ e"Sp7;OKaV}h%Nma d?ů}3?mb$[烦*3`ueމ}g*M b@}tdV^yW^ZL<&,']lvhqH ż!_ W<ִ|5>} w2n_tXuu]X+ 食4LEdưQzW$z }%-9,6݄b5wqⷎ-)9/q osަ_X,: Rxߔ Ϊ7Lv;B|:j?Q)X%Vfd.E,WՒ79&=ӑya?u|C](pS|4Ԅm/A ]̄w )o@To{ÜgDbp%GwѯXUaXE'"M KS L+5 IDAT}8&ы$1XLG';_gw'Wl_ ٝՍY1 r[-0]\1nzBC ӋЕYN݂Ogh_x;HTqXMdJhڒӹ;>ZxQg)>n@̮YˀC>AL?/u(![UO<#|LDt}{:-2VOT^ %52lr~`[U а5IKGc1cn>£+V;tV e[Z0m9JZjIq$t;Gt2A0"X^BP&1gr Hu_vD 5msm|㹳wP3*R$m"6c#Ҡ$T̔LW;g"eѩ%;FQSS;Els('Ozhczg~ئdx%IC1cFW^͍aQdYZPJa۠Rs#E'VEO4Vvu QM";];;8T0O~Mi! &~#RE`op(it/f5{>2Z jM\Bڸ5J[:FWib<60qCFiLs@uSՋOQ b#)4K4zЕ/G/4;Cy$_+ST8":u;.?pXr&+# Sngwqϧp _v*:itFMPLrBb ÖTc37W#nTx_hhQ춍s4*rj ne_AT:L0&A$W86#'уJ;>q|{^G"< F:ņ@ɥSv_TkAR>PO.dдmtO/Ɏh1 }َ3圾-:잷pmOluؓ7)')d0$Gvyiy¼bwRN'N/:[\wAxh)K'zi{,ʱS+am=;*#~A")~ʎ$ŷMBi}`Dvn1uq+$`92f_-l!24aMra?Wn} ðC.8kSϴ;#߸xh'c8Z_n^a~#j:|o~u.նW o<9y%U~YiR][8M(@,YpIuu8sv}#jfJ+YpR;p75x¯q}q# bcsT4CJ]ssm1]CJ3_j1Lٵu{d=*ؠs+ϼwAQ>pv\CoW3֮U4FXws4E.LrlG! ٺP(aop52V3;CvO@iuZPS+ѫb/ 5q;0xLnw62GI(OfIs!K#aϖEA E0Ơ7dF3M?9(J_۶G_|uabǮW~*d~]9Q;uqã'so)O#.LUv=c6f[n&w>]XZEDZ?L;j^#}?VBXGQG~0f-=^lfKg7}qޚM<{{'ot*+]ػ_McB٫u;0EQpOٕԸ.捗·G-kjWlUoRwR9wzɛ'=C4)x~+ekasL 7;g,1.^r5\]"OzS1QWqi8ФY| m[I3qOFv6?Tie|01p@3U5Vlz Ct +;y͙rɏn9M.[)X)2ȷxOS.A¾6j$ܺY@8/{\b+Ң`7KJ #G&Vmж"'VF7 v$- )m/9ͤU`PcGlz+w36ˮ>9f&g8C^4C>GJ!Ic*G+0+]ݱ%tmy+wAmZDžu82s޿R|o]؏0?wwᢕ$P |ڏs׶2j? y/jЬ@Oh_u_}}`4GKs ;+ho'wI"0!O7I c)b+u*sL|˿{uA;z8GᑡEWVF6D~D+ HBx޹;Rcܮr@'cTg!<kiѫA+\,&t#?$Nv]Gx9cnpԞY~^]i ~n3dXvgC6w`fwF9^JS<`/Wj0 2dε(#sR#;%uEn|(RQNU '5@d o!'c2N#lWyGC'AH_bS; F[lT 0WXv*`I|T( %1QF6"vHl3trJыN@_p+4ݲOP| EDXݕn5c&cmfɗuդ6&wOL)l}tx'x l<Gˣ]cHL)k?Y0Svi||>_/6׶(n=,PnܻhQgDZ%zZ`?HX_{ܾV+>j%)W6Dr^Em[c9])h l+Fs%l1: &{c[E#v ;sDG= R9Mڔ=}}%I{]6xM"{Ih<)V*/`5%Xq9R?XtŒ8g(@-~=G;Q g@9<9A/M3  =zHWg\c[~c$:{ }Ũ 5s-}MEf^sp֊B_[mSՖS\yU.=K16o?t!ծ@:6־¿-EȮQܟIQ&jLdw >lzq?ʏ;_9)DOTFxV/:#7ZY;\"?ϝ5$n9gNС>?TAB|m{\4 N [NHɇl7L^+oġxg`A{,L8n> !z ;vy ng.*CfljLr񓩍JHuv'e]P{wߝ< +>Z}6r?XUZJ_E?݋IC_tɭ-ַVX`)8? LJ??ɘ*R>e g gP}i:qjD7^c#_͋GKӹ!'x[zT67tk5.26 GEӷ4iQ̎tǶK: k/6lT9V]ުK+;^0 ;.ꄙۧ3!&܋Su2&- ]G#2Kq1LsT (x1R:A~7 v`0>Zgc J'[ `okd5jcOEvgWˢbdc O`G/7nK+=sqt6ludܦ<I~z'mMȞ(K]ZV9M YpI$d c!zy39;5H9Y(~|C= #7_ N\uU۾ڸvdOFt#?($hFuDڠs\<1TgvB8Is~Vw[YL6~$x0-~=r9;wbˬ÷O6uOTvWL6=TGnl%cx<#PF#;U὾?i}To2.mw2ݪDAM%Xɋ@p,8"-퐗cI"bWI/Xȧl?d1Ihm2 ⸎@S2/;"M6vUc?AO}ui-7YwBFulY>1U_O|%z xfVPZ;Z]# s憫} [sv+e5Wi7B"נeZ8r*zIrݑG)uEl `'"CAAw+I]w${؝DEįyN=W?~Y o'eRM0bʱOtxے]lsLd&)1r ^>e"),o>b)zcO.:-8)?t*f5i D^Q~2 _&~s# _j~+$vtS8tHt!URōrz.ҽ4w,"eGN"c{00OtgG.y~wCZr~=Nw%#0U՘-j:\}O@‡t,Ɋ-:V.x|OjiQ_]hYtҿᝎpsG^W'V T f蛂Q>cչ 4{\2挭D ےL }裵MAJ']9s$4m@6ɭD&Lδ-o4 i\ߨɦC^RUDUZ<}ڑuu]W gx #oN?|s-$ ?r6}vmʽ8T f v_mv!EKivl߰m. TAֿT\x7im&)R}>4q·4Rƹn99*x3Xuo;{Rޫ*W. 3rmfc'UĂ&l0&j( NR֗ Me6T2>ے#ug}EG溜tb~?.2ӁRCKK瓒S0.Y4+XTv\v\h+gS-vz,PұdӺ1^|5B\1P˓RRToODL*;+O^&.FێK絨㉏b%QxA^UԚ^&t7j zA0jD6%cXػߗ6G4:v?gqUyOca8rw.`RZ兀ޔ\eaL&moR [gr5Tt-*Si ,RS/ 2@70SPCpvՒ#ghhޯ/i[Ox.|_`P@#o-ݨ7@qE"(6 إ򣣋#m Y mѠIsz)$6wWџy[l" Z+_ƕz#TTo39rYv[wSUnc.Wz&6}|W{"H޽R9V^ZIEdK{I`8ٿ^=?2$uAIPe+.b;JPebXEb[j3xg(b 6R|Eq*#k:mI. -Wp?(#ѷ3k?qK-qC5=+߯yy_B- #'YQ-ˇ?h,d4d!IWR||>#q7Б'͸c􋯴Yz[^{!xaEɶqv;W-6xB%? eO~69F>&DΛVԸǎڔwIm GfCvE s6^JT=aЕBP7'RW\Ewi*8D%=s&Ϙ^Sm^>R.sڪO.TGS=Y;KxӼ6)ExlՑO ;zK>`v6aV>ra9ozL]E݌#>gޛf5YJցO~P;0E< tvQڪ 8~w _>M}c,ckqqύѪoLF9Y4]ɳUdwS,*#2SeKO5n& jb9 659O~n>zfvvo3|xç}0ϡ~Rq'&-_է`/uϖ|}XIJd"j̙ C|!@k"w//ȿhic1‚>,wmi"-p]` &Gŧx7vg]lzkil |":m$ቂm'9' 0]M\۷.T&_caޯۺ@o/iWwH{}>cs&x$z"2q6Cَl_2~ʻ3{O*ߏb 􍋜MDO=N1|2{TO;K2l ңS=>4Wv;9e /M:&q4j'%u@y'GP7hcCډbbKudfcי<.{!`Vpv$qQmu5hOF*a蟡ac#xk;u:`D=XpF݁%L@JS&>坽s[khm| B;_cVGf* 5U2p[Vmyb~,O|Fm;9]6\٤q$23ah&v@)6;aU*;> ӦjBMHlňI3:tHpco$Wl`/G~'$(bh[ۆl"ԯ(?ݶvR IDATuN_ֆ!Ou].m,`C#Vyb& W#})^ܤh VHhwGRem\8 KZjC$lK3 VoEt딓)~2Τcalw%gx*;&W,jNDbX;h k(t/߶;G-@aRG{ n{|dNaV=#|a8Wz ז g+)-CFγ*P.9{=j 򔰼p }a~JBqQcyMQņ`Ѱdɾw>u-c`^RCQÂQ%/}5pw"I1EVPv BX}930$u7[sZG3T(r&z?}_su[ti`9r-SnMb'w|iΰ>ȎMxd'{7W.8xiJCkZ<~eFM!8JvGMyˮ+#9!._nhyZD}q_4NcF|{##<&m %s<Ӹ[;WιO::=ICXbl7,c&:`AG_2gSl`':rX;_ .WM /.V[SzC[P{dQ"-"p9sU,ⰷҒ©{ß|$aA+`"r":Lb($yƒV6>Կ ʭPEOGF5`՗ c}tlΞlܳ5v"o!-2p]9kli)L?:v}m X ]mOtYBy|/vd_P!|,^9~΀(UB7LL*u2?3kyz<7Wj* j}+}QX [Fnnp' .z0]B3li 5[ 2(!ڗR4)#2OڞƵ I"7'KC>m.MW=v (cAQ{l6f2ǝs')ik&Ǒe,}]V'5) T(7N|?ѲwCЦw/g[{NoEB$ƅ'7pmlJ2>T*}cBm%XcT?΄7&z̜&}WQsvKNYnTJ7wdv76~=Nݤ,-ynsWRf~$_ * ܱ'@~нco`2Aax$ VL@p:9}5y=6u$ǝS(iBaq ;D5ճUlCՌ7C dm%k%CeH]jS&X}LGb1<-Ɔ?\tH|SԧiSCow14[\598Ν?{M(*@퓩NVtU鼱]]HBwey4YqX &xA2mIΉфghbIxoctk7l>P|Xke/* mbD؛8Hԥ|KBK $ji =ǧIsj[j#2_Zb.h,g}}vKeT^|w\[CE1,{DcGVkז=DHc8ܶ'wCP #wq]a-={M[0. "rkwY|???_#6r7+s1n10[}]`[䜉9q0/Ƹ<ostXQfxf *m94n#IQ\w{!$DYkV, LsƢ 2 {kU2Z:.#G\ɮ4`R &IU{;FFDڠ/ i.0R-k dEK`N [Vv* fm;B[@k aկi1D~'| ;ϷǎC/o|zYAх+T.|ީqW}?}*/ ibcln_wt!Ƞ_g :x}n1Õ|3:ߡ5LbY;گ&~;@8Q}YWWѱ ~7K?z"74s'<}_t+B;[К#s rկ|Q{O{g|TiX=IYWuV> 4-YAcU )n_%) g8n@_O0X]6]g_t ]ӱgh֐-:Eb<߮˱̀j@鞾姤aaX*ʹ|v$'Y~}&!"Ӕ[⮓|ihદ7̳޵95GW'- uB~Zz-oENIdH'8TMz] ޶XNӷSwJmv6?>u=mŚ9G&>0cZDv ޾W[-3ػ˱㯙<A4M$/̜4{T6SCz6C]Ѱu%k~Qf݈"-q1%-tx%֠I<~;B39)tKJSGWt @`t]Y:k"#t$^ȿcGm5z3ÕeGX8$tn{W+2:tc,-В9֩VDK0;,ףͯ׌]~־zB=ˉ5ĔIќ:Sr \:s2F:/]|Vdo?XU.N}qB{Uh O1:r4 UWlORJŨsZ;#$>,E@|!d?Un:Z6H΢~Q69*NIlURm@& kL([9,U9SDkQ6~يV\lbw{VTEA89۫]jœ? J1Slm(wCcr{ CW}54-RcၑvBquOP'Gmls;? ~n /Is2ɾ9š+iwOȒ ڝH;Ds #R}ݶեa;Wۉ^̔l2z/Jv'?j |:V ;dew/K/b,ŰLwd?ߴ:>4_ri 3 g<=.V_t4vne$1؋&w,\$zaSsk|HN]J/o,3f+)nE+Ȟ5s9KlJ'K"0>raaޤnSD. oC|zC #8y3NSgj:SBܰ_{UN^aC{0O)Zݷ#PH34UGD tNr!$}95(OgWgȻ AVTksuP'E l%,"0NXp+0Z{SGӫ^cȿPq6)_<[;*#x}vMOtNaUҗ2/??_yE6]!ƘQz9C7u]}#uleOFhs/cvaH"h/0-TTM 'w)5W_D[Fy&?' BQH&Bхñrr|EQux,8,:LD³؛_Ւ+E|]|:] ]}u'h H^R|ēзr4JݱP: {!jꏄ9Wc&7׀ˀb>kr[䜘 G}cod]$G2hrљpw zp\xoNȠ*y,})x{ Y eŸ+B>E0zt1E-><fi8?9Wx%o$~mi9ssg:ۿR2rx+?Wqo^W\0lBtV[Bu c#m8.8<dQ;I9ꏣ %So[΀@$typme9q6"Jc5eqU0C+ׄi>e1\4L3ߚՍ($~bBÿ <BU|2Y|FuɡkKͮN|YC B:cWic//#ra3m@A|o$c1xdOQFm+|R}B$"+y+W٤`#}7/Mme$b?L"GRO}dodз+~a zLxlڎ@ 뛩 ]N|݉K~+}8i&|6Lp+S%b̔r"?Y﬿/WѢ"m|.26X)b f`u/E;mq=& u"'2, L)jr4!vILjՕ9'Ex#x{ޯ+q`&6 JٟE_dwfeov^{~1Ƹ^\~2la+V@/b q$ltFW+N~7멼 d,ԝ.ST GpUhfGM^ &k RBԷ[], X%s:`K&9&HXIN{;CZ V aM>rAjȠsϕ Qh!2<ݪ:!e v舼]̶ adc5qd_3(`\)= T+M#\d@_o7[?9ưk\]n aooRg`uER'b ]@!Q6ӆȻ,ziqXFNȂ%zc}k|5(C[$ڕsӱ8b0t>_6!s &t 8Jŏ.-FEx@T*Kz/D&H&c-va$hj\oq)GqIɮ&7m3ߪ- YO&0,*18;מjox,hѢ򴴝rJwBY-E6N?m|+s:h.JyϾKr 5&ܾp^đc!6% a yjvl߻M|./ye=G0OV>'<ɿ'/ҥU9?F|*L1ZO)8>iԠMi(),e>7]"3=q/~^=MR c"\! %+܇f]f/ C[㱃p(&__- IDAT1rO(tXeJUd9'rvRpwAVݕto׾_G2-:Nŭ=+`Wf,Xf|Refl=uw?*?us}h=xޝ=ISgJ"+4~[lYDcn 5Wv#IU+u?tע~38J |wc` ?7_O5,JƗl3ۘ$gkk~.n ]y3n7K9_ ty굅86>u6Tgi+\4q|.+sB4:DN]&r펣`8Ҏ!U֯ww}9-=ā7j~d394*L%U-1EI N ^dZ}ow@*gtwQ3 ~JuG 06}i݈#g+)[䬩 p'¹3 ig*?$-:Gg4TCa 4$60s[xԊb*) J|bhSy{+ЭJH[ncI5:Z7kl2^?JJ{8j {l"L++:$:Jeݯs\DHh+j[9Y٤&]>. ,Kڬ=|%VW#xHtԿ3 ڸDƷ-8}s٠ŃV]A<7w`dfQ`U1SJk<_v,Oݘ!ecFV+@ŰgvXGjU;$VRX`蝰yLhu2IJrA#Dd6Gi}*߂i;͈f & fZz#*-| KfTpd%rRt}CtЍ"p4$'on ^p!/tc0dkDmIm燳q;QS*1ߕ(.q̐eDcڟ+F9 Tq>X)ا02y3Kvّ5?CQTCuFvjav`֦9ôi.]_3ޘB!HjG% {cGg[ItϬ2VtrH N6W }\\Pdw KrJ: q<e}@/w6WBݫRw'Է odֻF 䬛 :lEI\_Jmlm+~ln3F'UHhAXoʠ6Ԏyqk Tp&6xDc]`'4rOEz]r 3!\] k+(6JP&FuMi3ѯ?'; uG>EĬxrƼF>-jS7w~1 I DL}6ɖ.K&}+ l>]f1K>Or-"5Qd+6/n΋ ^cYn,3plrB[.Cow͚S\ݍ^~n/hr6"L|[klnWc iiRIǹe k-rĭ/麜Igom޼Rϊ'|v꫐,_y6݂;կmaBK>3hJ=6Nsjq MLL+-OrPl#BKr$-7邷[hs:PY(&xw vhCC9oSH(}sLgGF^Ӈb|,d5.|@>=+AZEE6>4Ӵ'd/ϥrjOgOPz4&n>b$K_I8&(k'QtFw|sju*W$&%]5P;8wvez[J# G@ L^[$YMF'䃁pW:lswN6Y)GFA mf 5[cZK:I7>-ddӭ}1<$ {rPLY&9!P <c>ϝM!O' ΦWm^7k\l #/E 8 l;a9^Bʢ\>l̕.yꪁ9pkWo7Tzne@9""nJ%D6 M8#]DB_P{ &湇6*.2ڧ*Ak|Զlp/K }7~\cGx/Fl~W?27ݰ$VƜŰ?)Xg2SyB3}o _䑇&XN_ThĚ[ ~~'c6WiVyzOtjnoxuldge5Һ|i^u}<%`l^{ɗ@k]P|9hU?e ҍj &sf0<B}CxՀbW[Vƹ:ݽu76 >t6Z[v'W-_;PG6czگ-/3a\WF,l5e;?|Kz֎+3:kxF{[T0j ̀#cΕcwoY8P/R#gSiڛ8e­u!d+yx^]ERgӸH_E_XbLZkbVm}rXXbɈFr}AVS;-|f@0ą'%]ԞNljŝTog{ lʆæC\ -INQ֯*>0.h.'Sl*h=n'3aON}QvI31VFMܳ>-7=׏]d(Y1X<>7̻ۧC7Fl|/RePA-|qV1ؾK<1J=z0`q RP7Gź$>\(!8#URJDϾ4C8,&k.V1гwM ~u~DNe;`MltE"stn 0_5LEUпkμv+nڗKt1Y|dj; _v0Y]6x oZݞ,2}Hs{N+]x>$b@8ħ~xDn휦`Q!Cdd{uz}Sg:;on<݅#<|}9 zc9;~4d+|kW>#GoN8B#>AϷF"l|ml}|g97ZYݮHͅ<_=Gl 9sf)Fno6CyP$(S~>q+x_y[St1[~Dji# 飃fq&n3zn. zb@=c῭i7P|O.%͙0}mMcxi߸9FfX;Tۍ9C܂!jt3;>e ~8:Oirf{sP^Uqd?TSOaupݺ,8DCN^m$0L]Kn:z+&) K'#8?i?9ᦛ߆}ߕd^u"1&}Ϲn,> CFٕI+OMɶ_飪>9v=/%T-Mt395Te{?+~ru ܨ h04t/w?Z\}7;ĭ?s\N߻|M5b7YSG >2'eT9!~| z^BԿDTرvy5 A됯q뤘h`PW9?2Lx9Eɐaք<ȁQH50{WAWOFєtl&[X$j l.CRBYоWNsb ^>UZz^絯!)盨A,B,6hܛCs-2)PJ\2ڌŠ2!"wmyX۳[3r=}˾xn љ [4R_ET꟮]y E5ѡWj~MjŇl|=YmI_Be!8XQX6YT˅P-)ߝ"?2:"K\cAV?{ s0}6 h&6O?Bħ)z>UȷPb]^>?6G<|`_YԛHݱ|pe1m],6Og#yܷ9EίŻ(.zolޥ *g9ώC})?R;/4a—ꎇoOGSxĩm5%S&(:U(\t])2"E:H)`v`hYO/XmMg&Cay \^OˤXꏧ{$̞^Tb4Uf8jQ$.(y$(=3C|\d0Aa<ǹ"yn0p/v\*!xo_ONB~ nuw+oO']X?T.DOcyrqcN&xD%vt4 '9d(sà vp]8WyP\*'{kzG$<,q Iw+B@oUL{WE(%"IM 1}nXG+%F_WjjU4:fUc?m>!O]o䪮wH=tb?":1Uē?,U>uL Y[3mո_W~ CKyMG>47 k~JYiWLuu'|FDwmN_FlӼW'(GHQ5y˻i#}o@K XI, 8nC#s\@^^I0s L;}QAc&lw5ѓ imKA_oؓ?"2Z14gc6KLYlQh~P^4%;&cΰO;ciڇ+r{ʢۧݢ Ru3WVVli'Z<|Z| ;~I'w#ogS副q,)C~Ɵ ljXp^3xaZˑ\%3 eiuJe ˼)Bp\#޾X {-XX)~$)9ﯭq^%Hxx1 Y@C=߫B=șŇ=D!,@mr; #`+p,g? 4kCN,24OM mO n*CL2*X$N|aU#OL||ws"lb]lHferc|t VI!g ((G K-L7npO4~'M4Rm=kscAdĂ'Z;JD@\1I[  I3YuAt}W~X е9G}D1qח ^姪:) MH҆ Ź#4z*)UOMf (-ځN-ZlUψ*b3=onngEʓg~Qxzމ_O5vd?ڃ|cy$i7Zx ُ? Ƽ0vGQ-Uz_~?}̟SJ_pEG~"q7(::P"Toy..Yߕu7X;9ݭMrVlY/Ҫ-cBn1Yvl֭fV:aKuUh'WvG.)7Wk}t?so.qgL(vmQs2jrvhvKt}`=`YO:}e7_F `QTL+&iSg=!L//Z%׷:I?a^b6}_OM|;LIoXbî"3H2b IDATtNN :]6ʼ{/X+Ӣ":`ɭʃT:4Y>&ؤ8q; 1kɯt7x?n{ ڈ'7 09􁸐‿A}_,\DgrӁVLK愈_0d_{hvu)GÅmNI8/f^虮;>ӻH% )uxw?g!"x=L~eiIbUWk,~+2og~b4zJe>So#-cWfb%€A5'wVax57]'gg_g&m\7/GζF [Xڱ!~]6.8*X94+=jq#| emPX|qu|X!$E^ň [,9{n}T[c.ņGfe88=6tBDohwY{NIbShOt2Z󔌼ϕ;o`@_E3.y@2^)wŧ?Tcd|yS%96W0}qig34kLJN*QkBЫ <5&C0r5tR}U ]flGOΨhmy'kXvMc>|orBX}DcJ}H u>tAwExK0xUP}"g#J|MRL !J6inc/n|bE~{ן$]BQ9gle@ːZKGŐ~[,&%2g1nI(_ϣ~ 1lXiN֗Ģ,·Ї˵O/0 ]9IwH8EK/őnN\%D6{lsZ;+th 1;Д->9l'knRs mʩThM<>Myw͆y@r2r2_E{yD;!6BOۓnxZcH-(eM9[ģ=Ϻ-=[ɋ2XcKӕ_6aC _~;`9>gC;M6n ȝܣ(Vq6V b>Oۗ%(ޘ9z13Q/7ҢQVAqv쇂ޒZH嶯ii߃ثFYkC<%'yD QWd1665AEm)=&A}^>o l,cF%}h1)?'~/>jA•͉-]鯏ɜb)f|23ҞН/FO?,X)w^.0\sCcVxkӡ[S(lByuFHG:/SP3@Ŀ?ݝ,ގ뒘0ɠ9/ǘ%v'^?Sc dʧ88 0ס*;I Vf&iK e %LƂ7Ək3ܴ͛/gdyWk#>ֈ6OBea*VNb9L䏺J5Qu?+4Ct ' V%=hB x1NT "*Svt~,@*|vVz oNl71B?X-?z0[ gx]d^GgSѯGٝoܕߕuEZթ+{/ndlg@YҶ'?A7k}hZ6Pdm?XLAwN?Oߍ;o-jgh!7N7- v·1\H&=ƽUTF5q*x;*)$aM,ߜ \ R{wbChwvs#cί6ɥkW8]w|PgC$S-u3̨/IkQs-l}z|ryl#Gv4*l$;="<4Cdl@tNt 7)ܮBQX-4~Z b5Vq<ɻ>P%,{cK(M7CxNxҰ<x C4n R3n4lqJm^Rkb7 '!FYz"ADtzZ\WJ'fe.)YXذU.0Sy=I,FaxbzuٽZ˙Џ3ԏ |39?]ߓ7~uC+l} z=\} -[#~)]:%.\}݉>2t4-6r ,W~ϱ d"fjT\,)٪m*ȝ2mV!Tn1MYtC7_l66nKZgϯM#]~ockc(g:jfdTf~;a6Li}XC IA᝹A9Vmc?l֧tQX?fu6sAtReZH,žHw1x, 5<m&.$lx9ByeUoLuLH#3䖥V?4IohS-^}9߂*W}U#.u};NxՆDvb|E/ns9-\nFM =Ӡ> ?Zqpu81B,θX85:νćyv~7&G_/bƏƳdv~lN5w׻T YgtB#%ٹN>p&X?ͲC;KKt\ 7>/%\>V"Mm Sr /SE]shI=Cct )9q@h"&?8 z:r4ܥQ,7wmnkG/#=PCxpwUiw%h'_P.nQy>;kVtx<&V_͓{MKc7ouյ]^3t(-z>렂r~8>oJVW8|>ԫMbjsZ,`Q9^h` YTܫ;yg3(0EAr^ꄣ#Z֛j!|Koҩw t'rk_}l2)=khټM$Ue3f>5&y/o?gWz_ & _{ oI9bZ»s3 &,xYN:?!]!W!aD>q;ע{cVu,=h4y=삹]& {6/´x y'sr᷀¾DWx9m_,7v,, ~76/٩%w~N>«څ~6[8oJ@c~,B56jxoӈna1H귏Gp?}<Qli?iSR/4;ʊjJѾv|˼g\RC 1S*˧Qߵ {tQt K9GTSS&CS&㙌M@~Bv1) ]8)sxVUJVVX{vTO5_7'Д],MnA]zFgb]݁ugu<+s[;6 *PC8s LϟM*y̲4xn[o 9rƶR\Evv5~*9.FomW;?}sWUαQriW7$y<?? 7oUj=&s>D+ÿ}593tɂFPoj j5Mmɑ?g 5DYK,N.щS?j,gB#fzgygS?5IS\[P&лphzЋKw&(+D瓒I01׼!=qe m!Bw6JS7㵿F^] =]|C|Xwh1p7g!XOJ`2Y4{H6yn2[hJ_6nY9xbbU\eYfz&ĺ-VPbsOWhž"GDM q>,X< faam1.o"YBUgej/]>TNmalsݍ.C/?#QG~@2{ul_T'_K>_NDvE|z츑rν4P%ϰ) G9q tI "]v1]|x1l:r7QCɑEEVc,{8 iQ*&g]Dh^|m0?'1N~g$km,#SMR}N84 "{ho 7_umOA$GcXs˓ D|q<7位x69׭Y/V.}`?r,d[}M%YN}6E`iĴ+gd֎|aGf`#/Ff?褮_-|2MVR~luD:V~:GɹM}R+px&k?RIԹ>vGC/`ho`Iɝc2$UZxIYThKȂRAUPDYj%p@5Pqe(h$7eG~cn LV)Ѵ٬;kQNIf&6h]}bzGXW>A׏|1չ/7th&{"w#KTy9Tzy9Q|D^t μQmЁn- EhF֞n0ӳݳ:?jr)Okx {`w%%z;!>98Z.ؾYwϗ@.E1y@v'懞7ݍ5i9r`T%u(8my7Z e>.{ԫGc9x<9'Rw$ArH6lV{:B?L!8PhP+NY4r۬7 ĴP 3q~\l66¹k=33_޻+}WyO6nf[c+{Z%+̑}68F7^,K|~'Zi і lM .jU\ÀOR_.,Vd'{Ύ2럐o}ʧONqv: DN N-E= qL`M8+0ɻ##&:K*6_quE% ͛ncP%b-cs$I IDAT,&6JR6T!IOd?Q_c`E(2W|vx quһlKwlW߰{ȿW67o"NnLoWU}C;Yųn aDC{5dƞxxZ n"#'2k94^oomtX/1 ,+F4u8G7d:nY E(1y,[PƉG3m/q-y/a CKy+c<#Y^#:#r6n Hɉ_0bfP0AXl}_)u]q{hIyD~7pesq ^>ͧ\5_z< jo$&|d+.| =,Q`"Is|-keH % sq]OBjCd΍K^=ɵ7SW;櫼ߞ31陎#=F7^z9^24c?-Z?B()z 3>YH'~Z}D0?z.O9+>9  90_^jWh{&&1I>e:&BGÏ&6d3Mdm<_y;`;ǶRv>Ͻƒp&5ЦнA 0~t\J@WZه>ϼrjO]"ؕM 7?u'mК${c{ 9ꏰ"<{̄~"%39iU7*p>x-D(oHOT?E@$4 "$OKpXۙXI_ _/Rn{#TY־s?y OjkTZ`M|/Gl|VMgkM,=|4k27JYgonm \wFRR,]rRq;n EKbc`I[iL5dw+] L t9 Hc~wٸ|w5lY|f['1U{Yw}i߁z(ڻ*yy 4'c}0r+B6Vp&V'1GTbbI_JjN#D{^ '_Su:{~چ{=fb1}X86pkZ!B8;—b$k"M!E+~{} *I&"x}@DԎCV::D Hhl¶q`gl(jP[jl2aLvZϷ'apq³~3Sh7ʦ~Mzܞݧr(˗W%!j/J )=8 ]ӫM>P;QN1n`R9?-y:I4}_? CLx 52W1 D21[]XqGH`+u1rT=/sޝ }f=?krUNۙ=<]I6gSZh8=UbbP47ܥMfS`_4~Ze_QdySXptN~yt*锛?bg/׻3hoS+; 46C 9n=9l!]ZNi8=TυGغ1[ ,FFg ,IIO&;+8r?oҜDL"M'Ϻ~k?d#INr~ Me}cwYXepp&@CAj{$|ny4?R)יV0(u5>XdZ s8>-h%o YXo:x6; (4swQ]ΒVrӳѝśT,QQ+Xޟ M}+|OwK3_ 6+8knby~w}1Y~ܕ.ZVH{mmj8'9"B[CaPQ 'gqz}_3?i,}bho_J~=1,7llTM=x:'zM顾݊#R?}N^~ GA>ZB-}N_[ -2wwmϫ qfEf5_"r ta<;\\i? X,u&6=Q&3mNͥ;sbz/iV-W]Oh/@֖>v:;? -f2Kȣ<)};h_r۬UV]]W 2 גMi#DSWXݳpᏭ9< ȼD}>ZV SKl2Y$SѸܚ򣹨ɬUL{.r&fࡥs1 1\`[k9h]N & _ɯ,^ۄ楤zQDε?}ʸQ?Sh>:+`푴 E1zϕ%-xX-^ĤlYC0شmG%Y>+ȫ) 9 Ӟ鹘]?p{5|Ąboݝ NW\}j/`M\K2z.#r?< sskwԧItL`b~\'FȌmtͽT,A߰;HH& '٨}Fƅ|qAR~TKYR'{7JtoWzn>6c˯m3{j}iQŎ3^.`۬qTXac]<6/](Pشɘz6Eϳal_D~<Sۈ(&bzϹä庹PGүo8OdWٻZdFX폌}tB٨tTUB=hX۷p|!oqq;hHGn:S|P>%w ~wux65!yj`(-n*1@n z"f# :!cw7@K:M|TSt.u[h ~ Z45n2,,zkBnR<=/˭5NE_ 4_L;ʭT~]|&<ݲkS>E}M/wKn]5>6Z'=g0{zS^ēPՇm^c`op2E"6T3+.Qxւzc%Zv뭉Zd!A- /(:?ŕ,rJ%H{[oȅHOrFYXl;_&tgjKPc}0'/">cyo#Peۨǻ_X{#Ηēov} ع+0~CV>˗15hCf~@=hqY'~ |y2~_Ʋ`d8\m|`++Wo,2C-E~]捡4S}Z|o}x}Qrx0,kY[5ovQAm H'pyk) SCQF^*8JݙzƧxX)z6\Uv{I<.7t i6W0h;&(gWwHqf\ levA?X /rNenwv:/Eu]HU6_>\y|r43em[_YtN W8),%nBԖO$~wQA,Ѹٱ]U3lbGxzw:zwCT¿.0h-[`uH&u%t N EiUG%}r >g12h_{r&=ѳ>׍ |taț :ő~\aM"\v2C!ҽ'T,v̈KMr gTd;woW7(1q+ҕ~L"_>̭A{ .odM-wb!Ĵ4\8-6א=[d ȯZIj*V3oT;^6x8R"XeA7_# ,4AI9m eJӯr~O⍆nD$)g hSGY /RtȇH{vſq Xe0|[lx|[`GĬWMc%Û^T쮂/HWCF8.Ag6vHfp6=oIq6VGӯFP\:BP^U$^˵.dž#9%&ɘԟǗ=c~ /W ~Ő,%X~95ݼVIyr?@GSNzܡqޘqHL?GhRMLSa3i n CSjR])4d2(ƛ :rT` o'ѷI(2B8LQK^E.Iۋ7I=a02j>}-~.3q ;-YO4]a݄LϠJ?]_|K#=cR[ZSGSQo#uNZ!9Yۀo_ZgYP%C%烷(:< ]*hIkJN>-l9eh: Utd6guWϦ씓~zYqd7[ ,:/'JoTv>qxQr'Gu\?J]O= O?E午X +đlYF6@)c~}OF&^ݺֳӏfTo)b7,U(q(>gU_!OǦtg}b=a$G;+t> ~/Qjk4yrѷn\ BYGrc@XBNEXYzps]Ov0;+rS#sB:nGv48q>/̔M)sZvɯ\n m7k>.5!=gι[{B6Pl@?~E|ױ q[Я̎o{Џ%kH+H34,,vՕ<F@PWф TISE[?ɤh[^IH~&~=ן@!B ;L|iQtd rdDƦj-8 C8 F\"J;1%C.:O>&8f!\AL**v;,ldC6ADVH ə4#b܉`fj/6@d_˻ Q|A}-3=Ş> xzƢ69٦w~{Wx1q\_C[W],za IDATTe1]n]׿uiPoO;J|'乒olwEyWu`TϽ~GJ&ɶ-2贱ktFJ&n=_yd>&럜C_*e,pb!y=qׇd7_Ky0.?٭E㎐Uǧ?L~-t}>[ƜM>kv3PuA{f?_>]guý)B)? Lgc'gXV~QZOpbOO|x`<;ךͣ;M- /#>ƿ(T[DW _&qx%˿؂Ϙ5W}vNaEoN/C|4H ?|«t8a4Ry9B|ꃙ]ف3ފr=vYq_}&6ѝ;?~jWw':~wr?-+Њvd2NґA O T$A8/KVʸ " ]q_ybvmHzۗ-fYDi5Cg0V>$DHV,}B!ckA7{ SAXUq%9g߄o6! ]907`Ai )lE_ g7%d֊n^l]i& B˦:X,}Hd7𕆝Sㄸ嬾v@o rR%XWi&ML㛯lO?=M6('{~$HevG\ lt'(?,P[8Tb=쮃A\ZNX/1Y(laӬW?1L.>?`jm+;ğ8 jk\Ħ3?K?4ԉ_J/1&>UYP!DgbW 7zq,r>Gu2v5߀Cu}oc.iҭX.;yg*źCwxS6p(:c#:O>Ș. y0`‚$OxCB v@(ƼTdz:hJ;?AP{?,g ݬMI?aGbL & q@߷CjW 檥 ~~eW`Q\Men{$j29^Ug&?;)x@g{FՎ-o%ÒeJQ7DQ%[{Ό%[>E,_>EHdF^p%z/̉6){ d6,vEt>#Yʱ}]ۦ{77&EmkÁZ!3SI; ]&jw$L[Bc>#El} ߤ#-R zORU@O=bw( uMbxd_d?=7nM`q7{N@s}QKt Ply__ɎI&,WVh!(9}IDǷvfmz{'ވŸUKm#wt鶣2,bm˔5pؿ Ź9l"^VDFL0u*cmAcM*7um OzAȭ CTWK?ծЌ/[ܥ5B8PCVSGI>sbxPOQnG%W%W:'^1#<8z'#=/{oKUcdt|sa:[&;Q1qWu~w"1k8i\t~희|:b1yR8] d.D/ ֿtQmǎN]%qᨿ4X M>]3-;ДMlEDap?ɅK{ }sۤ69hɦњ=Kv\xp8Kt@OMvC>rt"Wo*/#FI*S"\K?> 6b,N}I\(Ю՞MpѴT>#xoI"37&{c:aO(duh!cl AK1L<}mvnMퟋ~:g6L>}?; 8.\~/>/O~\8* 6YGFlNu $%3\ݤ .DP{ڬ )gܡkds~omiF/@gvKUBդrwa Qi|拻hmӻ9VG}*'6Z•o;ZklɈC6kǍƔ0XLGAß3N~.~Qژ~şc?dbDS8ߩ_Frܹig^ʖf-K'N'_GWG#[~GG茶?E:Ke{,a{Mj3I.`(Bp%)s.y;C|. vʩqSMbٝxdbu8YS~m Vl{І =Fjy d-;Ih)=ײ]1+m Vo!672xy~^ءC#IeM*M$&G [ ߟ$;-"ß|H5!sim6Z .n?WLRcjWho:~k >}?,uw^Z<~859{Ѹ:6f'7rÊ7&6wSUL؍ͰKrigF0{w>N^"^"Z?07lQۆ=;z2dnN9~uCsSnNed~_`54eHtͫ[Nt ^d;"&xVKGu(EW}$aߑloo%go2'Km"ۄ(󉦡ӑ5YT6Ɇ q}]->)3dkRSU~>! u$r#9$4JN~w`F`Olzdx >? Ú,H&?_r]> nw~M\e >_]bDp-L&ԲU5Yu`Ǧǡ-Lg! =)Έ_CdɄwDZ^cwwIѵZl汔/!lNne5#?,:8xv}J`"Yj]:uubm6[CZ=Y<P]1|eU/<}0]7{]oXaqTbAiKq YOl׭cbBb7VFV z y6ыUbq}sfħ)|q4J+v+l.?k۱eN_Vo:Cby n 0Yu_/6bvЁ!m:]ޔ'j4ㆶ1*wLQ;d*Q^"_gi];D:*WR;BP0d"dJ{bK2AÎ=*$`Jלp>R]iX76fw_:[(x'?No]-x/>59ѻ~`h?q(sh/Gˋ_71.-yiMZ.Y;Hn&bGr׍xM BaX'7[.8nq܉pkqTg_$ p~I1:ʇ;m )yt֯Ti|ml]8~%R^[.J%0g`zp$&Asr BP.|1}lE_,TJ!`(1c۬ٸ;&?اɗkca lmE;/r_u-OUc?jOnxm_>;mzS_S|֧ll)&=I6Qrvkub .q~8Ȟ6Qߍ~QzSWԲÔM[}һ~]tir7'6 AE -DJ \Kn3I:CW:<&n'ǚl^{Y5sn f@Um͋{iY8̞¥1427TDqY wE?ґ $X4n \g(بI@|0l@n^դcd SH}ĠoAQٰ-$Iqy~fO\%7/З%vfy"cGyw5w&u)€qFmιm}r3#Ӹ>Zd&:uWcSoDݛ}Zb^˻|ͅ b~$۴b!zjyRumcIEF\˗'tgI]U$68+%DD7.=^[mFȼ.zJ|cx)g^Z׀>_e'z'ҁtr+O#QW; l\ֱb":z;dy9M1Q6eס[sxxR=n Dϝ7)s;{v vQ9ugչ r#3$xG.$6R !}N9X͠cC5-f:$Ħ?5b-;LsZ?Mҗs؄yC_H>7I[2v,°O1<7W2i'R&h}n5=O~)0? -c}{mxώ͕ IyNmnQsK %"4EsևEߩڕyم=Vu\ k[G uz;tN*rX+~K,riK)?t[3'κz0Pq;n \y0ԗ6tj{kqĮ@ ž?C-, :_ Ľh Z0;Ķ`#%+p>Mmg#Z巨$/ar&ƣh&Ǹ;~>!`T{_sgp1XQN 9:W8kgLS-PG}LMzקTHQa["09vW8: 䖋z P`w >%E<@7 Y$U:Ë\(_?[{{[ϓ6^;&O 35>?o~رȆ 0OhC,9E?rɶN'u-5̡z۟ yŢ@~)$cvm}eɦc$y;^(t6 ECyⳘՐ "^Z7[r䎟Sq/ #7DVxo&<" ބ wQTkd27}קtT{#_˫WM+KvE>`N)!C3R?!wR  IDATMbQsd:CB;2x Ud.!.Ji9w*t}2epWwuhW%Mϣ<2`i`C`ne_4۠ Ll:ſ\S== rHKɪڣN %> ay#.ߤOxԳDqVf<͞Mk;pk}v9 [:|.| ǽaSk 6G=2E_|]1.% bxmq橘JF^}b5- ˕UYjĦ%<>5ƍ)'!>DkٗMʷVyOh-6a1cV3*)+ntT`9l-3l<dD̃-~=~^N"mgl =H0$S]5)qI_?y;6e]C^ʤsit>)_G:>\ʽ~AaΓq~Ю7OxՏH㓧?ZJȩ>M+RO[݈|̣z>O@'7N8'nh)6NhH|\š}!h>g }t:F4uhR2ud6\競BXSә}D?WqbE1:^6 #c~O}m[xiww#msSc}j6\y m_W-݀OwL@gA~m=t"vviO#>_wlvvO*ͷ}Fr4Nە;=?9 -x;~]}pHGωUycJgŔJ]͆D|URW;u$&ͷ+-ͩ/魺Gw'LotN$5p䯲If`ָt6Qܡ墫NORb>s[zӐexOv*uIC|zj]׻/&w~80@ljDNMS^NDW̋,jM̥Q~ 6M)6Lx_]bMrnXbk[}+2S9]] ^]-TތiP@ '-"|q]m-,2Fi/q?:ŏӴ}L26,h؟v>d/ȅ6ۀFAȡ'6+~w~q ,o>xolm2Rc0cT=R #l=Cgc_7xlR%lE.$g0UvXTanOt)ۥ/©NS_{/vVì|RxC0 ]q˯Kz#<-? C釖bOS)ò"u-=wnl4IΥ$r{:$iTn~=457`uLew.Ϡ\` hxNT\ Lv@.Q$mIT0;&%9>5Օ:wJFr65 nsD-[\Cc@i&6f~#?{n =LɳG-[;v99㚞 wY=w'~7j>|Ki90Wdh0X f$ƩMږ5}Cgm9w+2zw|W{%tXڢjȥcL60};wUvMɘs4̟Dӽ\# ,E rMڷ}9IvVuvco㝫j;1mM:c7ZHK OZ7V%O]y ńe.FtAGumม_\M%tڔ]Y-y82W9/.YnsF(L$PwCyp7J:g_ ; M:dyO2Q7e7l+% ɞ>#"8 b_: f1>=Q\`#ZHUgn M@bk4906*"M>niG!|b|G\8Qq6y{-xw ֬}QUo]SĐ;:m9u;8KxQbh.W%?,6=*C߻E~݅W~i-zעMimY͍ؾ_BixVʤlYzcOQBП:IV>TRqE= @I,&"pwҸAѿI8_{S0#ˠ䳲m=9蓝^af{?67{Y[S%Nj_\LOUi]q$<39RҀqmm'cT?\mNIrtO!ShOb׻T:3`||~:6WTƥMdHF;M6Ļ;ܣ\9o%KAF:>6]SF:lq9(0|vK?ȡ ;H*mrLl|u$u8GAވhGlﰦӠ&#H6$Ȅu]kkk<_\:QII96YMp|R%+ǓW 1Pu'ѶN\C`RӾgƵ# O{ϒg96F6hU3b!cye6S?vGI[F{hsҰ?dƗakKRS1NlltoN?";{bN޹/Qt-(WE9,nh=d$~i:,ւQ*lN{[>Ϧԯm ~˝9"tl _arNG"w3B\ҡ!Soi L-E2DŽ)oN "6QڛTଚ 9u=>og\ҙ$o/r'ljenr-|!x(kGWRwǼlSTÔUm(S>3l~)CHOn$IڏnR\}SYd|j%nZ"']U\Nw>O:\?PzN7nnI'Ļ0H鼺xêɏꊷ `8&dC%v]٥l =ND!FowG8#+ >t){:%ʳIbܠ=-#'ۘ0_J.$O)3Jjv['S"1 sVlZ/uܶk8b<偳4iPFHl@R.EKŐCnZ%Ϋ/%Lr%TGs=߆c9Ɗ/y>'[A] $?s=YY~#>xHˡ{~g,tF>x<qKfWJ4>G=4U0V1<^~k Жxk+굎ˑ zF:,Օo>:+;àt[.8{POaGpjt_z_OJ 1oTma5W7G{;[#v#C^y}9 ].tr3K4:#{մA3pb&9izŹT]G./~[l@q5%zvjA-ܑ)0;q]WWGu\?Blo>LQ3)>Ƈ=V4tQ9nbn*ϫfGc[Lx)wsf 9:k"/mݾyBח.]Tz9=_.C>hl _BTsqʻEoi>imn0M^YY@C|n<u~zN*? 6Z e<,H)B+]wbE~(eT+<] 9J?oA/^Uc>/{@1'y>ƛ?-O$m[^_m|:kmbyRۦmb>Ư=Ra'>ݦ2euyuۛNCpK E c-{;Gj,5|99L^pt_|GZS4і_;?.wa"9 snS܏ !3ixt\#'z=֐3-зy7hWnFA|RkT,;4p"4^}w8lRpcbA(2 BLp!>uda  w}$ wr:&ѳ tu{ͩ`^iKm:}9_~.8`w7Zp4Z_ã]I7Nwb ;KĖZ>ijo[>)c!KOvo)[:GlO{iֆ!X팗.zl_Roo&ngr/|hi;"I hV?+ŠQ#>FEF+bT.>!lwmʝSx!\ޮ0QkNf 9C]<&äLC?{ž0RJ,1.gÕ snH@ m:=k6>o./b8дaK=?vN_oYVOƮ}ƞmSDa=58 ң3GL Vh_s̫U~pn_Wty8q; IDATx`zǃÊ NbudY[Z÷M3m?:ZH?=ՖT,9_ow@rY@WÐn27\k]ЕKhRtky3d"waH~D6;=qҐ l%Kn'.y:uC~uQ~G_4̺]M6c7ec}8)D)yǣ?-,%9~^1.n,3F]Kv}&\[UkNlO"djdqHoQO\/UM`'Ac7Y͟>oͿ#gr4@9}: G3@}#N"TXl8?\<~u_Pa,$ A/aTl~.j,yrf_}8ZiζoԜyurm;8 {<^nϛLxd'; +iu&U/ӹ\67ͅ S7Oݓ#Jxa>}UhL41`ݹPJ?c`o u\<6^ &g6,Cm9fm}.@Сa`S _(yIGWg-jrzN]\ Iuzl&dyh[1~y_EyJⱸ0%lBs)vTq;/ӳvϛ.nЬC}1 Ʊխ(Wc06`3qu5(킍#8i(N'vQ|BQȄFm$$6Ho(&ѹ7{gGZ1#̿:Hm}/c'k}HkZmJRLO|2 ;u~펏Y*1Ұ <ٶèjR~1:(GK ;,7'bHR·!2M3R!M};ܓ9_ w!F|@kc>G)^]ҧyq8OmɲbHTrh|q|¿56*\_KSŃIcyO>!@*sUCFmibq24ڕ@kdB.r,X3[dhbMHԅ#Mx̮vFk*\CC9>S1>uB-&Nf!QŗĈg汨;&L.wWKP|D'^ 736#9?ym ֋zVȷsqX労XEB¹6d8nwIm<CrَKUD<Ҥ_ XP#+_IT:t@[VY͟zȞmtN. Z'x¿1z`LL#~bSu]@؝~|o"O}:SҗT+sJׇK@lwȱք(U$lP🶻DzELEmn/qX8%ݷ3OqJ.nוr++TVqBS˵Wc1]~Ex_}8Se|)"ɣx#( G1'^?"`L8k?m9yמSOFz^Ee{]Rvg2I:ZWnß2̕P:z9N07̛T#tGqc?$ ꫛ̎`[~2[e>r74:K׃zzI\u L XR6ŋw=:vw7;-F`M&\U9 鶵6rINvG4mgýn2SX,nl-|EfI4NbX;C慣SG)٘.lABRO~Nqu76IlA] FcHQZ;an!':OYknx6aC7'=S%{#' ][btnfBQg1{dm>),Yԇ|%uWSݾ~}FZfJa)觏CPśNJ6zm\/ ѐީrui)b2~0yRU{(/u(s.Vc\緟_]cä=[yoe/'y/f :ޤ5h11*~x8QsQ`Aؤ5wiY5`*Ds'cȵw3`Kv+rC0+3>`yѰ1ۤE+|&Mt$pPm6a#^`~~FE|_%ֺKk:l&ƀ{""I䴎O|3]Ӷ8׋ gIBd`n=.vY)\?~#?'7{ѪX lvj~:?hǽN]g&u(/n]/_F#2/ I_ Z  .aBd0zgk'dZ9 T+iYЂ3_q3;Wύ~S*إ G%Tr*{_J. ɇ#LZDy{tbۄr&t3>~ E#v`xYA&eyd*Cr,"b =eA?B`߁{?a:xmGw\+Cʲϥ-u=[T&mf[6Ҏ|$|\w50Z|mLn~ٶ&ʇ0ٲwc9WNo ni>A%E}{`xମҶ&_9򇇽0AΦ6T}:2KIM7<0qԈ k$rRuW~ϙ,O |#cj'}ak:b4 h_㹠֎ͩN;j6-OYe;ʐ4BwX&k'nP7wZ[0Dg]`?Չ~tޡ=m8!Wt;{+Jקmyc&J؝ Я| V9׉V^~QB:q 6Yたl8PW`|`Cyՙ'\ɐޯ );{:UɤpSu㨤dș`M[j9ob OIo(>I=ywÒ 9_''vYdq_{qzo}4< VDIm.>WEK'ؕ<[ݩ-xلL0KLg7Mm@cmd+_}mJIХb5OMhxCP B})&Wқh1t*Z{ Im*u,zW7a}>';?6#]_R6p߸ûcgn C imbɻFu>{17뽅@Ӽ-LN)sW烠=bf4Ի+|jUd-IRz'"W_ûxɉvem{:#_Xcx=AKڽ~#*?n痾Mnw`ke.R`p>cM- g`l{IQ//iKOG9/O}ҧ-WZ+ K'4':tE.wP[|copca`yMLkG_ðW|t?_7z&AucYm#'aӬ5, Erh䗊j"WqseG8ѡڙTnKm`3~q6D!(x|\v0\l$`DÒp}詸WVtǴZ~iNTl_3'̍leRĖ] ge=Lm^Ǹ]n,9ao9gIN[]Z}w0$,}bczɭψ}t6l`=W՚smO[)mVxRyӓ#`^kݷNjJH^/C|B]J=wWW+7!xw7i$;>k) X>622^k犪8c(vt{}1^Ň\!s!38YO򩯟dK G iS#{ [%WKOU/z^~g;l͡_=2:a%Ӂ6nYY_;0l{J`-2iե|㬃Ӄ}$[y8ʻNsP_ܷ?.5ҏx^ W}jR?'IGS3_nU\~WՑ:}+zm wcܺk->8?}vEx1ɿC񕹶pJMG }s68=6Oɨ+oNW6H~&Zt ȕQ Дջh2&dn$B;Vb?ew6EgP:Ypixm\_}:>EvoR7ٙWphYTOn˹Pt"Y鵧iO)lS$1nm5k]k ]|f;ʏt3qw%;ٽruaq' ߏߩL{ؿF( my0g ,tU' 5}YoDXu s Z%KQ!WPmpCVW󙒟8)#w]yy}nɆE-&՝8Oį|ӞޕI_"x{;S_qn{cS _g_b8pQj-ח/{{e+~1n˗^wQ5||+p]:|ū޺{bYH 5p7ׅ"WU9]?n~]|&M|q7l] cޥin/yyXc2.$&g|h]]EH.$ &O&MwwX>B}! cҸtyEo#z$u iӝ}hm`6H8-Kжxi}@74<Ş]ReK'Yox=z0z|?x] 9yT==5iVvbRВ*E޳]*{&ogYn~ UKcT6E~$=dKًa$L  kwF=oKbT"{û>(qd¬614sw?|ml]hz]k/^{tW d6킗oYHBD(\Nxkzϕ4޺bz5ʷn[sg_rdm[W_O<P~i`9ulvm3ITȦP1a$ȳduk0{'b:L6c<)0sdg%X(XX-:wc`>IPAh57[U)tiV m_Ik#SocG߿xrYublFۿ9d͌i};bowb׍֬&?pJ.z|j`N 9^ t+b}驫ӎ/xRh\`;:򳲳{b0ɯs|QO B{ӯ/߲7up8‡qra3Ҡ_;.x`F;K@;_d/5Zgj#h0JK<'uy Ǜdq+Dɣ f] 6=LBwAAK= y;]I]"Y{0>Ԉ#hTZZR؜k%mԗa@h=t=jVKw*+륽!_.}F'=y~֧u]}es6>W.@*n/:_qweXXK34K;}d˕۸ǜģ;1Ub/7J-mOD<17OЯ6߲7Ϟ[t&>";5 x)A7qmP-,vU#cB3ѱo -);LTB Y2nxf#P.a俥g4MȤȡ;pE]śmB&~TF>ɤ>K {LJ{㹆 oߣ6 ϏOT4WO" eA+6g[vf ro^[זF<굎;}!5+oyR+݄m ^"XoWH ϫ7;ػUo__"OrqU#C6B6ywxz-l-xv0Vd :w .12x!NiIF52^Wυ5mpcM+u;^# /-C^_gq_PUΪ^+|R_[rUu_1:BF9Q?UK ".AZJSM|-S$hqu}<8~|8{)ng~ly&G}*.O쾄]l-rJO!A!p88tt`{u5Eu//;`[hKԧ bNP!t8܂e;QODsqq4 &?`eUl|t%~1a׵:bb`ƞKN'ڵ& 2dVZwNdqޣl0l `US*./[R(I w~}!1d =?qΦEl {wEƽ%M 킵^Ĝl-oޞܔf:-%K+mW,o[2L?R'{]a#&.o>^1䴾{Y^{Shaa D6tNf];Fײru4zx:XJ.kz!1]\Ǥ"&gW5>n m0S4lIW'~h+Њߺc{+מ|?D hyƧ.bI Ŝ6[O9 ae[i `~o ]/+}TOo[k9O|m**j#q2"o<& |X}w i[咿O :kKow5%xqbvh6Y =A=dm~UbP!ď7'Uw.87~.hcc.shK[_WdZ]"s,~Dޙ?=:NkUɿ@/Gbf9.\+fٯqOed)٩tXkaoY][˛Sע1,莚]\lcS'B?T:K|[>,b#x`YVC3> ,z!oݵb\AYX9>ׄ^+ΎWJ!ie3b]W&ң~fro{]_]_{XƼq6uE.=OWU/̕_!\ 5օ=mujJ qkgJZj|*x~xoJaQCQp\75EdIn{LPE}:Q lw9 6Vi >5_#5; 2Ki7׉U"ccͱG-Hȋ S+ޖ;K~H㟓s3;q GI3Sgjin?sz.].$=\%w8Ά鳹$nsF\xA"abN.D#5&y_w.( j}1"|4-ȝt496p !? S;LtޒC,j/e`^<9ԅ359FYg nc9esl1腲bpCĬ"1 V9[y/`<\琣C ]RaMrAMϣ޶]~[ĉ:##FnyLnyI-|tG&XBXsbnvZ3MM,XˏqgqG!i%4` U_ ;91 n/ũ絪zQ]tT2 [He śပ4UxNkw|ƚm-&`2FB\6KN`DK8"b%^91O^39gŌx/RW6o%Yi2Zl;d;]mR_S#/Q[ՁBǖD^, 4:6gqx[#e[71 i+zIcslм"$l; į_;#;L}J `q> m{7U^#-nǭ&EnqbWx} `ݗ{Erh6 G{_;sp8p-l;"3|J=A{s>FY sB]cpRƣq_,_x![>"\ A^͞7"SQl5 Ռ`#IF94/[5f̿yR?צ Vds x:6$n8cwػ*%{rDD i5GoT$M|ݸ`U F'(O"̱#.1c@֨Kp3(V 8^h6n z4>hJw 5?VE/k_p#{6i^x1n7k-+XWh%[[bZ=.LO9 ]bLʫmB<[~k;5255Tuaeztƶs jeZS ڙVc-|6\aw<Ƒ<{]jH؀Ozp\'oIGgGa8uwيɝ)ɍ8Wpnp\H_,µypf}& ]TKFR_GpF<Ύyd9km{]@`4 *iVA5op@'ĕB0,Obwm&`rx8Sg`3GkiO='9gÏת=kr%3rXΦ {P r8Gu*ŏwtᶹT=EšR3ف \p;XXSL6[mTgogOÕ:c Ā_/葑'`M/mN%O\#bWs/ lf0!Q7=zF(wlW7:|@S“4;VzE+6iH9bÛ !eg.!4Ul:YC0dz=%m%BGm5d:H10bC;6g0!q|vl|3q7(K?n1IN<eܓ%Qѕ[uǎNxqZ.#υY?mZd; [C9hi`-ŎӱO:C\Nwܫis85nD"c4[[WZvP2†ލ 1Oh7\d͈yqՓsd,=`|x_N%cjts:ƾ߁🻕%`4c8P*=1.Oߺx,{ceoD  8q6,F$XLo4 >ap[cH0WqaOo܆NY|psa8SX`xd@(8.جeF95{u隓Y=ksbm8bK b.ٽNUWsc̑ Я_uN-5-? 4a"O<oqa,a mc?hŌ8#Z+#+?܀ b-Kͻу[t6 |[k:9>jv#w5~v:+XrX]ӰQ-a&,mpV]Qn%NZ\őɌ=4|AW9sTT/@wXno) \Gn=ϻIΉR$p:Z$?-Sz[Q<ғF@Mamop_$D3' sbo;|Yʆ ϗs؍xxc~ʎW+`*^-_BmL9y+A`ӨsZ_D<&,rFXbÃsͅrHk\Ǽ>UĔkoǂ|[@]7ws OphO1ѷU6)F\d>I>we:Xk8|T:ܩ9`}۠h"}f$97ap?vc209n6 3dX\#s6^N`irp/f\l~"3F2+:E y# ;=fLOYZaziß́qs :p)5dƖ#\+`Y48ÕxfGqZ 6FX@ ),^8Ӟ)^9\v-s0'@?OGb#G.?,hǵi9e*Q3J~΍dak3ȫy֒HEx&]$GfpwKBI@+7\yO8I5'z8t6r+;"Jߵ9[o͙(P">:,KL+&=?"tK'@Ot^sraRXHr] \tN`igDf8r pqIV.omYȱďD*&Y+_ H v2 7 IDATL /k⯂\?rQwDXAyl of;ٟoLb|vfwG,yFgsXcc Ӟɨk{]Ә7P0ƟR/yZy4hN5[>8Y}dͽ&oӞ'K nGʠ$n1G@r w xHn!bm$⳿h}$.mo[q"_|Hg,xg;!Q܎fw{ LAL~X|vw:"Gˋpql)Hld?ɜ;08as!7v7y:2[P@Zn$KHY!M$@$,n8sa,-&0@1 l`ID5!Zo~qGO>r|Vcዋ9Vz`sIP6qӇ6Ѐ5dY_7o$dꡟ&/ { ֌y36!VdxQ%rկ-y(@,yNυ?PۘmDv]b5jR>lp'JPSPq7lsGs|וs1{SO~;:|hO$% +bS|bf7Axk@}<'qT1Rp726jfLrfxU7c[0 uYQ8lS\\5.UojmޝraCܗ''d/rzW/4xGÉ (C~w;XNA"@\$~Kd~s̱Nꭡ-., I GջR4!M:⻙ϙY ﰰn\m6>oX uǃba.+wg9CK݌`ch;Q{wZ1R2[X/Gߠ˦dZ<}Ŷ μg'?䷅C8gW)ӕcE@F畡XJ_ˎflrx]2T|8 M$,'n&iؓJ"aA6ƽǎ?x`qb(92"64,\FD o ]na&ܱaqؠ# v†;kg7y7/Lȅ} *:ј\s.ТÆO /#ha/ y`EN<SȂcIW! S2m^$kY; MٜF$PZpB.4~٢fmO1QidJZ0}!J#fp2#L>-ODşEY>uAiwt&#o&uXv͛xB"ˉe>L 9cK \;pIζs7\]?ÛM-k'/Jg&VN.7<_ͬeML0X-h1E~.NOoĿ%!ƹioTc[2{6lxzȝPqO&/O4'6"GeE]Ac2. hg`hLԨ4<_F#TxFPO3fcM=W4V_ǟXqf$ F,K,9dMz#=gz=u(Ǩ48/iWw4t%A]KcNMyԩ>}˵FfgB|G}:Sb4ζk]񬌾12ej=?O| {A:G6ȑfr |O{!nh7'-pGđyG}LƦ /8Ĝ9g& 4z{foI99#0as1\'~E=p *z_LxǾ#p4[~Y 72_L)Y)fAL P˺ w^Sz_Xl\F|ۂueM3-$3sRzz"Mf#sԂd=FIm~U35Zqk`Hqm1 O AM3܊+rS&kK>*dmWm5Xk-+m3Zscg5: "IgAQE#3jOzt?rjA}eg9:lCFbr v}v{0[x0s8&ԁfܘj|X#v22q=6q9j밨VJWX&%xb p&F<>[6.y,q6u"(Mm )b5qaI4av-džGv>؊A*Xl| [`M>씌o]&=zr#}/}9(Txr:eKg+26\(l4J6'uNN2#a^XKy3;Xp؜?ldɇwb36þ-~5O\˻`$2ŴPi5s=$cA\.+t9Ga7\D\)_qEmM~ m[ U3=**%fr3,bc.h'ڬ][a?j@؝FHdm`\klγ(B䎿f蝃=~'n _JxlF'L5x@ gŎfm&VBozޗ7lcZq^-bc;!.ul|g7XS NUrU(G4JYcSle nyuS~Z s:۶$ļmm7/A/%_{F+ovqj_TfOg3/;Bוrٿܞxsʼn]>óeص -?=ozt؜;~`z'R }jւ@Pwg9OlD LXyB΁R"`Ư֥ i0;[d+dl ! /mg3te 'fOG/+4w h.#>O& w~,fTF*alZg #9^rB$jq.މ䃄ap^1]^ HPk=;l hdb>)]6j>n|\_9߱(ld=ZqJ)(? $95w/pؑ?i/C:C25>mY=e±RM/*xm]`׼b4 ](ڽxW_+SL|g9f^7ϧ ͓!:<8K W[SPrZqztȓQ[!;6&z``k`- \ vo ^W}ߥoΛzڂ\TN7]J6L,clxb{!/._|V=7l-ʎXL{M'5->x6Ec52{{9[ϳĂqOza/Pp>DfG <~;B͘L͡l}oeAkP#S-(h,|w@@e SJ&ho'`r lBPhs/q?8U_cc/w.bz91`#'ls왐fF}{W-Df8 p9.mK?gz\`y<c^CQ;+vXض!"HCjʹz 3mZr^/O]׵c_4۾ٹtS7ƢemJixוAt8]s߉- 44aPAi8@nvd±s1;m}m=c\zcl֜{dk[{X窝9w> lxs]#;>9awsBwmYdI 6=6lXP9sbI_s9!3 ଥ#97iϵě^y0GF|6=<ǂɕ h@sE 26_p6H7cZɘ*,.R8UFrE5[~yDi0PCa%w?sOm%[.Tul s!!Q\cwj*~O0[poBg|n:s:zE_g-棋1X$8z@ꙣzfG,CbT#b]._}1"t7QCb0W}cX\PQu'Ƹ8 <>cF/RG,v`ּ>o 5WSVn܁>|3,v%wCԆm IDAT.S@m޺5/fs,Ք{hs<~!}^lqP_EW+88Ec=W\>:*Zn ~3^pD~jx%k}5Mxڕq[pEbκmbF^ fFXt㮎0RrƆ =GO}y^) .H :hO2gL^<(N ?Y 1=\ /(/IC(\Pޱdӄt[N# +x?nytsY 5bdSf[%OAԈ 2]"8j|Z3x݋Ks<9gl1b8X3P`(#<~GفVYKoy{Ծ"6 Ϧ̴37~! ޹zd6}pa)ZfᦠL{l־FN1ND:~a/l]1>[}W5'$5[<߃v1o*[Nwz:/% G}bg0Lr~vz9c'-ȋ63LOM7%5:Yk_@ضv$Ĺ{5` Wv}V>_,=s #w3Ӈ5 ?lgF4_;˺vњIP6ɥG>hlKxBY9x20@gˀMOшj+ǎ 0F7ٸlJu=I2p;Ŕfic2gu/9끟h A.EňnBD =f!RKl/X*qXX;䂥ذnU"u^dRFQKkc ->pNO\6ov;&W/hT{bV͸6akj"(YXExb#C;!{|n|CZ}D=8 {3*wii|NW9~B O%Y$\0ސؔxi^ #?M)vc b\Ǡ0p0w|{pA~knhxJw!P~zeLӛj?fF+7u;>b"ԛ ߬i$a 3P,9\b%{a6>gQk;6CXt\[a"Ek2xb-[5Ie(ˇjێ;`5ns55,"'g{ֆVێzo?0܊Ar!05~< (8%Ю蜧Z5ZʷXG P.r&oAIBL N@\ğ̿ ~#$!.ym*Jx`K(,V"wNwS"y;B|nG}P*yh \ޭ6Υ~[~SׇY=6L@/eel~g.+ޛR'nW*]}LoNÿJqFhKV״\cu c/Ût~4rS]cb0rl #/WNDSqW|Ʈ{Q[\MbZAAxQ2ƃX̟{(m0 pۈ&Gp\Õ[۴}5s]p[`ܶOdY..&HV/`_euex{ЅaEy&g҄}c] xƊG@濧#1|aAeu+9ˠw|)\Es:89,h#$ 0{oj [*a,u]s,*fbTn(96qt< ]:=ZЗ3kPҝ-Q>u=2G + ~_O,^v?1Wr)ڜ%8cbav{xX7K)V -Xa\ ɸ;Õ[Ědz?t?@eso$Ӈ6 rں7zNWݬyt߳f^Ve3V- :GVzǷe-!6g=ox,ZS>^13636OD<ۨ'l+MuOPovxfxS]vMS@gfQcVO6Yz*gsDplGHB౒N_2DB?_ pBSP )K y_!1AcKSlSFԓwB^)9&8=A>y㥒H.BDmѵ8ߚmxU惬IM7܏zpl2ǾO9$HUQ7N>zn?Ƹ,j:`u5lN6hM~ʩkF@}6Xt3i6nlokcGSV>ė6O,Dl\1-9`#nW64lyVSY]oLٲw]ȝݒVQpjz٨A.Gbjܰh>[[1Z'I"[$Eςo>/閛23:64d+ lvBEf_+Kds5d/VX4#[,N%ztI ?+bْM@gc2R`oM=i{}# |DH ~lz\ ?| CqOL{pe>ח-apЏY`܁:NCe *@J9]sČ*QB&RMGƐ84NeS"_n#:y=T27n u\ toI6`F<[ NMa5:~O;=K0"#wfVxwok{m;b\ ؞{]egd9iߦl3|C- 6jbЌ^s@4l>>4;^{9Uolȸq)<3mh~B=` z%RnC4cVHSgj ^kT)_,g-oqL{:>E3 v:Y_;_3=֥ ~Xwz%>>ov~'QoYfp[O?! >ۅCq u4lP+/ۛ\%DJ<akM~׶Oo.Elǫh<$҃n+{m:?8T8Y$(臓FeoOYX= $Xi{j1Xk{LFw;M:SybRƴ uE̓UjS]6ku҃YfԦ)(s#rbyfbŇF4߶`f?v ߁qO6@)PHBA_jq1pu%ш+ƫp:^īZ`p;\],% f^vH>8/ߛngu"V]_a,N,[#A~e_мl3ulnw\4l}GY?i`L`Wkj@wN}9TRɛZɸO 0ᨏ\c.wgQO[2|T2Ta&P}}oݷq[v-9l7X6|cèۣKܜ"ku9; dn"_ P't`䳬 Pk7fòXΜ?E㞀{y̪H0; ; *v}o dMO N'w_?'O,K{I_!XGpr;<(g)${c'&Z[nt}m7 : x3~-q1ۑw#;Ȱ?guye1ܼb@~a1k)u99N>c?{Ӯ1۶6n-1Iq(Tyyi\Q荛ԣi˽o_BN6ʈcm`w{&WԅRsTgAetNnwlj<^ ?><<1SǩTk-~ƨ o*Qxh%v3w723j\\Gς'lz$zI͒wW=\0(8f+֫9C޽45vs[egA.,΅$G0ց &?؏#`'dIP Зc-q[]#.z_&m^1Gdֳq\7IX|y686 V#9UHcĮk Z.55g%}ڗmϿs:@]9F}8Gx}Îe0ox=LWNm I6I׶}E g]'7NB/yǰW6lQ;wX98G,Z{kMa~2hٍΘ%/Ƹy<_Rw> Sj~_l4l@|`yM:Y8#om|TV66eoh??cdpǖلpNƪ^~iѰX l9D|jq;/Mm{V6U#,ec<:F7OOLaF};OL˶EQ5Qռf6JsCr5<1[v޶im:`j`pep϶%Nswm;[h_<ڴT=<[7nwv.,.֟w.o}Z&SbTĪ~hU֡ߋ36 %e3fZ9gfё=ˁۜ6Q#  Dy'A^Q}'؜s`=M-r ho=K=1Cxr|rKE3` zO47_ܱ& :rɔ;#~9 Rq4FBM$ K=ؕ5tFɑ/{8W1sۑ%/N]sm' !(d&rj_Ð1ع;{DO0HU%RuW\~̗we|ODN~[N*YV'rMc\8mrG;Wny1&UE'tPߒ okv`~ mo_ #z7BPa`o,T`HYx< <͎׸ltVĉ݃^KU;$2Fɦ<*qLcَOj;kq{ɥp) ֶ=zڕl'-KftYg|E7 ;8c5e;Ϳ=4ȿ8K]_< Vs x L;̿&'~84f "+N2 3w<_q<TamV;Ee84Yjû܏:e+go>.gJ絀sYJwdpYR P:隕%9_3nr|÷֧Acݿ4xŭ+]i6ew\ٽ_&Sԯc_:2</rڟ ۿcpyPv |or{\&'.j![]|Oa^rW4s3zBN݋Nl\9?t7x)0=1h {blyfX6=נuuy KH%}y K(~3_D~U{}։7iIDATnpjFᛕ[dlnY@xp}`u6f|j(>MnǾԹ drE(í{=<]=q>wn^3 x5o'3J&glDz<8*1 7 =-gvrc[=[v^OS$W<0ʥLJ皜h'=g 8yϟoMZεy0'er< Zl2bwzwk?b-?)cli3xnƬ.`ocR.y˻10^r9]Ǜ3`.ρ\\9x[_06tiC}g^F|.$[Ng["J9 ry;I jpCƏsX:xa>@/˃ʷ}'xoֽP'+o/޻?7ݭ{r_\Y^8̣q.eyqF/gؔbʿ?>!Ͱ&oyWrl>XِYWq/ݸ?@FB>w5jc"Jcox'_EGcCazg1E]޾-4W}".G(>zqd8͹3敹9_ĝ룑MC_h ;ۂ_qJ_4cE^cp^Cq냃s >²-5VN=+-e:8<ΒN^W#Nc}C7GtσM|UR˞!ㄛz<\taBĐZ$7>>?ɟP A7YE >VŻڕf5oGv-*^ȈKg]1x՗}ws[=XS?'2Ƕ1l;lN֫B#SEnvI|]N͹ Gk[ cbzgn F2xԃxAס6 Zfa|,8,>ZLħ7q /}+.~ =uSfF9ºswlS=N{@r{zʂY>[ 'Q~[߱uzzèr]ePʠ9$_t>qlb=R:c6RwE<9c-hcZO2U#sj.ld5;Th UJ>9Ƨ`px<~6Ί/tdj T|,\P# +q00Ƥߓ*v;@>y/kOxd8.*a5 b5f״rtO+B҈yŘ+/FjXøn[m;>ʭUA>Q4Iҿ uj0ZOS '$Eh_+8!={lOo"Np8Y6i7?yp#jwS_(@gkҵkڭ㢶+s5, Ά~)R"'5EˆKsȡk0J9qb ^t[_ns=' zK)ʡao.zQ%{֏ zb$(>֫Řul G6F.BxbozǠq' 5J:6%-ۜ?;4|.Y6ELD6>1rU1Fn}6+19?a >X$V?ǚ0śt??j{8m疿?ew׷9xp |y 2y&_>\);<([d|$~b^s(mf> jUwKZ[FV_E׿7&|X<)]c\$\#|%Qn_ٮ_M2/%gDu4S2o߱/.o.ޣpV'VE^Obo&ĺpˏb~=@5A.\CyC ~`yA_A]=~ k̵PVg=v>;Uo5Iﶙq_wigă/2m `Zl"ygwi\fg\яX9u1nfV;?-װlyL"[q\;ӎ}I39N۶[ eqd,х} *{|lf9y1̠<Ni7o67~ULp<|0#}`>Wcx%ǻ%3~f,|yr,|Ƕu_xG@hnމĬa=쮫xͫSl~ˑ^^@Y=8z';V-g~10h)42:6"沼-z~E OҫO}%N36Q`)牋Xݣgmy O~g14nn. &+=ʝY㫖|3!ΛLRFY^Aָ _.װ%43{M.LjDލain6 Î Z9͵1`]Ƣ[ cڕͯb<^x1csn/@7.GۮeywLh^-k/qƯK[{{oca{-0vouܲSz\~;Mq#<2~H. \m. @ˌ}~e]ch}#V8U<\/z/8_?;ě =\5=x+"mOuK-<"IFaߵ74(÷N$lsGƇ׈)G7?4xR`h?P=~a}wM 9{buM'Ǽ> :/y_Kpzrw jL7oo'>V?΃3cYpȋOy.ܵ\:GGfTzzՅzR%s«5b>ᮏϷCep_eέ2П|`p&?S>"O9\~' 0O~o\Ő1}ga^VXnսQs[9BKLsѢ>s3v_`~ES}pKxѲK\CǵyΏ\gǠ9`##Mo Hs{!^c,%(!3H Zl25qy<c̏rik\W;qO'8FGVS8^YHj;yUUO |Z~bu71}P=?k~;v=P~ٹȒhK\ _G22C_L͡q;&~OKcno{Ə:<'lrz_*_ڟO<%+19G<#6Ωk C_6=+Pgىx\1'NH> Bs.ϏQRl2\SKpn竘T}u/]vr~"Y$nGOD Dmr@nV~`cJ \v%|+W89n?x& IENDB`*