From a30143fc79946b5ce906f244e370697cca4561f1 Mon Sep 17 00:00:00 2001 From: Jeffrey Phillips Freeman <jeffrey.freeman@syncleus.com> Date: Sat, 3 Dec 2016 15:26:24 -0500 Subject: [PATCH] Updated package to com.aparapi. --- README.md | 6 +- doc/AccessingMultiDimNDRangeProposal.md | 197 --------- doc/AddingLambdasToAparapi.md | 106 ----- doc/AddressSpacesUsingBuffers.md | 44 -- doc/AparapiExtensionProposal.md | 258 ------------ doc/AparapiPatterns.md | 129 ------ doc/Attribution.md | 26 -- doc/BuildingNBody.md | 40 -- doc/ByteCode2OpenCL.pdf | Bin 458346 -> 0 bytes doc/ChoosingSpecificDevicesForExecution.md | 58 --- doc/ContributionGuide.md | 48 --- doc/ConvertingBytecodeToOpenCL.md | 282 ------------- doc/DevelopersGuide.md | 29 -- doc/DevelopersGuideLinux.md | 181 --------- doc/DevelopersGuideWindows.md | 187 --------- doc/DeviceProposal.md | 65 --- ...atingMultipleEntrypointsUsingCurrentAPI.md | 226 ----------- doc/ExplicitBufferHandling.md | 220 ---------- doc/FrequentlyAskedQuestions.md | 134 ------- doc/HSAEnablementOfLambdaBranch.md | 32 -- doc/HSAEnablementOfLambdaBranchSidebar.md | 6 - doc/HowToAddUML.md | 39 -- doc/JavaKernelGuidelines.md | 72 ---- doc/LIbraryAgentDuality.md | 28 -- doc/MultipleEntryPointSupportProposal.md | 377 ------------------ doc/NewFeatures.md | 227 ----------- doc/NewOpenCLBinding.md | 51 --- doc/PossibleAparapiLambdaSyntaxOptions.md | 96 ----- doc/PrivateMemorySpace.md | 34 -- doc/ProfilingKernelExecution.md | 53 --- doc/ProfilingKernelsFromEclipse.md | 97 ----- doc/README.md | 46 --- doc/SettingUpLinuxHSAMachineForAparapi.md | 209 ---------- ...ttingUpLinuxHSAMachineForAparapiSidebar.md | 10 - doc/UnitTestGuide.md | 174 -------- doc/UsersGuide.md | 126 ------ ...singAparapiLambdaBranchWithHSASimulator.md | 46 --- doc/UsingConstantMemory.md | 50 --- doc/UsingLocalMemory.md | 180 --------- doc/UsingMultiDimExecutionRanges.md | 60 --- doc/uml.png | Bin 31633 -> 0 bytes examples/correlation-matrix/build.xml | 4 +- .../pnnl/aparapi/matrix/CorrMatrixHost.java | 10 +- .../pnnl/aparapi/matrix/CorrMatrixKernel.java | 2 +- .../gov/pnnl/aparapi/test/CorrMatrixTest.java | 2 +- examples/movie/build.xml | 2 +- examples/movie/movie.bat | 4 +- .../examples/movie/AparapiSolution.java | 6 +- .../examples/movie/ConvMatrix3x3Editor.java | 2 +- .../aparapi/examples/movie/JJMPEGPlayer.java | 2 +- .../examples/movie/PureJavaSolution.java | 2 +- .../examples/movie/ReferenceSolution.java | 6 +- pom.xml | 16 +- .../com/syncleus/aparapi/examples/All.java | 70 ++-- .../syncleus/aparapi/examples/add/Main.java | 6 +- .../aparapi/examples/blackscholes/Main.java | 6 +- .../configuration/AutoCleanUpArraysDemo.java | 6 +- .../configuration/CleanUpArraysDemo.java | 12 +- .../configuration/ConfigurationDemo.java | 8 +- .../CustomConfigurationDemo.java | 8 +- .../configuration/KernelOkayInOpenCL.java | 4 +- .../KernelWithAlternateFallbackAlgorithm.java | 4 +- ...rnelWithoutAlternateFallbackAlgorithm.java | 4 +- .../LegacyConfigurationDemo.java | 12 +- .../examples/configuration/ProfilingDemo.java | 10 +- .../ProfilingDemoNoBinaryCaching.java | 4 +- .../convolution/ConvMatrix3x3Editor.java | 2 +- .../examples/convolution/Convolution.java | 4 +- .../convolution/ConvolutionOpenCL.java | 14 +- .../convolution/ConvolutionViewer.java | 2 +- .../examples/convolution/PureJava.java | 4 +- .../aparapi/examples/effects/Main.java | 6 +- .../examples/extension/FFTExample.java | 14 +- .../aparapi/examples/extension/Histogram.java | 16 +- .../examples/extension/HistogramIdeal.java | 16 +- .../examples/extension/JavaMandelBrot.java | 10 +- .../extension/JavaMandelBrotMultiThread.java | 12 +- .../aparapi/examples/extension/Mandel.java | 20 +- .../examples/extension/MandelBrot.java | 14 +- .../examples/extension/MandelExample.java | 12 +- .../examples/extension/MandelSimple.java | 16 +- .../examples/extension/Pow4Example.java | 16 +- .../examples/extension/SquareExample.java | 20 +- .../aparapi/examples/extension/StopWatch.java | 2 +- .../examples/extension/SwapExample.java | 12 +- .../syncleus/aparapi/examples/info/Main.java | 10 +- .../aparapi/examples/javaonedemo/Life.java | 8 +- .../aparapi/examples/javaonedemo/Mandel.java | 10 +- .../aparapi/examples/javaonedemo/NBody.java | 8 +- .../syncleus/aparapi/examples/life/Main.java | 8 +- .../aparapi/examples/mandel/Main.java | 8 +- .../aparapi/examples/mandel/Main2D.java | 6 +- .../aparapi/examples/mdarray/BMatMul1D.java | 4 +- .../aparapi/examples/mdarray/BMatMul2D.java | 4 +- .../aparapi/examples/mdarray/BMatMul3D.java | 4 +- .../aparapi/examples/mdarray/DMatMul1D.java | 4 +- .../aparapi/examples/mdarray/DMatMul2D.java | 4 +- .../aparapi/examples/mdarray/DMatMul3D.java | 4 +- .../aparapi/examples/mdarray/FMatMul1D.java | 4 +- .../aparapi/examples/mdarray/FMatMul2D.java | 4 +- .../aparapi/examples/mdarray/FMatMul3D.java | 4 +- .../aparapi/examples/mdarray/IMatMul1D.java | 4 +- .../aparapi/examples/mdarray/IMatMul2D.java | 4 +- .../aparapi/examples/mdarray/IMatMul3D.java | 4 +- .../aparapi/examples/mdarray/LMatMul1D.java | 4 +- .../aparapi/examples/mdarray/LMatMul2D.java | 4 +- .../aparapi/examples/mdarray/LMatMul3D.java | 4 +- .../aparapi/examples/mdarray/MDArray.java | 4 +- .../aparapi/examples/mdarray/SMatMul1D.java | 4 +- .../aparapi/examples/mdarray/SMatMul2D.java | 4 +- .../aparapi/examples/mdarray/SMatMul3D.java | 4 +- .../aparapi/examples/mdarray/ZMatMul1D.java | 4 +- .../aparapi/examples/mdarray/ZMatMul2D.java | 4 +- .../aparapi/examples/mdarray/ZMatMul3D.java | 4 +- .../aparapi/examples/median/MedianDemo.java | 16 +- .../examples/median/MedianKernel7x7.java | 4 +- .../examples/median/MedianSettings.java | 2 +- .../aparapi/examples/nbody/Local.java | 10 +- .../syncleus/aparapi/examples/nbody/Main.java | 8 +- .../syncleus/aparapi/examples/nbody/Seq.java | 8 +- .../aparapi/examples/oopnbody/Body.java | 2 +- .../aparapi/examples/oopnbody/Main.java | 8 +- .../examples/progress/LongRunningKernel.java | 4 +- .../MultiPassKernelSwingWorkerDemo.java | 8 +- .../progress/ProgressAndCancelDemo.java | 14 +- .../aparapi/examples/squares/Main.java | 6 +- test/codegen/build.xml | 4 +- .../com/amd/aparapi/CodeGenJUnitBase.java | 10 +- .../com/amd/aparapi/CreateJUnitTests.java | 12 +- .../src/java/com/amd/aparapi/Diff.java | 2 +- .../java/com/amd/aparapi/KernelHelper.java | 4 +- .../src/java/com/amd/aparapi/Source.java | 2 +- .../src/java/com/amd/aparapi/SwingDiff.java | 4 +- .../amd/aparapi/test/Access2DIntArray.java | 2 +- .../amd/aparapi/test/AccessBooleanArray.java | 2 +- .../com/amd/aparapi/test/AccessByteArray.java | 2 +- .../amd/aparapi/test/AccessDoubleArray.java | 2 +- .../amd/aparapi/test/AccessFloatArray.java | 2 +- .../com/amd/aparapi/test/AccessIntArray.java | 2 +- .../com/amd/aparapi/test/AccessLongArray.java | 2 +- .../aparapi/test/AccessNested2DIntArray.java | 2 +- .../amd/aparapi/test/AccessShortArray.java | 2 +- .../amd/aparapi/test/AndOrAndPrecedence.java | 2 +- .../com/amd/aparapi/test/AndOrPrecedence.java | 2 +- .../amd/aparapi/test/AndOrPrecedence2.java | 2 +- .../com/amd/aparapi/test/ArbitraryScope.java | 2 +- .../com/amd/aparapi/test/ArbitraryScope2.java | 2 +- .../aparapi/test/ArbitraryScopeSimple.java | 2 +- .../amd/aparapi/test/ArrayTortureIssue35.java | 2 +- .../amd/aparapi/test/Assign2DIntArray.java | 2 +- .../test/AssignAndPassAsParameter.java | 2 +- .../test/AssignAndPassAsParameterSimple.java | 2 +- .../com/amd/aparapi/test/AssignField.java | 2 +- .../com/amd/aparapi/test/Atomic32Pragma.java | 4 +- .../com/amd/aparapi/test/BooleanToggle.java | 2 +- .../src/java/com/amd/aparapi/test/Break.java | 2 +- .../java/com/amd/aparapi/test/ByteParams.java | 2 +- .../amd/aparapi/test/ByteParamsSimple.java | 2 +- .../com/amd/aparapi/test/CallGetPassId.java | 4 +- .../java/com/amd/aparapi/test/CallObject.java | 4 +- .../amd/aparapi/test/CallObjectStatic.java | 4 +- .../com/amd/aparapi/test/CallRunSuper.java | 4 +- .../test/CallStaticInAnotherClass.java | 4 +- .../java/com/amd/aparapi/test/CallSuper.java | 4 +- .../java/com/amd/aparapi/test/CallTwice.java | 4 +- .../com/amd/aparapi/test/CharArrayField.java | 2 +- .../com/amd/aparapi/test/CharAsParameter.java | 2 +- .../java/com/amd/aparapi/test/CharType.java | 4 +- .../test/ClassHasStaticFieldAccess.java | 2 +- .../aparapi/test/ClassHasStaticMethod.java | 2 +- .../test/ClassHasStaticMethodSimple.java | 2 +- .../aparapi/test/CompositeArbitraryScope.java | 6 +- .../test/ConstantAssignInExpression.java | 2 +- .../java/com/amd/aparapi/test/Continue.java | 2 +- .../com/amd/aparapi/test/ContinueTorture.java | 2 +- .../com/amd/aparapi/test/DirectRecursion.java | 4 +- .../java/com/amd/aparapi/test/DoWhile.java | 2 +- .../src/java/com/amd/aparapi/test/Drem.java | 2 +- .../com/amd/aparapi/test/EarlyReturn.java | 2 +- .../amd/aparapi/test/EmptyWhileWithInc.java | 2 +- .../amd/aparapi/test/EntrypointRecursion.java | 4 +- .../src/java/com/amd/aparapi/test/Ex.java | 2 +- .../aparapi/test/FirstAssignInExpression.java | 2 +- .../test/FirstAssignInExpression2.java | 2 +- .../com/amd/aparapi/test/FloatParams.java | 2 +- .../amd/aparapi/test/FloatParamsSimple.java | 2 +- .../src/java/com/amd/aparapi/test/For.java | 2 +- .../src/java/com/amd/aparapi/test/ForAnd.java | 2 +- .../com/amd/aparapi/test/ForAndMandel.java | 2 +- .../test/ForAndMandelNoInitialize.java | 2 +- .../java/com/amd/aparapi/test/ForAsFirst.java | 2 +- .../amd/aparapi/test/ForBooleanToggle.java | 2 +- .../java/com/amd/aparapi/test/ForBreak.java | 2 +- .../java/com/amd/aparapi/test/ForEach.java | 2 +- .../src/java/com/amd/aparapi/test/ForIf.java | 2 +- .../com/amd/aparapi/test/ForIfMandel.java | 2 +- .../src/java/com/amd/aparapi/test/Frem.java | 2 +- .../amd/aparapi/test/IEEERemainderDouble.java | 4 +- .../amd/aparapi/test/IEEERemainderFloat.java | 4 +- .../src/java/com/amd/aparapi/test/If.java | 2 +- .../src/java/com/amd/aparapi/test/IfAnd.java | 2 +- .../java/com/amd/aparapi/test/IfAndAnd.java | 2 +- .../com/amd/aparapi/test/IfAndAndAnd.java | 2 +- .../java/com/amd/aparapi/test/IfAndOrAnd.java | 2 +- .../amd/aparapi/test/IfBooleanAndAndAnd.java | 2 +- .../amd/aparapi/test/IfBooleanAndAndOr.java | 2 +- .../amd/aparapi/test/IfBooleanAndOrAnd.java | 2 +- .../amd/aparapi/test/IfBooleanAndOrOr.java | 2 +- .../amd/aparapi/test/IfBooleanOrAndAnd.java | 2 +- .../amd/aparapi/test/IfBooleanOrAndOr.java | 2 +- .../amd/aparapi/test/IfBooleanOrOrAnd.java | 2 +- .../com/amd/aparapi/test/IfBooleanOrOrOr.java | 2 +- .../src/java/com/amd/aparapi/test/IfElse.java | 2 +- .../java/com/amd/aparapi/test/IfElseAnd.java | 2 +- .../com/amd/aparapi/test/IfElseAndAndAnd.java | 2 +- .../amd/aparapi/test/IfElseIfElseIfElse.java | 2 +- .../aparapi/test/IfElseNot__OrOr_And_.java | 2 +- .../com/amd/aparapi/test/IfElseOrOrAnd.java | 2 +- .../com/amd/aparapi/test/IfElseOrOrOr.java | 2 +- .../amd/aparapi/test/IfElse_And_Or_And.java | 2 +- .../com/amd/aparapi/test/IfElse_OrOr_And.java | 2 +- .../amd/aparapi/test/IfElse_Or_And_Or.java | 2 +- .../src/java/com/amd/aparapi/test/IfOr.java | 2 +- .../java/com/amd/aparapi/test/IfOrAndOr.java | 2 +- .../src/java/com/amd/aparapi/test/IfOrOr.java | 2 +- .../java/com/amd/aparapi/test/IfOrOrAnd.java | 2 +- .../java/com/amd/aparapi/test/IfOrOrOr.java | 2 +- .../test/If_IfElseIfElseElse_Else.java | 2 +- .../com/amd/aparapi/test/If_IfElse_Else.java | 2 +- .../aparapi/test/If_IfElse_Else_IfElse_.java | 2 +- .../java/com/amd/aparapi/test/If_If_Else.java | 2 +- .../com/amd/aparapi/test/If_If_Else2.java | 2 +- .../com/amd/aparapi/test/If_If_Else_If_.java | 2 +- .../com/amd/aparapi/test/If_OrOr_And.java | 2 +- .../com/amd/aparapi/test/If_While_Else.java | 2 +- .../amd/aparapi/test/If_While_Else_While.java | 2 +- .../amd/aparapi/test/ImplementsInterface.java | 4 +- .../amd/aparapi/test/IncArrayArgContent.java | 2 +- .../java/com/amd/aparapi/test/IncField.java | 2 +- .../amd/aparapi/test/IndirectRecursion.java | 4 +- .../java/com/amd/aparapi/test/Interface.java | 2 +- .../com/amd/aparapi/test/LongCompare.java | 4 +- .../com/amd/aparapi/test/LongCompares.java | 2 +- .../src/java/com/amd/aparapi/test/Loops.java | 2 +- .../java/com/amd/aparapi/test/MathAbs.java | 4 +- .../java/com/amd/aparapi/test/MathDegRad.java | 4 +- .../com/amd/aparapi/test/MathFallThru.java | 4 +- .../java/com/amd/aparapi/test/MathMax.java | 4 +- .../java/com/amd/aparapi/test/MathMin.java | 4 +- .../com/amd/aparapi/test/MathRemainder.java | 4 +- .../com/amd/aparapi/test/MultiContinue.java | 2 +- .../com/amd/aparapi/test/MultipleAssign.java | 2 +- .../amd/aparapi/test/MultipleAssignExpr.java | 2 +- .../src/java/com/amd/aparapi/test/NaN.java | 4 +- .../com/amd/aparapi/test/NewLocalArray.java | 2 +- .../com/amd/aparapi/test/NonNullCheck.java | 2 +- .../java/com/amd/aparapi/test/NullCheck.java | 2 +- .../test/ObjectArrayCallHierarchy.java | 4 +- .../aparapi/test/ObjectArrayCommonSuper.java | 4 +- .../aparapi/test/ObjectArrayMemberAccess.java | 4 +- .../test/ObjectArrayMemberBadGetter.java | 4 +- .../test/ObjectArrayMemberBadSetter.java | 4 +- .../aparapi/test/ObjectArrayMemberCall.java | 4 +- .../test/ObjectArrayMemberGetterSetter.java | 4 +- .../test/ObjectArrayMemberHierarchy.java | 4 +- .../test/ObjectArrayMemberNotFinal.java | 4 +- .../com/amd/aparapi/test/ObjectRefCopy.java | 4 +- .../amd/aparapi/test/ObjectWithinObject.java | 4 +- .../amd/aparapi/test/OrAndOrPrecedence.java | 2 +- .../com/amd/aparapi/test/OverloadMethod.java | 4 +- .../aparapi/test/OverriddenKernelField.java | 4 +- .../java/com/amd/aparapi/test/PlayPen.java | 2 +- .../amd/aparapi/test/PostDecArrayItem.java | 2 +- .../com/amd/aparapi/test/PostDecByte.java | 2 +- .../com/amd/aparapi/test/PostDecLocal.java | 2 +- .../com/amd/aparapi/test/PostDecPostInc.java | 2 +- .../test/PostIncArrayIndexAndElement.java | 2 +- .../amd/aparapi/test/PostIncArrayItem.java | 2 +- .../test/PostIncArrayItemAsParameter.java | 2 +- .../test/PostIncArrayItemFieldIndex.java | 2 +- .../com/amd/aparapi/test/PostIncByte.java | 2 +- .../amd/aparapi/test/PostIncByteField.java | 2 +- .../java/com/amd/aparapi/test/PostIncInt.java | 2 +- .../com/amd/aparapi/test/PostIncIntField.java | 2 +- .../com/amd/aparapi/test/PostIncLocal.java | 2 +- .../aparapi/test/PostIncLocalStandalone.java | 2 +- .../amd/aparapi/test/PostIncLocalTwice.java | 2 +- .../test/PreDecArrayIndexAndElement.java | 2 +- .../com/amd/aparapi/test/PreDecArrayItem.java | 2 +- .../com/amd/aparapi/test/PreDecPostInc.java | 2 +- .../test/PreIncArrayIndexAndElement.java | 2 +- .../com/amd/aparapi/test/PreIncArrayItem.java | 2 +- .../java/com/amd/aparapi/test/PreIncByte.java | 2 +- .../com/amd/aparapi/test/PreIncByteField.java | 2 +- .../java/com/amd/aparapi/test/PreIncInt.java | 2 +- .../com/amd/aparapi/test/PreIncIntField.java | 2 +- .../com/amd/aparapi/test/PreIncLocal.java | 2 +- .../aparapi/test/PreIncLocalStandalone.java | 2 +- .../amd/aparapi/test/PreIncLocalTwice.java | 2 +- .../aparapi/test/ReturnBooleanNewArray.java | 2 +- .../aparapi/test/ReturnBooleanVarArray.java | 2 +- .../amd/aparapi/test/ReturnByteArrayNew.java | 2 +- .../amd/aparapi/test/ReturnByteArrayVar.java | 2 +- .../aparapi/test/ReturnDoubleArrayNew.java | 2 +- .../aparapi/test/ReturnDoubleArrayVar.java | 2 +- .../amd/aparapi/test/ReturnFloatArrayNew.java | 2 +- .../amd/aparapi/test/ReturnFloatArrayVar.java | 2 +- .../amd/aparapi/test/ReturnIntArrayNew.java | 2 +- .../amd/aparapi/test/ReturnIntArrayVar.java | 2 +- .../amd/aparapi/test/ReturnLongArrayNew.java | 2 +- .../amd/aparapi/test/ReturnLongArrayVar.java | 2 +- .../amd/aparapi/test/ReturnPostIncInt.java | 2 +- .../com/amd/aparapi/test/ReturnPreIncInt.java | 2 +- .../amd/aparapi/test/ReturnShortArrayNew.java | 2 +- .../amd/aparapi/test/ReturnShortArrayVar.java | 2 +- .../com/amd/aparapi/test/RightShifts.java | 4 +- .../java/com/amd/aparapi/test/Sequence.java | 2 +- .../amd/aparapi/test/StaticFieldStore.java | 2 +- .../amd/aparapi/test/StaticMethodCall.java | 4 +- .../amd/aparapi/test/SynchronizedMethods.java | 2 +- .../java/com/amd/aparapi/test/Ternary.java | 2 +- .../java/com/amd/aparapi/test/TernaryAnd.java | 2 +- .../com/amd/aparapi/test/TernaryAndOr.java | 2 +- .../com/amd/aparapi/test/TernaryNested.java | 2 +- .../java/com/amd/aparapi/test/TernaryOr.java | 2 +- .../com/amd/aparapi/test/TwoForLoops.java | 4 +- .../UnrelatedIfElsesWithCommonEndByte.java | 2 +- .../test/UnrelatedIfsWithCommonEndByte.java | 2 +- .../aparapi/test/UnrelatedNestedIfElses.java | 2 +- .../java/com/amd/aparapi/test/UseObject.java | 4 +- .../aparapi/test/UseObjectArrayLength.java | 4 +- .../com/amd/aparapi/test/UsesArrayLength.java | 4 +- .../java/com/amd/aparapi/test/UsesNew.java | 2 +- .../java/com/amd/aparapi/test/UsesThrow.java | 2 +- .../com/amd/aparapi/test/VarargsForEach.java | 2 +- .../com/amd/aparapi/test/VarargsSimple.java | 2 +- .../src/java/com/amd/aparapi/test/While.java | 2 +- .../com/amd/aparapi/test/WhileAndMandel.java | 2 +- .../com/amd/aparapi/test/WhileEmptyLoop.java | 2 +- .../amd/aparapi/test/WhileFloatCompound.java | 2 +- .../java/com/amd/aparapi/test/WhileIf.java | 2 +- .../com/amd/aparapi/test/WhileIfElse.java | 2 +- .../amd/aparapi/test/WhileWithoutMutator.java | 2 +- .../amd/aparapi/test/While_If_IfElseElse.java | 2 +- .../java/com/amd/aparapi/test/WideInc.java | 2 +- .../java/com/amd/aparapi/test/WideLoad.java | 2 +- test/runtime/.project | 17 - test/runtime/build.xml | 4 +- .../aparapi/test/runtime/BufferTransfer.java | 8 +- .../CallStaticFromAnonymousKernel.java | 6 +- .../aparapi/test/runtime/ExplicitBoolean.java | 4 +- .../amd/aparapi/test/runtime/Issue102.java | 4 +- .../amd/aparapi/test/runtime/Issue103.java | 4 +- .../com/amd/aparapi/test/runtime/Issue68.java | 4 +- .../com/amd/aparapi/test/runtime/Issue69.java | 6 +- .../com/amd/aparapi/test/runtime/LoadCL.java | 14 +- .../amd/aparapi/test/runtime/RangeSize.java | 4 +- .../aparapi/test/runtime/Test12x4_4x2.java | 8 +- .../aparapi/test/runtime/UseStaticArray.java | 6 +- .../com/amd/aparapi/test/runtime/Util.java | 2 +- 360 files changed, 646 insertions(+), 4906 deletions(-) delete mode 100644 doc/AccessingMultiDimNDRangeProposal.md delete mode 100644 doc/AddingLambdasToAparapi.md delete mode 100644 doc/AddressSpacesUsingBuffers.md delete mode 100644 doc/AparapiExtensionProposal.md delete mode 100644 doc/AparapiPatterns.md delete mode 100644 doc/Attribution.md delete mode 100644 doc/BuildingNBody.md delete mode 100644 doc/ByteCode2OpenCL.pdf delete mode 100644 doc/ChoosingSpecificDevicesForExecution.md delete mode 100644 doc/ContributionGuide.md delete mode 100644 doc/ConvertingBytecodeToOpenCL.md delete mode 100644 doc/DevelopersGuide.md delete mode 100644 doc/DevelopersGuideLinux.md delete mode 100644 doc/DevelopersGuideWindows.md delete mode 100644 doc/DeviceProposal.md delete mode 100644 doc/EmulatingMultipleEntrypointsUsingCurrentAPI.md delete mode 100644 doc/ExplicitBufferHandling.md delete mode 100644 doc/FrequentlyAskedQuestions.md delete mode 100644 doc/HSAEnablementOfLambdaBranch.md delete mode 100644 doc/HSAEnablementOfLambdaBranchSidebar.md delete mode 100644 doc/HowToAddUML.md delete mode 100644 doc/JavaKernelGuidelines.md delete mode 100644 doc/LIbraryAgentDuality.md delete mode 100644 doc/MultipleEntryPointSupportProposal.md delete mode 100644 doc/NewFeatures.md delete mode 100644 doc/NewOpenCLBinding.md delete mode 100644 doc/PossibleAparapiLambdaSyntaxOptions.md delete mode 100644 doc/PrivateMemorySpace.md delete mode 100644 doc/ProfilingKernelExecution.md delete mode 100644 doc/ProfilingKernelsFromEclipse.md delete mode 100644 doc/README.md delete mode 100644 doc/SettingUpLinuxHSAMachineForAparapi.md delete mode 100644 doc/SettingUpLinuxHSAMachineForAparapiSidebar.md delete mode 100644 doc/UnitTestGuide.md delete mode 100644 doc/UsersGuide.md delete mode 100644 doc/UsingAparapiLambdaBranchWithHSASimulator.md delete mode 100644 doc/UsingConstantMemory.md delete mode 100644 doc/UsingLocalMemory.md delete mode 100644 doc/UsingMultiDimExecutionRanges.md delete mode 100644 doc/uml.png delete mode 100644 test/runtime/.project diff --git a/README.md b/README.md index c69d73bd..314a0480 100644 --- a/README.md +++ b/README.md @@ -1,7 +1,7 @@ # Aparapi [](http://www.apache.org/licenses/LICENSE-2.0.html) -[](http://www.javadoc.io/doc/com.syncleus.aparapi/aparapi) +[](http://www.javadoc.io/doc/com.aparapi/aparapi) [](https://gitter.im/Syncleus/aparapi?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge) A framework for executing native Java code on the GPU. @@ -14,7 +14,7 @@ A GPU has a unique architecture that causes them to behave differently than a CP Aparapi was originally a project conceived and developed by AMD corporation. It was later abandoned by AMD and sat mostly-idle for several years. Despite this there were some failed efforts by the community to keep the project alive, but without a clear community leader no new releases ever came. Eventually we came along and rescued the project, and modernized the project. Finally after such a long wait the first Aparapi release in 5 years was published and the community continues to push forward with renewed excitement. -For detailed documentation see [Aparapi.com](http://Aparapi.com) or check out the [latest Javadocs](http://www.javadoc.io/doc/com.syncleus.ferma/ferma). +For detailed documentation see [Aparapi.com](http://Aparapi.com) or check out the [latest Javadocs](http://www.javadoc.io/doc/com.aparapi.ferma/ferma). For support please use [Gitter](https://gitter.im/Syncleus/aparapi) or the [official Aparapi mailing list](https://groups.google.com/a/syncleus.com/d/forum/aparapi-list). @@ -27,7 +27,7 @@ To include Aparapi in your project of choice include the following Maven depende ```xml <dependency> - <groupId>com.syncleus.aparapi</groupId> + <groupId>com.aparapi</groupId> <artifactId>aparapi</artifactId> <version>1.0.0</version> </dependency> diff --git a/doc/AccessingMultiDimNDRangeProposal.md b/doc/AccessingMultiDimNDRangeProposal.md deleted file mode 100644 index 188cf9ba..00000000 --- a/doc/AccessingMultiDimNDRangeProposal.md +++ /dev/null @@ -1,197 +0,0 @@ -#AccessingMultiDimNDRangeProposal -*A proposal for accessing multi-dim ND range execution Updated Dec 14, 2011 by frost.g...@gmail.com* - -We can discuss this proposal either here (in comments) or via the discussion list here. - -Note this is nothing to do with accessing Java 2D arrays in Aparapi. This discussion is focused on the ability to expose the execution of kernels over 1, 2 or 3 dimensions. The memory in each case is a single contiguous region (like a single dimension primitive array). - -At present an Aparapi kernel can only be executed using a single dimension. If we wish to represent execution over WIDTH x HEIGHT element grid we would execute over the range (WIDTH*HEIGHT) and manually divide/mod getGlobalID() by WIDTH to determine the x and y for each. - -Similarly we would multiply y by WIDTH and add x (y*WIDTH+x) to convert an X,Y location to a linear global id - - final static int WIDTH=128; - final static int HEIGHT=64; - final int in[] = new int[WIDTH*HEIGHT]; - final int out[] = new int[WIDTH*HEIGHT]; - Kernel kernel = new Kernel(){ - public void run(){ - int x = getGlobaId()%WIDTH; - int y = getGlobalID()/WIDTH; - if (!(x==1 || x==(WIDTH-1) || y==1 || y==(HEIGHT-1)){ - int sum = 0; - for (int dx =-1; dx<2; dx++){ - for (int dy =-1; dy<2; dy++){ - sum+=in[(y+dy)*WIDTH+(x+dx)]; - } - } - out[y*WIDTH+x] = sum/9; - // or out[getGlobalID()] = sum/9; - } - } - - }; - kernel.execute(WIDTH*HEIGHT); - -OpenCL natively allows the user to execute over 1, 2 or 3 dimension grids via the clEnqueueNDRangeKernel() method. - -We chose not to expose this in Aparapi but there have been requests for us to allow it. - -There are a number of things to consider here: - -1. Extending the syntax of kernel.execute() to allow multi dimensional grids. -1. Mapping Kernel methods to OpenCL's get_local_id(int dim), get_local_size(int dim), get_group_id(int_dim), etc. At present we map kernel.getGlobalId() to get_local_id(0). -1. Handling all of these when an application drops back to JTP mode. - -##Extending Kernel.execute(int range) -Sadly we can't overload Kernel.execute(int range), Kernel.execute(int xrange, int yrange) and Kernel.execute(int xrange, int yrange, int zrange) because we already have kernel.execute(int, int) mapped for executing mutiple passes over the linear range. - -Remember - - for (int pass=0; pass<20; pass++){ - kernel(1024); - } -Is equivalent to - - kernel(1024, 20); -I think I would prefer - - Kernel.execute(int range) - Kernel.execute(int range, int passes) - Kernel.executeXY(int xrange, int yrange) - Kernel.executeXY(int xrange, int yrange, int passes) - Kernel.executeXYZ(int xrange, int yrange, int zrange) - Kernel.executeXYZ(int xrange, int yrange, int zrange, int passes) - Obviously in the above calls we are only supplying the global bounds for the grid. We could also provide mappings allowing local ranges. I think I would prefer - - Kernel.executeLocal(int range, int local) - Kernel.executeLocal(int range, int local, int passes) - Kernel.executeXYLocal(int xrange, int yrange, int xlocalrange, int ylocalrange) - Kernel.executeXYLocal(int xrange, int yrange, int xlocalrange, int ylocalrange, int passes) - Kernel.executeXYZLocal(int xrange, int yrange, int zrange, int xlocalrange, int ylocalrange, int zlocalrange) - Kernel.executeXYZLocal(int xrange, int yrange, int zrange, int xlocalrange, int ylocalrange, int zlocalrange, int passes) -Another alternative may be to create Range classes - - class Range{ - int passes; - int width; - static Range create(int width); - static Range create(int width, int passes); - } - - class Range2D extends Range{ - int height; - static Range create(int width, int height); - static Range create(int width, int height, int passes); - - } - - class Range3D extends Range2D{ - int depth; - static Range create(int width, int height); - static Range create(int width, int height, int passes); - } -With appropriate constructors (or factory methods) to allow - - Kernel.execute(Range range) - -Then execute would be simply. - - Kernel.execute(Range.create(1,1)) - -We can also arrange for the group size to be placed in the base Range class. - - class Range{ - int groupSize; - int passes; - int width; - static Range create(int width); - static Range create(int width, int passes); - } - -##Mapping to OpenCL multi dim methods. i.e get_global_id(1), get_local_size(2) etc -We could just add getGlobalId(int dim), getLocalSize(int dim) etc to replicate OpenCL methods. - -I would prefer to offer the following global mappings - -|Kernel | OpenCL| -|-----|------| -|getGlobalId()| get_global_id(0)| -|getGlobalX()| get_global_id(0)| -|getGlobalY()| get_global_id(1)| -|getGlobalZ()| get_global_id(2)| -|getGlobalSize()| get_global_size(0)| -|getGlobalWidth()| get_global_size(0)| -|getGlobalHeight()| get_global_size(1)| -|getGlobalDepth()| get_global_size(2)| - -And the following local mappings - -|Kernel| OpenCL| -|-----|-------| -|getLocalId()| get_local_id(0)| -|getLocalX()| get_local_id(0)| -|getLocalY()| get_local_id(1)| -|getLocalZ()| get_local_id(2)| -|getLocalSize()| get_local_size(0)| -|getLocalWidth()| get_local_size(0)| -|getLocalHeight()| get_local_size(1)| -|getLocalDepth()| get_local_size(2)| - -##An example - - final static int WIDTH=128; - final static int HEIGHT=64; - final int in[] = new int[WIDTH*HEIGHT]; - final int out[] = new int[WIDTH*HEIGHT]; - Kernel kernel = new Kernel(){ - public void run(){ - int x = getGlobalX(); - int y = getGlobalY(); - if (!(x==1 || x==(getGlobalWidth()-1) || y==1 || y==(getGlobalHeight()-1)){ - int sum = 0; - for (int dx =-1; dx<2; dx++){ - for (int dy =-1; dy<2; dy++){ - sum+=in[(y+dy)*getGlobalWidth()+(x+dx)]; - } - } - out[y*getGlobalWidth()+x] = sum/9; - // or out[getGlobalID()] = sum/9; - } - } - - }; - kernel.executeXY(WIDTH, HEIGHT); - -Or if we choose the Range class approach. - - final static int WIDTH=128; - final static int HEIGHT=64; - final int in[] = new int[WIDTH*HEIGHT]; - final int out[] = new int[WIDTH*HEIGHT]; - Kernel kernel = new Kernel(){ - public void run(){ - int x = getGlobalX(); - int y = getGlobalY(); - if (!(x==1 || x==(getGlobalWidth()-1) || y==1 || y==(getGlobalHeight()-1)){ - int sum = 0; - for (int dx =-1; dx<2; dx++){ - for (int dy =-1; dy<2; dy++){ - sum+=in[(y+dy)*getGlobalWidth()+(x+dx)]; - } - } - out[y*getGlobalWidth()+x] = sum/9; - // or out[getGlobalID()] = sum/9; - } - } - - }; - kernel.execute(Range2D.create(WIDTH, HEIGHT)); - -##Handling this from JTP mode -Mapping to OpenCL for this is all fairly straightforward. - -In Java JTP mode we will have to emulate this. For get_global_id(0..3) (getGlobalX(), getGlobalY() and getGlobalZ() using our proposed Aparapi Java mappings) we can of course easily offer reasonable implementations, this just requires the Java code to essentially nest 3 loops (or emulate) and set globalX, globalY, globalZ inside each nesting. - -For get_local_size(0..3) (getLocalWidth(), getLocalHeight() and getLocalDepth() using our proposed Aparapi Java mappings) we will need to break the globalWidth/globalHeight and globalDepth into some arbitrary equal 'chunks' (note I am avoiding using the word groups here to avoid confusion with get_group_size(0..3)! - -At present we always create a synthetic group in JTP mode which is the the # or cores. This will need to be changed. If the user requests a grid (64,64,8,8) (global width 64, global height 64, local width 8, local height 8) then we will have to create a JTP group of 64 (8x8) and just in case the kernel code contains a barrier, we will need to ensure we launch 64 threads for this group. From our experience it is best to launch one thread per core, so we may lose some JTP performance executing in this mode. \ No newline at end of file diff --git a/doc/AddingLambdasToAparapi.md b/doc/AddingLambdasToAparapi.md deleted file mode 100644 index 07e9ab9f..00000000 --- a/doc/AddingLambdasToAparapi.md +++ /dev/null @@ -1,106 +0,0 @@ -#AddingLambdasToAparapi -*Adding Java 8 Lambda Support to Aparapi Updated Jun 24, 2013 by frost.g...@gmail.com* - -In the recently added ''lambda'' branch we have been experimenting with adding lambda support to Aparapi. We believe that this upcomming Java 8 feature will be a natural way to express parallel algorithms which can be executed on the GPU. - -A link to the branch can be found here preview. - -You will need to get the latest binary build of ''Project Lambda'' to experiment with these new features. The 'Project Lambda' preview can be found here. - -Once you have a Lambda enabled Java 8 JDK Java set JAVA_HOME to your Java8 Lambda enabled compiler and build Aparapi. - -So from the root of SumatraExperiments just use - - $ ant -We are slowly walking through some of the Aparapi demos and converting them. At present NBody and Mandel have been converted. - -With Lambda enabled Aparapi we remove the need to derive from a base Kernel class, we will allow the user to express their code as a lambda using the following basic pattern - - Device.bestGPU().forEach(int range, IntConsumer lambda); -The Java 8 stream API defines a type called java.util.function.IntConsumer. This is essentially an interface with a Single Abstract Method (these types are referred to as SAM types in the stream API code). - -IntConsumer looks something like.... - - interface IntConsumer{ - public void accept(int Id); - } -So you can run the familiar 'squares' kernel using - - int in[] = ..// - int out[] = .../ - Device.bestGPU().forEach(in.length, (i)->{ - out[i] = in[i] * in[i]; - }); - -Instead of - - int in[] = ..// - int out[] = .../ - Device.bestGPU().forEach(in.length, new IntConsumer(){ - public void accept(int i){ - out[i] = in[i] * in[i]; - } - }); - -To accomodate lambda's we created Device.forEach(int range, IntConsumer ic) which converts the bytecode of the ic parameter to OpenCL at runtime. The captured args (in, out and i - in this case) are passed to the GPU and the kernel executed. - -During our early experiments we encountered an interesting issue. The new 'lambdafied' javac uses Java 7 method handles and invoke dynamic instructions to dispatch the lambda code. It does this by injecting a call to a MethodHandle factory into the call site. At runtime, this factory creates a synthetic class (to capture call-site args) and passes this to our Device.forEach(). - -We needed to analyse this synthetically generated class in order to work out which args need to be sent to the GPU. Of course we have a bunch of tools already in Aparapi for analyzing bytecode, but this code expects to find bytecode in class files (either in a Jar or on the disk), we had to find a way to access these classfile bytes to Aparapi. - -We have a couple of proposed solutions for solving this. The most promising is to turn the aparapi.dll/aparapi.so native library (used by Aparapi at runtime) into a JVMTI agent (like hprof). JVMTI agents are native libraries which have access to some aspects of a running JVM (via the JVM Tool Interface). We havea prototype JVMTI agent which 'listens' for classfiles which represent these 'synthetic lambda helpers' and allows us to get hold of the bytecode for these classes. - -This will mean that in future we will change how Aparapi is launched. - -Instead of - - $ java -Djava.library.path=path/to/aparapi -classpath path/to/aparapi/aparapi.jar:your.jar YourClass - -We will use - - $ java -agentlib=path/to/aparapi/aparapi.dll -classpath path/to/aparapi/aparapi.jar:your.jar YourClass -We are also looking into the possibility of having this agent provide the bytecode for all Aparapi classes. We believe that this will enable us to ultimately remove MethodModel/ClassModel and even the InstructionSet classes and handling all of this in JNI. - -We would welcome comments on these proposals. Either here, or in the discussion list. Let us know what you think. - -##Consequences of lambdification of Aparapi. - -* No support for local memory, group size or barriers in Lambda form -* Calls to Kernel base class methods (such as getGlobalId()) will not be allowed. The 'global id' will be passed as an arg to the lambda. -* We will need to add support for calling static methods (of course the bytecode for the called methods cannot violate Aparapi restrictions). -* We might need to drop support for multi dimension dispatch. This is more a convergence story with Sumatra (which is unlikely to support this) -* Unlikely that explicit buffer management will be simple. -* We can use lambda's for control as well as the kernel itself. See examples below. - -##Alternate forms for kernel dispatch - -This version would allow us to carry over Aparapi's device selection - - Device.bestGPU().forEach(1024, i->{lambda}); -This version would allow us to carry over Aparapi's Range selection - - Device.bestGPU().range2D(width, height).forEach(1024, rid->{lambda}); -This version would allow us to mimic Kernel.execute(1024, 5) - - Device.bestGPU().forEach(1024, 5, (id, passid)->{lambda}); -We could even have the range iterated over until some other lambda determines we are done - - Device.bestGPU().forEachUntil(1024, id->{lambda}, ->{predicate lambda}); -Explicit buffer handling could be removed in many cases by allowing the bytecode of the 'until' predicate to be snooped for buffer references. - - int lotsOfData[] = ...; - boolean found[false] = new boolean[1]; - Device.bestGPU().forEachUntil(1024, 5, - (id, passid)->{ /* mutate lotsOfData, found[0]=true when done */ } - ->{found[0]]}); -In the above cases Aparapi can determine that between each pass it needs to ''ONLY'' copy found[] back from the device. - -There is no reason that the range itself needs to be constant, we can use a collection/iterable. This helps with some reductions. - - int range[] = new int[]{1024,512,128,64,32,16,8,4,2,1,0}; - Device.bestGPU().forEach(range,{lambda}); -or the range can be a lambda itself, here we specify a start and end value for the range itself, and a lambda to provide each step. - - Device.bestGPU().forEach(1024, 1, r->{return(r/2);},(pass, r, id)->{lambda}); - // or - Device.bestGPU().forEach(1, 1024, r->{return(r*2);},(pass, r, id)->{lambda}); diff --git a/doc/AddressSpacesUsingBuffers.md b/doc/AddressSpacesUsingBuffers.md deleted file mode 100644 index a311db2f..00000000 --- a/doc/AddressSpacesUsingBuffers.md +++ /dev/null @@ -1,44 +0,0 @@ -#AddressSpacesUsingBuffers -*Proposal For OpenCL address space support using java Buffers instead of arrays. Updated Dec 8, 2011 by frost.g...@gmail.com* -The general idea is to have a AS_PRIMTYPE_Buffer for each AS=address space and PRIM=primitive type. Here is an example for LocalFloatBuffer which would be a buffer for floats that got mapped to OpenCL local address space. - -As with normal FloatBuffers, the float elements are accessed using get and put methods - -Although a LocalFloatBuffer conceptually exists only for the lifetime of a workgroup, it is still constructed in the enclosing Kernel, not in the Kernel.Entry.run method. (Aparapi does not support constructing new objects inside the Kernel.Entry.run method). - -A typical declaration would be: - - LocalFloatBuffer locbuf = new LocalFloatBuffer{12); -The argument 12 here means that 12 floats would be used by each workitem in the workgroup. So the total buffer would be LocalSize*12 floats. Aparapi would at runtime allocate a total local OpenCL buffer to be this size. Note how this removes the need for the programmer to specify localSize anywhere. - -Note: For each Kernel.Entry.execute(globalSize) call, the runtime will determine an appropriate workgroup size, also called localSize, depending on the capabilities of the device, and on the globalSize. The localSize will always evenly divide the globalSize, in other words all workgroups for an execute context will be the same size. A workitem can determine localSize by calling getLocalSize(). - -Because workitems operate simultaneously and in an undetermined order, workitems will generally only use put on its own portion of the LocalFloatBuffer between the LocalBarriers, and will generally only use get outside the LocalBarriers. - -Some example code (from NBody) follows. Here each workitem copies a "BODY" consisting of 4 floats. The global array contains 4*globalSize floats, and we want to iterate thru this global array, copying it into local memory and operating on it there. This will take globalSize/localSize "tiles". For each tile, each workitem fills in one "BODY"'s worth or 4 elements - - // outside run method... - final int BODYSIZE = 4; - LocalFloatBuffer pos_xyzm_local = new LocalFloatBuffer(BODYSIZE); - // - // inside run method... - int numTiles = globalSize / localSize; - for (int i = 0; i < numTiles; ++i) { - // load one tile into local memory - int idx = i * localSize + localId; // index into a global memory array - localBarrier(); - pos_xyzm_local.put(localId * BODYSIZE + 0, pos_xyzm[idx * BODYSIZE + 0]); - pos_xyzm_local.put(localId * BODYSIZE + 1, pos_xyzm[idx * BODYSIZE + 1]); - pos_xyzm_local.put(localId * BODYSIZE + 2, pos_xyzm[idx * BODYSIZE + 2]); - pos_xyzm_local.put(localId * BODYSIZE + 3, pos_xyzm[idx * BODYSIZE + 3]); - // Synchronize to make sure data is available for processing - localBarrier(); - - // now the entire LocalFloatBuffer has been filled. - // each workitem might use the entire Buffer - // which consists of localSize BODYs - for (int j = 0; j < localSize; ++j) { - float r_x = pos_xyzm_local.get(j * BODYSIZE + 0) - myPos_x; - float r_y = pos_xyzm_local.get(j * BODYSIZE + 1) - myPos_y; - float r_z = pos_xyzm_local.get(j * BODYSIZE + 2) - myPos_z; - // ...etc \ No newline at end of file diff --git a/doc/AparapiExtensionProposal.md b/doc/AparapiExtensionProposal.md deleted file mode 100644 index 087695cb..00000000 --- a/doc/AparapiExtensionProposal.md +++ /dev/null @@ -1,258 +0,0 @@ -#AparapiExtensionProposal -*A proposed aparapi extension mechanism. Updated Feb 29, 2012 by frost.g...@gmail.com* - -##Here is a proposed Aparapi extension mechanism -This would allow a developer to create a library that could be used by Aparapi Kernel code. The library would include OpenCL and Java implementations. - -We will treat this as a live document. Please join the discussions at http://groups.google.com/group/aparapi-discuss/browse_thread/thread/7ec81ecb2169aa4 and I will update this page to reflect what I think the latest decisions are:- - -Currently Aparapi allows Java bytecode to be converted to OpenCL at runtime. Only the OpenCL generated by this conversion process is made available. Sometimes for performance reasons we might want to allow hand coded OpenCL to be called from Aparapi kernel code. - -Here we will present a strawman API which would allow extension points to be added by an end user or by a library provider. - -We will use an FFT usecase to walk through the steps. - -The FFT (Fast Fourier Transform) algorithm can be coded in Aparapi, but for performance reasons handcrafted OpenCL is likely to be more performant. The goal is to allow Aparapi to do what it does best, i.e. manage the host buffer allocations and provide a mechanism for binding arbitrary opencl code at runtime. - -So lets assume we wanted an Aparapi Kernel to be able to call an Aparapi extension for computing FFT (forward and reverse). The Kernel implementation might look like this. - - public static class BandStopFilter extends Kernel{ - FFT fft = new FFT(); // Create an instance of the Extension point. - float[] real; - float[] imaginary; - - BandStopFilter (float[] _real){ - real = _real; - imaginary = new float[_real.length]; - - } - - @Override public void run() { - fft.forward(real, imaginary); - } - } - -The main method then would just execute the Kernel using the familiar kernel.execute() method :- - - public static void main(String[] args) { - float[] data = new float[1024]; - BandStopFilter kernel = new BandStopFilter (data); - kernel.execute(data.length); - } - -Essentially we want the FFT.forward(float[] _real, float[] _imaginary) and FFT.reverse(float[] _real, float[] _imaginary) methods to be callable from Aparapi Kernel code. We want Aparapi to handle the call-forwarding and the argument/buffer mapping transfers. We want Aparapi to call the Java methods normally if OpenCL is not available but would like Aparapi to use the implementor provided OpenCL if it is. So the implementor will be required to provide both a Java and an OpenCL version of the callable methods because Aparapi will decide which version needs to be called ant runtime. - -Any extension point is required to implement the AparapiExtensionPoint interface. - -public class AparapiExtensionPoint - public String getOpenCL(); -} -Here is a possible (although incomplete) FFT implementation. - - public class FFT implements AparapiExtensionPoint{ - @AparapiCallable public void forward( - @Global @ReadWrite float[] _data, - @Global @ReadWrite float[] _imaginary) { - // java implementation - } - - @AparapiCallable public void reverse( - @Global @ReadWrite float[] _data, - @Global @ReadWrite float[] _imaginary) { - // java implementation - } - - @Override public String getOpenCL() { - return "" - +"void my_package_FFT_forward(" - +" __global float* _real," - +" __global float* _imaginary )" - +" {" - +" // OpenCL implemention" - +" }" - +"void my_package_FFT_reverse(" - +" __global float* _real," - +" __global float* _imaginary )" - +" {" - +" // OpenCL implemention" - +" }"; - } - } - -The implementer’s class will be required to define the callable aparapi methods as well as implement the `getOpenCL()` method so that the OpenCL implementation of those methods can be extracted at run-time. - -Aparapi will provide annotations to decorate the methods and args/parameters of the exposed callable methods . These annotations provide information so that Aparapi locate the callable methods as well as parameter hints to help coordinate buffer types (global, local, constant) and transfer directions (read,write, readWrite) when executing the methods from a Kernel. This information is consulted during the normal bytecode analysis that Aparapi provides when Aparapi hits the call site. - -Note that the Java code inside the `@AparapiCallable` functions (or code executed from it) is not constrained to the normal Aparapi subset. It can be any legitimate Java code, but should be thread safe (because it will be called from JTP mode!). - -Note also that the OpenCL code yielded from the `getOpenCL()` method is assumed to be complete, Aparapi does not attempt to parse this code. If the code fails to compile Aparapi will fallback and execute the whole Kernel in JTP mode. - -BTW we show getOpenCL() returning a String literal. This is most likely to be how code is returned. However, it could be extracted from a File? a resource in the Jar file? or dynamically generated based on some state. For example an FFT implementation might choose to use different code for radix2 or radix4 implementations (based on a paramater passed to `FFT()` constructor - say `FFT(FFT.RADIX2))` in which case the getOpenCL() method might yield different code. - -The above proposal covers the case where a third party might want to provide an Aparapi extension point as a library. - -We might also consider allowing single methods within the Kernel to be optimized, where the OpenCL is made available via the AparapiCallable annotation. The method would still use the same Annotations for the args (to allow buffer txfers to be optimized). - - Kernel k = new Kernel(){ - @AparapiCallable(†/* opencl code for sum() goes here */â€) - int sum(@Global @ReadWrite int[] data, int length){ - int sum = 0; - for (int v:data){ - sum+=v; - } - } - @Override public void run(){ - sum(data); - } - } - -Here are the proposed new interfaces/annotations - - public interface AparapiExtensionPoint { - public String getOpenCL(); - } - @Retention(RetentionPolicy.RUNTIME) @Target(ElementType.METHOD) - public @interface AparapiCallable { - String value default NULL; - } - - @Retention(RetentionPolicy.RUNTIME) @Target(ElementType.PARAMETER) - public @interface Global {} - - @Retention(RetentionPolicy.RUNTIME) @Target(ElementType.PARAMETER) - public @interface Local {} - - @Retention(RetentionPolicy.RUNTIME) @Target(ElementType.PARAMETER) - public @interface Constant {} - - @Retention(RetentionPolicy.RUNTIME) @Target(ElementType.PARAMETER) - public @interface ReadWrite {} - - @Retention(RetentionPolicy.RUNTIME) @Target(ElementType.PARAMETER) - public @interface ReadOnly {} - - @Retention(RetentionPolicy.RUNTIME) @Target(ElementType.PARAMETER) - public @interface WriteOnly {} - -And here is the example code in one chunk - - public class FFT implements AparapiExtensionPoint{ - @AparapiCallable public void forward( - @Global @ReadWrite float[] _data, - @Global @ReadWrite float[] _imaginary) { - // java implementation - } - - @AparapiCallable public void reverse( - @Global @ReadWrite float[] _data, - @Global @ReadWrite float[] _imaginary) { - // java implementation - } - - @Override public String getOpenCL() { - return "" - +"void my_package_FFT_forward(" - +" __global float* _real," - +" __global float* _imaginary )" - +" {" - +" // OpenCL implemention" - +" }" - +"void my_package_FFT_reverse(" - +" __global float* _real," - +" __global float* _imaginary )" - +" {" - +" // OpenCL implemention" - +" }"; - } - } - - public class BandStopFilter extends Kernel{ - FFT fft = new FFT(); - float[] real; - float[] imaginary; - - BandStopFilter (float[] _real){ - real = _real; - imaginary = new float[_real.length]; - - } - - @Override public void run() { - fft.forward(real, imaginary); - } - } - - public static void main(String[] args) { - float[] data = new float[1024]; - BandStopFilter kernel = new BandStopFilter (data); - kernel.execute(data.length); - } - -After discussion I think we are converging on a less complex solution. This is based on Witold's feedback suggestion (see below) where we use OpenCL annotations rather than forcing the implementation of the interface and the `getOpenCL()` method as originally suggested. - -So we will create an `@OpenCL` annotation for classes/methods. - -The `@OpenCL` annotation on the methods will contain the OpenCL source replacement for a specific method. The arg list will be created by Aparapi. - -The @OpenCL annotation on a class allows us to optionally introduce common code (helper methods, #pragmas, constants) which will precede the method declarations in the OpenCL code. - -So an FFT example whereby forward() and reverse() methods both called a common foo() method might look like this. - - @OpenCL(common="/* common void foo(){} + maybe #pragmas + accessable - global fields declared here */") - public class FFT extends AparapiExtensionPoint { - @OpenCL(signature="//function signature - OPTIONAL", body="{ /* uses foo(); */ }") - public void forward( - @Global @ReadWrite float[] _data, - @Global @ReadWrite float[] _imaginary) { - // java implementation - } - @OpenCL(function="{ /*uses foo(); */) }") - public void reverse( - @Global @ReadWrite float[] _data, - @Global @ReadWrite float[] _imaginary) { - // java implementation - } - } - } - -To invoke from an Aparapi kernel. We should be able to do something like - - public class BandStopFilter extends Kernel{ - FFT fft = new FFT(); - float[] real; - float[] imaginary; - - BandStopFilter (float[] _real){ - real = _real; - imaginary = new float[_real.length]; - - } - - @Override public void run() { - fft.forward(this, real, imaginary); - } - } - - public static void main(String[] args) { - float[] data = new float[1024]; - BandStopFilter kernel = new BandStopFilter (data); - kernel.execute(data.length); - } - -Ideally we would also like to invoke FFT directly (instead of via a Kernel). This is tricky because the forward()} and reverse() methods will need to be invoked across a range and of course the dispatch across the range needs to be initiated from Aparapi. - -The only way I can see how to do this is to force the creation of an interface so we can use Java's existing Proxy mechanism to create a wrapper. - - @OpenCL(wraps=FFT.class); - interface FFTInterface{ - public void forward( Range _range, float[] _data, float[] _imaginary); - public void reverse( Range _range, float[] _data, float[] _imaginary); - } - Then provide a mechanism for extracting a proxy and invoking it. - - float[] real = //?? - float[] imag = //?? - Aparapi.wrap<FFT>(FFTInterface.class).forward(range, real, imag); - -I can't see a cleaner solution. diff --git a/doc/AparapiPatterns.md b/doc/AparapiPatterns.md deleted file mode 100644 index 7baf1cbb..00000000 --- a/doc/AparapiPatterns.md +++ /dev/null @@ -1,129 +0,0 @@ -#AparapiPatterns -*Examples and code fragments to demonstrate Aparapi fetaures. Updated Jul 24, 2012 by frost.g...@gmail.com* - -##Aparapi Patterns - -The following suggestions help solve some common problems found in using Aparapi. - -Additional suggestions and solutions to extend this list would be welcome. - -##How do I return data from a kernel if I can’t write to kernel fields? - -Use a small array buffer (possibly containing a single element) and assign it from the kernel. - -For example, the following kernel code detects whether the buffer[] contains the value 1234. The flag (true or false) is returned in found[0]. - - final int buffer[] = new int[HUGE]; - final boolean found[] = new boolean[]{false}; - // fill buffer somehow - kernel kernel = new kernel(){ - @Override public void run(){ - if (buffer[getGlobald()]==1234){ - found[0]=true; - } - } - }; - kernel.execute(buffer.length); - -This code does include a race condition, whereby more than one value of `Kernel.getGlobalId()` might contain 1234 and try to set `found[0]`. This is not a problem here, because we don't care if multiple kernel executions match, provided one flips the value of `found[0]`. - -##How can I use Aparapi and still maintain an object-oriented view of my data? - -See the NewFeatures page. Aparapi can now handle simple arrays of objects, which minimizes the amount of refactoring required to experiment with Aparapi. However, performance is still likely to be better if your algorithm operates on data held in parallel primitive arrays. To get higher performance from Aparapi with minimal exposure to data in this parallel primitive array form, we can (with a little work) allow both forms of data to co-exist. Let’s reconsider the NBody problem (http://en.wikipedia.org/wiki/N-body_problem) . - -A Java developer writing an NBody solution would most likely create a Body class: - - class Body{ - float x,y,z; - float getX(){return x;} - void setX(float _x){ x = _x;} - float getY(){return y;} - void setY(float _y){ y = _y;} - float getZ(){return z;} - void setZ(float _z){ z = _z;} - - - // other data related to Body unused by positioning calculations - } - -The developer would also likely create a container class (such as NBodyUniverse), that manages the positions of multiple Body instances. - - class NBodyUniverse{ - final Body[] bodies = null; - NBodyUniverse(final Bodies _bodies[]){ - bodies = _bodies; - for (int i=0; i<bodies.length; i++){ - bodies[i].setX(Math.random()*100); - bodies[i].setY(Math.random()*100); - bodies[i].setZ(Math.random()*100); - } - } - void adjustPositions(){ - // can use new array of object Aparapi features, but is not performant - } - } - Body bodies = new Body[BODIES]; - for (int i=0; i<bodies; i++){ - bodies[i] = new Body(); - } - NBodyUniverse universe = new NBodyUniverse(bodies); - while (true){ - universe.adjustPositions(); - // display NBodyUniverse - } - -The NBodyUniverse.adjustPostions() method contains the nested loops (adjusting each body position based on forces impinging on it from all of the other bodies), making it an ideal Aparapi candidate. - -Even though this code can now be written by accessing the x, y and z ordinates of Body[] via getters/setters, the most performant Aparapi implementation is the one that operates on parallel arrays of floats containing x, y and z ordinates, with Body[10]’s state conceptually stored across x[10], y[10] and z[10]. - -So for performance reasons, you can do something like this: - - class Body{ - int idx; - NBodyUniverse universe; - void setUniverseAndIndex(NBodyUniverse _universe, int _idx){ - universe = _universe; - idx = _idx; - } - - // other fields not used by layout - - void setX(float _x){ layout.x[idx]=_x;} - void setY(float _y){ layout.y[idx]=_y;} - void setZ(float _z){ layout.z[idx]=_z;} - float getX(){ return layout.x[idx];} - float getY(){ return layout.y[idx];} - float getZ(){ return layout.z[idx];} - } - class NBodyUniverse { - final Body[] bodies; - final int[] x, y, z; - NBodyUniverse(Body[] _bodies){ - bodies = _bodies; - for (int i=0; i<bodies.length; i++){ - bodies[i].setUniverseAndIndex(this, i); - bodies[i].setX(Math.random()*100); - bodies[i].setY(Math.random()*100); - bodies[i].setZ(Math.random()*100); - } - } - void adjustPositions(){ - // can now more efficiently use Aparapi - } - } - - - - Body bodies = new Body[BODIES]; - for (int i=0; i<bodies; i++){ - bodies[i] = new Body(); - } - NBodyUniverse universe = new NBodyUniverse(bodies); - while (true){ - universe.adjustPositions(); - // display NBodyUniverse - } - -This example allows Javaâ„¢ code to treat each Body in a traditional object-oriented fashion and also allows Aparapi kernels to act on the parallel primitive array form, in order to access/mutate the position of the bodies. - -[Attribution](Attribution.md) \ No newline at end of file diff --git a/doc/Attribution.md b/doc/Attribution.md deleted file mode 100644 index 52ab3813..00000000 --- a/doc/Attribution.md +++ /dev/null @@ -1,26 +0,0 @@ -#Attribution -*Attribution Updated Sep 13, 2011 by frost.g...@gmail.com* - -##Attribution - -AMD, AMD Radeon, the AMD arrow logo, and combinations thereof are trademarks of Advanced Micro Devices, Inc. - -OpenCL is a trademark of Apple Inc used under license to the Khronos Group, Inc. - -NVIDIA, the NVIDIA logo, and CUDA are trademarks or registered trademarks of NVIDIA Corporation. - -Java , JVM, JDK and “Write Once, Run Anywhere" are trademarks of Oracle and/or its affiliates. - -Eclipse and the related logos are a trademark of The Eclipse Foundation in the United States, other countries, or both. - -Microsoft, Windows, Visual Studio, Visual Studio Express Edition are trademarks of Microsoft Corporation in the United States, other countries, or both. - -Linux is a registered trademark of Linus Torvalds - -Ubuntu is a trademark of Canonical Ltd - -Red Hat is a registered trademark of Red Hat, Inc. in the United States and other countries. - -OpenGL® and the oval logo are trademarks or registered trademarks of Silicon Graphics, Inc. in the United States and/or other countries worldwide. - -All other names used in this documentation are for identification purposes only and may be trademarks of their respective owners. diff --git a/doc/BuildingNBody.md b/doc/BuildingNBody.md deleted file mode 100644 index b6fab1a0..00000000 --- a/doc/BuildingNBody.md +++ /dev/null @@ -1,40 +0,0 @@ -#BuildingNBody -*How to build the NBody example. Updated Nov 11, 2011 by frost.g...@gmail.com* -##Building NBody -The NBody example is located in the/ examples subdirectory under the Aparapi trunk: - - trunk/ - ... - examples/ - ... - nbody/ - src/java/com.syncleus.aparapi.nbody/ - build.xml - nbody.sh - nbody.bat -The NBody example requires a little more work to build because it depends on a third party project named ‘JOGL’. - -JOGL is a set of OpenGLâ„¢ bindings for Java® and the NBody example uses this library to render the particles/bodies (potentially many thousands of them) at runtime. More information about JOGL can be found here http://jogamp.org/jogl/www. - -The build.xml file build target will download the jars required to build and run the nbody example if the files do not exist. - -To build nbody, perform the following commands. - - C:> ant clean build -The NBody build.xml file includes a ‘run’ target so you can launch the application using. - - C:> ant run -Or if you prefer to launch from either the nbody.sh or nbody.bat script. - -For Linux® we also need to chmod nbody.sh in order to execute it. - - chmod +x nbody.sh -The nbody scripts take the execution mode as the first argument, the number of bodies as the second argument, and then the height and width (in pixels). - -Windows example: - - C:> nbody GPU 32768 800 800 -Linux example: - - $ ./nbody.sh GPU 32768 800 800 -Attribution \ No newline at end of file diff --git a/doc/ByteCode2OpenCL.pdf b/doc/ByteCode2OpenCL.pdf deleted file mode 100644 index 6d51d746f087b8e4fa74a42a1580e5fcb00f5336..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 458346 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%0DSdF+i#eV4GSUCphv<>sNea?nLc0UVWM} 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%0A|;STj_CWk zQ3cRjxA?uYbN*=2$*A-8h|lXK@sbdKjJ)1r5Vsc;|Kg;@j+D~GhRj-mL=gYgu<vjQ zJi-QUVny~ay%>+jGGs71Ce=DPDKVv{$x*dy$mX*9LiQZ^1J9qAqWbyozm%^0ueO@y zDf5-pwUu>QJLlOg-#eyb7S4)kNhRP3y;c$igBPd4R8*3ZzeD{P8Gqy$#X)$@@bfKx z6BT=kJ6&m(@NoaB**>2DC>Z$WFHkF<hE;l$ImQVu-6OIvl06nD_j|64`iH8kv;!sN zkJvM9aVAbtCXuxy^^_b}DXHr6lGffIOW2E4d~Bl$=FF5(PI6&p>P($@f839<E+K#G zI0`6jTOW*yP!hz5FEbvA%}%mWP8&|BjL~MR<eyB0_LKn%@Koe&6|G>|ARrFevD~HY zmxjn!d4eNxE8X)-rHTR+Tcpp7f6b^A$#(X@MB$}ts1>8h)6Y%Cvg2G;Qo&ADvd^ea zq|}CxMU$kEE>rq(MfEEhXH0dAv}0!}YhT#guP(?+I7!A<mRV_cl4xvn#$8X&XIDSy zy=a+?lZJ$!r0i{TacI}gMdw%p;vXM5a8t%6f9E>K=3Kc=2>zt9iz)VlSKXVHU|Ng` z10LVkd2p*)|2m|Kt45G6pxR<B|FnYAlg$6?kEV|G)Av<Vry>3{*}Q^*iUT`!+9J7^ zy4_wyp^8Dfk>;0G#CcY7)?&%UHTF!Io#AeF!u%{p>y_t$JlcsngxJ;aq(`*uAtM5s zNGk{(6-OZ{Dd$RD!Rt8+W!TiLqD<wWbw)M#G3U7}M&9fN%_e8=q@sTsa8qv2Z;7q+ zSM~vBIgiYHnnK(YOqkDJZ&FUp53*a&{rq6eNOrS`lfp`>sjO14vQTa?5_m%NwBoEC zqp=L!*!SAqRh!aG55;rxbniR_R+ddMb?2s^iFmx_E9pzsDJRP>PMg&{vKf5}a5^`o z;3Mr{A!j6BM>CC-v<LkYb&p4wXxXsj8Y#GU=lHvgbd+azN0WpLc_+OpUPmcY3rT<E zqte9a%??_ghTaQ#MHfc)#}%fJvdq4|$%-Wo!5gFH8rOth35g$~t6Qln+-j4YR~*}x z8A)Bg@>WebryqwdPgyjO>rqoyR@5V%Z$3y(N=xQ^#|qaf3>l-^8S#zh)DUf7Gzngu zL4kt$zB-$eQP=V=*|K0q$w5gb1*APoET1l4Ocl=P{*D*^@=J@xBoqb_UD$h+s`rp2 zlm0{abz<Ro0=3+uv4FFVU)Dh|rzl#bEBY;hQ$y8#H|Sc}-Gj%uNWUe3Looew%N80{ zp!YDPqC;}A6iS!KUMIv~F~b}PH-*2T=4R*lE`h6|UH2Th&*sE&j$dyl94i0rF_Jc5 zhpxlyXHfct%bRBTpnBmV6ofbDawuL}mf;|AFpF$Igrxjj!pdn7=J-fjBq#3OT*cj? zfeuE*bpX%Xy&I^Ltei9Ae2B2%02SxKQ#DD+11Tfr`+=2gDBD~7xB9v^+miWI_L0sh z1W&1-ac-Yw(d@Bvt0<MJeT#|Vgb@xeL3Bfo+->TJoTj_9qo_wL9O5l4$tiuL1W%%^ zw^HElmkzw9gjm&b-miT4_efYQ$U!oQh?-Lj8l~Kcl?d=#-JNO45{TzTEHw_9Jl0&v z;Zc1_c_~lxYBVq_h0s(ExdrpsRYqno%K+MIW)NIO7|wup5Dtg$&_u!QmtF?V91=2K zT4XE<kP|5|b>Q1q3KxMhf}{?x^GRxUTj<-i4g56vb|Ne6+R!$TtQDKLF3Ke}fB4xz znL{mGMsRDzR9Y<}FyxksQiS>fTylN#as)~9<iFua3WSS0<WS%mg%5ZFKzk#ei5y^| zm34mSyUEcL$ZDP4%^^RqXuq(agTe)J3xddh!-8ti>Wd)wf*-^bqk@|M))R4}KJvGl zMlf-BdPl@}OiPLa7wS=&98l20PxG}3Z>aW&?D^}1<4by(S3s~9-|yyAonQcC1NH>C z&48By1ptc8TsM%oXcv1;atc7ZTgtMIjHGmdj7d6nUpFa+^#|*R2`GDjIRSV}f;VI= zFPNNpgvN^C7PbXv@U1{_dmviG^DNsmNsG@(mMSx+_4oeaMw5sLB=1A>o?Fu0XL9?V zSzHF-m~)R~CI|h~81}A53y1ulvEbfYB73}(SmWNtLEH;5pG`I15@H%9{@6h03H<{( zzsPI9NJ~}d>zu`Jte~*-uz290l|seDWo<zV^e+;Yu&GG|P6{xc3wKn+f8ZovK$ZKD zo%&Cc{<k`%-vJ^Fx2fhXHiM7jdpsNnf|adstz1PbOe_1X03*c3H?Raq%|PLAP^2$d zPI3DH7h(RG7v~JZ!U67qZzUk=f?L0(()1IlD<Pk{#Imld7P6TTbTc67Wx+5v{e<~J zwIo7nNE2MaTjL9!P?q^gOk8;<okC^m7C5FDx}7{87U_*+`Dv{aa=>o6GNiap72_JF zY~Yn?p23L>#Z5^$aD|(cNN|77lGo-iP^j=)mC2a0qTNz*X^miTiH(r<-a>P2u%USw z{brSv8s3&Y<QI}3Pyx;RKBD5!`#7%R&&q<ZO~{6dj3l(J&wgv(BN|*Sk&-bEna(up z&EfzAV44)GN*9Zw9M<)`560CPbTVviVAd)m6rW)c5wmQvSu|8&T;U|&^ag%SoYVhF zJBIn$Thg2n;nhiTAUeX=)3}SCTx)NrrOdSpYDf@j&?3U9N{qFK3@-=0>kJ)60d6J2 zNGkj<;{S^b;tUDm?yk^qo$S(&x=#^y0g9{Q<VAk#N)yJWnayNv%jV+}@lD$Nl+u|+ zDJido8!>;WoAfh{vy%s%oAQ-6^H+^mo{zORYnD>k4e||>SmH5cYe~iuth?4OtXw6` zYMJ@c)4LDq=40tK0GYZpA)x0o@CcsBrCR=#XAyqU8^GFto-hIOH^KOP0O6nxr6!_V zT`6m=5_PWY$*bo`2mnqL?V_aNrI1C@f?aYr?}S$xpG=FN-WH{r>jKZUjmTLJqF#VJ zFF9T!S2V4D_R|V74y@^+&IJKph5_I8Cwkdj7bSk`uaSElXnT^Lzy?A?LP%Cw0K!7` zhsB$pGDwZ3r299xK*$30c_Wuy!9ASP_UAkBHc-TXbpPO0Fa}UfQ>D$AZdu~$@6#5w zEm7*ya`P?fU5J_>HQ;sOAhoG!-(&(!2b>a{kUKCm!D%t5?gL&1KnJLlkH0wwRtH)q z9E8Ma7Y@VV%bz+3hpYSpDtFHOKH5KoAX2z+hW^8UivJ<QLc)jl!EXT7gwbVKO#i>m z0Ybk=a->7F2l|3B(GL9&f_)Hobi)6TU?1oc{SR>e6eL{PtZB69u(XN>fuPZf1{ko@ ziUwhzENB^_|4=vp4`KEnC>ccpwf+J7p8^A)QKS$1ZYIGV<8DW|5BF{-;U>(d{U11v zx{3Gb{sG~|Zo(bzA4L8s{)enzJu5b{1%EwovQ@nb(kejPAZ?-^98VCPQKdu{q6}my z5SzplRuOSM5H?X6KIL1fV5Y}o^O@CYCAwG6{9y<I#RF&PKNOC`@X7y&Q%B)=m486} zr$GBZvOMY2%9J)G2p31=%K!INCWghZa;d_}2w67sta=trLjR3SQ2%~32`0y7-3a-I zf=Ng@_QHSor;z(k#@8eiFLyc_LICF?*-`!f%~bt=|4|w4%~VpSj3VLK+|%=h82=E4 z$l{U_`VWP}@c3r`;h#e5f5^7yZ~Nx=!w@-KItqvB{s95s?$iP9A4I}&xwnP?;h&=Y z|Ci0UN>;BMFFw{F)g1BG{Kl&}He44cwJ~9_DTQQbfk;b4f}0F1Eg3diG{CHEh(}wO z0=*<dR7ZikU>uT$Z%D(kWH*@&n%3sdHx;g)D||#Mj*YdrFl*_Aw9OB~I4&;bvT)?q z&I@}gEy|^`um|154__TEN)>NeB|_IJHoE?(6!)iTfbPJ+0*43B(jvT2yo{LzixuQg zKr8`)5yV4=!wSF(AR%#Jg}Wgzm^r75O>00ZP<#pkJO<sM_2>e@2Va8dR(C@S8PLL3 zF~hjwL}=hdu0jiqVMXXd3+I~IwS&Ls>%7&%>@<)+l(7{qt%k(uqh|Gzvs%lYPOudY zuZCnf+8gXOxS;un0(*mQ4rEUtzJ5H10I-9WAaKFQ8(cIfA=sOn=?^U)-eRUKL>_9V zI8hha({HIi?4Gc&9gUWo>F5vPOFl<UX@yz0O!1;D(xy0}mD;8<f+;U7jk7*;8nuRN z3}548qaVU!4j-c&OFj+rju-7Qv<6?r#!P%`nWXd&rSc9U|2|n_{8}8l`B##Y4y35A zP}WHs3Nu?Z!=E{NuJ-^yd&zry$tQcsJNt+~_NO;{1%G+6$3ny_h&fM3^n-|!h-iR8 z5S0i*QE<-eF@!Dj%de<BKTg6AXBNk?KAH1g-;|Lg5<-$S4{uJYxKR#k=Ldp@*93&J zkRv;dqIPwqL7C7?;rjA)5V;1WwhFt-5L`vU4<1iPlfdt4x&>&51G}`b>gP^y@Es`? zB)98X)*1(+wk)LENKd;uj`p{^Yy13r-tl*CrXEg0&HdUXF_QF(pm61B987NI_zF=j za3v`z94x66wb94<VLA~^A6+~}o;7vd!*=BnrkRPE``9}Yag!hDP99vHhf$Xuzq{Zx zG({eG-XA?bUx`1xk_8kPD8-G25x>HCzaV>{6^u*-e(weyIEh__$9dYr0#~CDmVW7! z$XdGS*+r)el6rf}s1~PWYK$xu<19=*IWf-4rUcuXc}*$dF-SP3r$nbRdvt;mc>WrV za%%kfi|se=y;F9KxPGRO5_!LM=2)F6j##F+J@$sm*m|XGJc<dLX$+tEdy(uVdWzKZ z3iD)ow^cJk_R5P9o$AQ8TyffM{WGG99vwi@PKTXBxiZ_5v1Oj}_{k3t?>=3VH+)#N zX?D!Ma!g$;+Zk3?WZFNik#>7YqGE?iH$_8buWeR4<BF~oeJ88d`Si1GBlEtiqI;#h zj>`F|9y)s_)YR!`n`eI#U%dHNN1dnc8gJc{Su4y>Pv_1@^fV3##Wp_kEQ(z+2q?o< zo}$>NOX!^;ctg<Qm_+NM{NV+E8VHK5RAiO5@36p{<(g&MJc!{Ft)1t3iyo~+YjN!2 zd}EznE$$!g9HywU089<NYkz)Pl(hqzj=#+>UhdLGk7s7C-brJ)J*Do9-hVLIVunya zmyPcJeY;JDF}6W){K2V=_tHc<W|)G(&~`t9=}>i0PT<#PBxx)Iojk|GT5;M-H0mt! zx5Ni+!YnU>1EnaBG-*vRB9~6D35_f*iQ+SLDt$ka3k><PTPsVp<OS~;Rg5$)(LBl@ z^Xlm!xs8paUt>$G<Bze!JyZ`+xB2v&%m540pG8yy9tW14X*(k&l1ID0&O}lii+nxz zEop?1T3mcmk&^!LNtLqiUy=fcR5?#1UjbfOO=pa$5qDq-ZiIRIzrW@ZO2(C)1yLo! zGpk;*LZ{*vncLEQ88n1HeG}%%dn@j~NX_y2kQ0io3p|<@eYC~g7lLVHMyueK|4hV_ z6!0kcs_sarP1qKhJ*DVYXw}+@&lqV7`WKaN2*!#ue;t(D`m5%i6T=qjoH1cc$Gqp4 zSS2r0EvJhslFJoy@b#KQ${mQcUWv5A+$B@NC9Miy{2ck(JY=0R4QIR6wlc2L^HuT9 zf2RU-<%sZ?DKl=gf#0HkOxsJF+n2<bda2-xwX$UAvP9vF1OCwVO!_$*)}%|Nkww2l zVw<3sc(YowS~HlfB{Rojgp)Q>QxkyRe07P;6SAO9TyIC(G9K`GtVkeNaCYF&(vkiY zsopPvi7f(W#&q&ke6@90TrvAO$Hn5^KV$cl*E^$^oGa&+yd$@6lAIfX{Pz{gNsUwz zLK}qGAUdF@h{WPHC<?RZuZwoWG8{M~ICxD@-%5KAunK({L#ep6wemE2J?--PEoTD( z({^v}CZBLBkA;ON-8t``ckkql*W4^fV}BfI=7Z%gipZ3_!E}i^+BwR$h}uD(fEiCx z0Wr&nJ@yA;Ir?c}fp8EVfBxymtk9Po+2Mpj1{zCZXHsY6#sKed&#=6)K4l54Ki#gL zPgO_#v)yg*0a4Ce#CwH!)^L7IS#c_()1SipVJ&^J@%gnyXZy87om+7Olet4oApbi( zJu?2r7%L+ZW4G3H)MfDH1%&bbnXvx;)Ir5T%mMO)J$o0z4#?&cs}}~V9YxNS$adWL z{uB`110%<gt`F6IuztTEIZap0jmfYqTx+n#gutZFP~;N!$-OBbtqTqb?FkKav~>P} zC(1u<SM0Z7te_=%arHvHAPYuuegSUb3`gL!eQ4Sqz3+7x0WZ>;5B3#AXO5`9(4GPM zsv)1-A-In?K>c*Z#Rsep&VHzWfbdY@z#b+n4Z0*ShT`6UH=iVYV(W<1jQO6%jPRcQ zp55BCd!4EvRA(L2MA9s!ozma?skadGKK_W1E<xC}u)Bg%9pmTd(?Rs;TGS2t7i`*v z2-E!3t$_+hAwmJ0FQf7o42}od*sIEe#5^(fX*LR!BbNJqHIR<ztd;0u{B{ZGiO6~) zwhcx2>ar~Ke)CKz`Gv(FDKKizM9Bb?%-Qlx&75BILuZoah)vmmRhA6(o2OYO7txa1 zH21OA>9EeU#&mm4Uai5f4GT|rZ~o3$-><&$ywujIE|aMv@t2=>-cu8f1PYY#cw)*9 zenI8|AJ#$#-4hojkhBNDukg9tXPpOJADCCP6QQY_kU6?j=Z0cSlOLb(tY;@3D0}hw zB=Dm0?gzmZEM8GB=zi(jVb`D+^<w&hk&{S&|FhtZZwNP}y{D-2F~bH7`iX9u{P3i< ze{TrG9!w+O^$)vIeE)3G8VTJ4bu7U9!1SXq60Fb!IRL|pJTwWiCXJWU16!VG-WyPp z`IEuVG7&R*DVsi+eUP?eD+Tu9x2dOMcf?x*eW2RhI5o>K-U=j6J$NqnjzdLsN3Qcb zR|e*XgVY3&7d!B7i;%T-!W;#O&&+`CJtK7H10JERddR6B)XioD+hNbLZ)-R|FVp+- zlfh44f)`ohycLl@nmmv;<IRKdZ$_*hIA5V-jpds$fLP_4?KY~3XlBKSqf>vIL~G(X zgT@LG0v-c!jpyIiqX=l|Da!<Lkuc2#dDaRDi>R8|Goj|6aU%5e)ojx86U=|RI??J7 zcdN5Yv8%HyuToYgt4(=iikKx-ZZK>JG)QcGTr#Zd47yos!Bv~efAh05XJ@*|6qChF zHntL?*nyY%l>e0e6!lYxOAbEba$@m=(S8xS<rtM4jT}ugGHxtVr1Vkos09k|Hx31d zdc#)3MZ-1Ug@=7IK0M7o6`BJx-yH|)HEy#*n*m^cx;;glbsmtHGrB$n>&l#AH=+Dt ziUgMz?E%$D10C<6COr7a@;@Ga>Onjp;DE#Q!u8(>>6CJy%nGagPF?`Vx?wDGcTa0^ zL^Qa<&@?uvkp+M_5#2g6l4}T=i~^uNHbqV~M$0p(9OAB$8f}Or8tQ?pQQv;)B7IuY zzJj+G2@IQ4Y-akW@R!o<foklK`Xl<1`Ui2rnQsTLCMz+M;zH%lC5t^@AEbuTl(q|B z8VZQ1AosGwTJ7>;_s+-!W{Jh?Iz}1%Fjioaq)X2=!a7i;T35m1N-@^h487exv(ez^ z$>T}BI=ItHnL2KM&`FoX@idO$xVzV6Ju*f_jAVAfcv%l-Ro~Wl&oDHF0Ycfa$}Ly0 zQiCO0HXt_onkYV~#<f_;!g0L`k9c-+rXOm?=}hDQmUk-W#9j->d>~)e?2WG=h9-=+ zPW%a&bwP6b1MdJvnf^tqkuE6X#YmbC^}Y{{DqoJ1^r#-4$+Uz}%BDQsKw7kb@;6cI z@l=UrIGvU4=i=)2_E_96ffUJd)T6Er!}n<|{IF*GacylQVVO3xLp#H#rhXA=ix;vY zeFmPmWoq;=O3ja)vf1aHb7;S~Wvcw>;pgv1jC4D}hmzlw-Pg|E&sfUu=Lcvd1XM*c z7}{^&gTB*jne;R-QVg#xis_TlHuckJ4ihLq`zuxLZ_`AP@aVO{0!^sxkkhd!GQs89 zCRNMT<(W&-ERrf=x_NRyIa-Ic%KLhTGnHe`9M}!#Eb0g3u&-)W6bP>5s5T|MvmID* zQ9532O5}5=#g(IuZAxIa;DzwslLxS4?b^ptV_}O1b5O0$3))r6<ujG_^(9dG9;rf= zJzst&Q&1#Rb%|7!!H}|=$$EP`Hy6Tid|2kJvp3qRZymHH+m>%0*~W@&@H>shEl6-9 zCeRQ)yb_C|w<?Mo6#q@f@IzfGBi<R}%r=JE3MahD?RyZhbWq5j&7VYaP>wv<*;wKu zqmoWSn`Ov<ImtG3A9nu?d>|`LfC7!$hY+tzNLMXsJUB>A+WdhVj!BJ!gDWjvYG6>> zQ(*wmoeqwi)wM3SfL^3F9rtqm^>at|GW(LYTI$VcW<-52bIP?1TUgPx<f;aqU7~s9 zDI#}fB!t%N^8{s>blNy`GizE(8;zaD+09?3b}^U&BTu@Tuh2&Ka3no<3uI3EY<tkA zcU9d3We#U)`MU~@%}cz(;+EV_Xz+Bt35Wso-}MhfG`e`Ulq~`C13J<ZH$0aJ;RZR* znOqtS(RA~`*{{T59#15GrkW1Veb)8A6~@<Nm1Fn#>8Q~gCdofe;zQ2DJF-J)HnoQv zYkUWh{2B)GVncP+(x>5B59;+Vf8O8YE^btGTY2x#P;g-GZWG*!Ha`tSUCHPd!Iad) zK~4HqrdleQvrx;LJthd@+2yk%25_R{fAe*GeFaurxi7Wlb~f0~=Q$s)7)X~(mYAHe z(|ja+e07=ftns>vh_IhW+KeM)=Z_$4Rd3HTfBm|WX<JI;i*|1S$s`zQ7If*N@u^@} zE{yD;VU;XH!vPylmA()MySo|{_%@^&?GJ34zO@RyRExD_$b|V(7BszGD`!D&6#?0y zX20W_Em)}FZVuJCC^1yCR8R*-t^<iHhphq$dy0&1Q3=(?9H50Glax+_X4)7|n&_N6 z2Gw>F^K_iR*T<)#!(-$<gkx7{x6{`^jr*wnhM{*8>s3Uj7Q<}Z))~BjLBFJs+8{7& zT3lE{cJENEFu`q%#D`XG6X}U-IY$vlp*gu5+GDXxU_xGF!N_^(7RRz&(F0ADdg)hy zO??#f{S@cjPC4LZ3)hxSoOGNjH5*-XL1MbMFWg;9T(@m%sikBm4hdeQP!&P2JeDki z{VpkY!^61p1YW;M(aA&9*0u}?V#|dn#KD3UUXq#|dQ#%0ZF#ti$h4;QOtypT6_iii zGaWN%W>G`rgw;5XvKv3~VL=!~{*;U$8T-e+U&89>8$4{(2^UPBqgGo9NH**Z7wK#Q zX!iZh@(Ud#Me02NJC`-NLU6rHl(s?D1l2I2+aq~ZF4(p?<u03~Lh`ZJ{k*yv_ooko z?M&i9I6RoHVz7r&HTQr8C+7-}Q+OL8rI+pGWfx?(5+WkvPe3!4*<uD$@~OMt((|nx zu+-M0&caNj$y^DdOZuorkZM<rg_};K0g_&fxK+89sd@#6&Bj1Zx-#j^l)PNbb7VVQ ze@`C$uKBj5^)?B1llkJ|XX_C6N0rEWhAikhg#*%<fxfAnH6;y6^%R3sMsA@+bS^KT zq5@vL`7+agJL8yk!@*R#4G|-2I2BOah9MA!^*6y4J)Qt%1^?Ksc6w*_{JHnYiYnRX zk^VG_#i0Cx`Y6D)RQWehpaE)5)HF$`wp5hm6#6%0rOQ~KNk)gR4H3V!Bq4Js&G20U zhsnY^glgd-_+=6o_>rLp$kwtM2rhymC%PTT3pAQCB+#ep2*ZX6^^{1eT!s8J?{CRW z2$)~!wh_}-&E)G?7%T4QVPkfi?d#?GFWdMJ4R<ef_xqS?l{MWJ-r)C-;ytu${Rol% z=TiY-5kx3b-bRzvaz|<ZyTyfEOHna+8yW}<=R&l1LbHeB5uVTNan6PAu?g*LLNe!D zRJofbK2?CJlJ%%`YS;S@K>^PcUU33U*E~d*Pxib0S`3BoTQe5+=qt<SQ>4;qqaJ>U z;VuWvq{<ZSEk9-qN5P+FV8(+cZ57P&N9+#STwz-h+)89#-}*I*6uuKFxh3I(8@iZ- zgJ`DAFCiGwbW8MIzQvgGSy=p#h*K<{5|ErCWf-qXlyxbg^?Nd3rdVKLp)0hlt&Cgx z(<<UKoFxQGtlJ;H>qE}oUY`DDhq#T`Lp2h{x&lJHPN0kH^V3(d7^^xj2%~^&aHG(B zAv0m<=mb<Z0S^C>5CIQ?0D;PN*|YUnxdj73?u_CkxT~1ktQBX9X(=4ai)mPp@-030 zP7rzHHNuQy?K-jYR4Kisyu@q!w{owsllF>4mz(i&ouZZN2eQYlX1{kM-c&A%Ghrr0 zRgOMYB9^60;oZLSjw9DHkOrBg{!WifiF@b+Syun2Tb8PfP|Wt3(4<^0K}y7Jc>@&( zr^U1hW4it1$W_E!7*B{-8uXAGSFd9t?D0-6HGSzZaypus;_!tyBQ$Z}5y&$uD4(p9 z7gx+X!myrDTsz>euRxFEDeU*3n=V^J7d%7kzW4zjMSHcck9(VIKi$`txZR$-pJTVg z&Bp1`KS+xQZPeUOf*9IlJMACwu!>y`%1L6B;5MOZ@HqKja6eatEaFEOZo8IwPQjp* zSU1$#$_TlRS83Df+P5>#ER`x#sC{8ywtDMAqC0d+(Y%z3WzHUt-9l#-PijeBU4`GE zGuLE7-J3X&lR`R{^fHCje2>oYXJ*>`8hjw>iw|h2!X`_Van_AF%;kv@R!6!+O|~;) z;DRTg4U~~%u!+E5UOhPIz=7$vc|zwbq1OZ;u73<@Qo}`MW*q}e_)>9Qt4eKSYmaj9 zrfLd*h?{++YS6wt|L))AY~nh98Y9^te6+hJ&}R|Y$f(V&uE^4CcR3roW$zuup3!T4 ziv7s{DV=BU>oq&X$HG%A*ND+9QG1h@^wv06V!*thiP79xcixt%f)6Xl&R%7Ed@Dh| zEmchWiU}<{K%Fxo*Clo`bM3vO(2-eVU1eNkU1uCGvI-cmYoxlmrm4F|FFV>+J)2f5 z?fNBqv2t)kW91}WK7Hk)&I5KG)4W90W!~j~xqa$4*1Pplr$gwn*16}xLY_QzQzP3s z;;{L9t>kAeBPT~^!(6UIy$drA2RpGCw&pA;+-UZ_0?E$~*XKlx(xM*M_VQsv_s$(( zlgtWN&Kbn;rL(rpom5r(7+ur4#b7?z?wK-VnqjI@Kjz3jb5w!o2SI{sWY>vFoCoc3 z@HZJZP<jCKb1Ip&SnGEhv|rNMGf_{V0i6lozfGSBtLL*BqSvC<M%Px?X4gv8Qg=z$ zyiJG#;*li9CvwlIgf<<Z83k*ThH!0W%;A(B7@?U!OLa3{TS2>FX%|uoRXoXbw$Gx1 zh)E`)B^F;;I3)Qm62%2o*}9zU7HUeZDZGT*T6Xc}d4xt55nrY0Ptf+E%JqvCq>9Vf z)1HoLm3wy*IvI5Yz~Fnc>F1?F0<76$I%PsY+#?w`>p-w9*Q`3atl4xo$c8$@;*-tr zm+cyv6RJueY(VEJXGkAh4$0OvgY2h9Df5n(I))-Lp*FRhNql(Vg3(4Pj`zm&b(J~E zmymKNmX}%Otg5JlUP^4IOGPMvd$7_2k!;`PPnFO<L|8dlHO~a;c_@i5G>j_$V0gp& zt8MfJ4n|{5KOFiKF*x2pi<13V-~r<jJrom#2zdoI_YQu8bNm1+T3xJLoQa{0+Qu^^ z`S1X1O0E`LqJ1%Xv3h~z;(?<kaUTQf4Oj}uB}Y;N5&8s42Eb2m(e-}nwrjTwjgz|+ z*`>uTaE18g47;Z|bV3zqDo5X{3Uon21(^JX`j#c6IUsV+w-XEo_#;k_d8JNK?b751 zqLZq~X_6{Pf`(DZ>gYU0M`UCJGQt=r`(l{G1;v7<F3sEa!)3d_<So_z2+mwUho_GW zCqtD~Z_9t&_8w#Buvvt&BLz0kmIt2}&F^hBed&CwN=N*hI;~dsbBRfuNs3(gR%MzK zQ8^#<RF<W8F1og6{L=D|{DLft>^(ip_9Q>v=6B_CACDF@oNJXo*nY)+OTfD0;q`#y zsdY;^{xUUeyfAr%^7P-uLJoR|V#Y1GhN|Lk8g*{Pw9rZMifC;HzV$we<A0LrrH0x@ zlSDZ#^cHg$CllkOF^;sC;u%H-_$b!i%aMm9duRm&L9n;+5R5BehrYs^Dt`E-GDA?2 zr-O|L5F&RBdC5CDz1y5@Ix6^nEL1Dt_g>RozHU@0v29fJmMt>9)z-Caw>!+{gjSEW z@5(*3nnj(i><aLPNZ`H0ui4ffCbQAGeH4|V!WrA=`0b<$yr04TiYKJP_)$_Th!llW z@=iZ{b>~9TD!wG)$FPc>xM3lh1>1{5oQyfnG?=X>tzOTDgML0*6--?Ox*CHPjSht# zGh_(q<u$vn0!!9es@q1h2gcrs8a>O}8kR1!)0iRvvIM>k@~2-O=|Q{gJmF`-zR+ZR zxhEV!-0zICpaJ#~E0*b~A$b{Q$`%J39rm5g&NrZ9Ln}9K<6?I}KA3Mo&SIc&1tR(g z21K=Lb=A>Am87V}+DyIju4XIktHsKPl3T7#?D^<K^iY6}psTo>cxjFj8!5NG!Dg!0 z!ny33vG^pjZ$pfYVM)DRKJq|V0EYtumO9b39n>*o-*zX`!*JLmrEJ}`X^s@(PmUok z_*J&J*L$B{YsDh|mLwNY(Io_a?I?%JVR|jCs<OI8>!v0vHA##o)o1XdCQb<5>KGVG zVkEeAYbUslMOd*|Zu$alj3~IsH#%T^)j9;f{@qRNzO$Bqr|2Sebf%T&D8$rsE-Lvn zSD)Dok2AR}7TfD`pKrPNPOr`Ew&~RItd^O+fc@?(u11Zn__eKPjrZ>Tn%>*c_Vu{- z2m)&U^HDMd{T49X@%|+KB1=Hv>(R7*$E}monY?w*n2|umkhdowIzM8EyPqcKwfQMN zjG@RsId>(GDJPbCmFi}m-^63pLDx<9jc53TxpemMDdtxG&n(MywKj#ygQfe6U-3up zQ@`)ceekBgMJl#!xf^7kwD(VwWXEcyLJ4mCTZk&M`$vuT@yzT@uxXTInX-wA-f5CB z#u%#kx-_mnr}k`@z9xj5d8DvPOPxl&8d0ZuUSdoT1yeH39a?`WKWX}Ol?q<-#T~w% zV8Ji%<=+JnmBUticT0o-JIL6Ij>*i<%vzkIp)oXCgf-ClsO-&k)~;_Xd-9$8SK$JE z*ZxnrJ!gxXW`oy}(D8;``}Unan^CE#tEeYrv6`M1OI7+;)HYix9==~6k3J$b8wP&3 z{tk0ZTlM;0NHc>3^q+Z#8IQ<(TZ-Dt%uuRMQy{@vOGdVYPf=DX##}jV`grpBX(U!S zYzJ^g=TUHn*1UN7$@>stR1%vn6Alw{z%iqc%+Z=)3{6EdB++_*6a;0S9%Qzj;JhUa zS6`Dq^xu@Dhd1NLzmIpSZW>gg-`=zw_>=`^vRTT$l}rH^L)RK=fQ8kID2fTfOV2QJ znJ|a<`j{ad;}y*$y6^CRxAENg0Gs&U$e`?4u2@cIu!8KW#p;<W6~eVu1yjf$q&2Im z77bCRYMM%gfyW=JtVEAY`JkW(ZW!HJrtADpN2V^(LVPN6%f3hbUUbIl(wS9*yualT z&G~r}CckM6u?iH_w8D8A$ev(Wl#l?DP=YWFc=1vI2uF!teXU(hhLi*Eg@f3(zb_^; zh9EVj8IE{=$PQhr4-yv7;iwuDc86+(xFDyq->9z=i6IQR2oG2-tZ5>!sYgR{H4LAb z$sw-Y^(pHG9MDIZcT=wMi2URcTTarInN9Dsh<${&ExAt95}bldo16;|ULERRXhE4N zBv$r;^LRymgRO#$@Yc*>h=5d}r)7n`5AjF6M&Cs~0s*mS>%;a&>Wz+fyupd*iR1ag z`dBT@JI;{sGs(HojIxjU{Lwb+QEeRS;BBMwP?#Zaw#=ofq-7J*xIlcs&aAvP7Rw}0 zwiMe{fj?_sg2@CX299wi?dV4t)8e2QK>z~BF2M$aTO60bqKY3^)`=45n!}ANHzv8P zV5z2BF~%fBR0M%kjxzfjMeoTa!mv@fWidI^rAT@?iW}kv30!1fQjN{(Q2Grd`I?fT zq!Jb_%%04r7WlWTXNbJtXW-NRzyS0KTLib$=j0zak+8+!+f@1TLm!rq3?-tH_-V|Q zoCSC~7wDB0mz5Kj3_}Iu>BJ^fmF0L@CIM!Hm`dG)471id<h)l;J%lR<JocwV?4l@i zJ7nmP?G+cf*qj`e)0{JtT<=MZ3JetHL(@RqnU5^v4*oke`<XBlva2$El`)i?HY7yE zxtW}6lmIg65&_5&d}!~O?;agps__WvRz$}wyGl-1fbGsjriH(8_rD`LZV~~$E*S(@ z)71h$<Gboa2Gx#21)xbwj9n*AJfy;o6Q@wA?g2?KgB*&nzJpTCc-Yh+ai4hxhx`L) zNLOWkO=bxxwBO~J9y^>ti{`i7p96`pbt|3H+RoY6);Zp29*tDmqP9pzKdM@8lcVRb zq(p%HyW&1Kw~QtX#vP+(1X7P4>>jlfEMH!U=*g~b;MWa!+UXf1u(AXiRA%v3ZtR_^ zE2)U4GGp)IM?6ALdj6!qr2oX!sZm`1w`#&WCq35E7ydi@BK3%|6yfR0AM&MvW>~!Y zDS_e>=c2x_s^bQdA#W28Ked&HOIwJ(ev-?{dvh)*l#!ywDygAYYL$(W8#%Fydh(}! zf1OZOiapb(cPOFg<;_{9GOe<dmN@+-GEej(7SZg)MV0Q4BW@O10_r0L;UWE1K<L9| zke!GRju6UVDo6&q{JlbBYX&_H);hE{D0M9?sL+cZ#l-3|lBiBOJeacp2`ZD@m^q@; zLyR_pB<q|A@$6j)dJZMMv~Y?MKWcHHWC5!K`4&yxvMJ0g`j?d=F&RrB%q?<$N;=}p zX-6<uo@{A-CpiF~f`k5-z*Z(I52S!Lf1}}b(GZ8nQ<cfl0zzm#V*2tv@bBia^4`Px z<t=G)o`tq@RDY{#JF70c3(1jm>n?P}HRMhPQrAA{&a<S;_5R*`ABtJo-4coWX@*k8 zdl0HiW1LTXQM9%~IE7jC7}`h~{Po}5MG%OA2`(^-O<%4N{3GZ;Tbj#qP%{yUEhwXB z@HIqrRI#~42m~=Y>c0q1AkQf0!JG2P6MEICqvh*YtRJlSXpq85h)FoGX=2Ps!4`7o z6pqxY4A8vk0x1#Cs*Bg{A4HX?Fk*%Tka<LJV#mH;qzDn65@Se9pbrbDD`j$&ELB1$ z6b&4*0><X_y$h(=S(rX{w_6o3>L6Z>ciw2U8M4u=y6pEIk(p<g0~TD(Lc-Z+^L;OH zIlK>uj>z#Uddp9;thv)<3m0ZuiT3e{_J8a`+(CN<gZm1&$~J1zSxq#^-F@EQU5g6W zl(FYkD3C7%I?wOHDB2e&&L!St)8d!hGx`Ha{0obqDy7a+DGLo48GRA}XGg|vDvW8Y z5Jr=DSpjB6Vi9aaUiyT}n=qIvl_}CfHL}6CGwbLvgUT^RTz~h-|GIBZ21~J1sXKL= z2=o!$0)ruQLRhYlzy*=LCsj>E@iKB(vkoX1A%&Ictf+gbM#u!k@GAX!5d4+NjhF3a zv0VapdmXZh_}LWBp&*^VpU`y&3c~yXdl=C*?QD~Lbh7|L00?QXuxW4pMUTZ?QY&cc z^{1bkFIM-IilOCh2JH#?6o@lU|5q9~z;>C}H))^wOa6-CYeqhpLj=StWG&!J&*Maw zpf6-E^y_q@)s3DKFWaJe$`y2RZG#>R-zvD{_u3^CWpq9Aj>hTnYG0){%fl9s={M5{ z)4oZqbfHGb&|SOrMpWOyNf8UOJlm=GMHw!klAYT1>J=i5s&@Ai9~^2}zBk*e>fdXz zEkzh1mXuj;Mr(4wpSUs*Q&mYUHE|J92`MEI?4guM)hlzhp=+HNzjgikwzPpyFMlY) zR+eq#JEgqDvW#WGsipL&SUF8<v_iyO3`3MZHpAHOTMr_$^I<w3FcdJAjd1LUZYkQK zDp`W;E#u~`L)Bu|>;;(!S<&W%l+9gR#?pl5Rx1IbXh=1g(yo?`>albFcTfANN9z); z?}a(M-@VdY5Q2{36~ul+mX?H<sA^GxkU)PQ0uu}fFC(r}l9pUsJS!c83^3aYHI`ml zWVIBf$UfCo@zR8oE^+;QUGvJ*d@KI#tYJI)eiY778@C)Yu?(JjEN%QdS4CZyn4Z(& z;Trc-=k7?*45Fuok+Y47pyzY_3KvP>v2Tyi>Z+%g#hh)LrPKOc#21d8znShMpahlF zDj1;vOb0|lIDk~|A=DyR$uSC%30zc(OaO_(wk%q9N2x5lkXcMMm9nUUjWTRcClvVg z#<Vw%9WF|RKcA*7)2BeUl85*U1%x98?Hlrlk&1h9<}(qwGJ&$`%I}6`|I_-#D^P>o zpNj#e&R}G3Z)>X@yn8<T;OQ;0$1+b(zvm-wurxgDv<^hZ1(Qg+)qBk3?%Iyo=>EKL zj1kJ&$l6)@4u6?lo4jXtu%Fvk-PGhO`4{_p_Tr7I)t-5z_mkchetmQV-FG`xYp;=C zTlqFzM;=o&NyGIE@{aTmBLVk-PHMT_97+1agunNuCOuyR<mp#am|sS#%2ZeLV+Hp2 z(E0_4qu>6#yfu64>_$$#7tLnqAdi<35n6p<d&T%S>Xps>ZCFwplMykl<Zo#pS{p0L z(3TW)OA_y+2f^9&7_?ua1OlW`1<^O2G`*aU=JpZ}IKZb@>PEsiBNVDDI&r_4?VXRg zp%_1l^fHVo)#9xUR8^B8(??Ti$z)i}f@2s?r4N26m5I_$zZ0I>cvawCron8}TILy{ z#P-uqC)~V^a)}sRN<==KAe4}_>E|VbQO~!LByQ})kD6RteCc~RQ1I-}EWbMv^A)3? zi9h~ZTlJFt^7xMW&i*Ozg7nPr+}yJ|paCk!H`L5~V}C1VXkxJ-8;zlFhgKu}Z{X<S zO)V2`rri=@%n+_dnPr)1J-OO!G_*HO?&$g}v8t*mx$M~NoJxt1pY$AAAW?tD9-svg zUpT{Xg_T`a;w*t$t9~;frFP>{DKhU~jDu6xEL_NzzHS*xI)0C6>MY<F)F&jYIviG# z&+On&=-212geQ|>eZcJ4#e{-+NOSnW?<cspB|3v3#Y@x4*~vZm<E_DVjf_{ApEl9l zIA}Ph*mg1fWU|>MT;2VTB{$y!LY_L7C>mRMxu91Xd>SYtB@|={E{YB2Ok$0(^%M(k zkc&GgA2-W8aD`hw|EH^k2f+%GoyK93S1*`VffY;1v|46v{%L7af+%S2FFo6(6YY1! zfiib5{GJCDhE&wrsiGoO&c~KAl44XYNXxfK{4VEYrX=t29bqJ&QkoSJ<od-eCqEQe zsRR_xZla+TYYUWOv2CPK{S;Vgcct1XveQtU|3%n2{`T^{UAX<$?Wt|sKDBMzwr$%w zwfU)S+qP|+zy1SHo@BBob7v;A-|S@P-fLY;rx*qc$JwW;EDVefmxC{c{Fl#|CII!t zNYVZBIP!<nBQ9-LJNxJdyv-jm%^gt1tzpo#9(ogA=t~)RbCLWyjD7M3Zd*k97dw|{ zMdE9Ev_I6NLzG?7caA>RN@p=d@BJ_r$as%pdbMKnj!Ye3L3L^O-JW(`XW=u$ZIAYN zb5$D$<a&R~;!eoQ5W*xE518pfzvF^}J{RcKAeN!z2yjM0e!MsM2Mk}-ZSJRI;imvF z?9Lsucju%xCcl56zsKGNd4-9vpi+`8P;jKmrOHQAiBbWmU@JqXF#D4%xv3E#o86}) zk<GCn7K|^Iz>=x-2g|_yJUddX>9kusH`qdow1Z0q$F~!AXEm{XQ->K3ektn<Sy26$ zOcd3vvR@|n(!wguxMd^Jb;CPO1!@1J)zbr87ji!M**W8<iV|yN%&{^j(o7_}XgYd} zCJjhj#;+n!058X<l4RLjI&(nVFoFpN)We}*LH^jB+CtHqWU@f@LD>jNN#$qJqWsrL zQoLs0ZoEdK1D*QfV`u73V&L|J;BzxYDCK$M^K#>*#Kippxv!D4XF*fYCY`#%)xkw2 z(p@On-jVVF>ed8V+tDB;m-3wUr^H{V3_cjth(Vsd2n04Tf!e=7fFBy@@9!WfPsAg* z3HfmS--J|Wf6u6v=$!dp^S(_nt+~|R_I_6}ejz?O9v!dtde}26+`X8)tIXZ}yv$*! z9Xfm3chjr<S<1c@>BmF>-@P4V4LW?Xv{L&B4|Prv0CARBi64X0Ww3~a?L4E1VS~e= z-1B%5FQ%GS{bjP@y*swPD7OhQvrt}Jdr$<DrAYFKDB7e=$Ob?yKGB&U?9n&!APAI_ znrtsY)RKbYC?`S4p1d21gipW@8f=)4(hFuHVj=~Mj?fqk|KCvJ(o~djj=NRfB|XH% ze@Y~FAL0(XrdAboh$ukm13_G>D&`G>HsFh<3G2>trYE0ZCg!MyQE4%qae7lbLpS^I zcVZq<adNk2_w4h?J^OmcRZ!j1vc0(W=6hq>$CUTI<&yN+CuPSEOWa9eA=gQw;h6md z=_#ab{K?t#!jG`NVg?h!F#3O>94q5n<eL%HTbO!EFIDHKjuhC@wmjGm&@^+lD~_<s z_(V~J(A6ymbdZJT-JpbdDsvOx!dLnhMmj3Q;_w2CkRSxko-ps>7w8V}1=7rcS*rk) zP&!<<hoy^%zpAO5_)0B;^k}%2xk4*t|A$=(x{7<{&+&%}un+{$;L>$sY=Tlq0sciL zN_>u#z)Lp5PO_e};&5a-jy)to((S$kJVG#n$5_q`RJQ?}U%RGon{4;KCnrXFQkEF) zH$tyE>Ji!uRNxN6h=fY&kC~p!b>}k2Qa9fL(DC=Ynhii6p;xSH$?|6Y#SH@*`G=df zN5;m2NScg|F%2mq(U#fgy#x+MpDydKV5P1*FW~M(xWDMG!K;jMO(Kg0l#x4XHV&n4 z)_-0Q%ms27;T}qwdM77mhF&VS558pOKCKA8$eQ`@ml<;#+N`~&JLi&f;G-Gqzycto zR0WPbH)Ejm#W;J<B=D!)UBLQZiJM*ap584*b}A>8#qOGa?+0kWi9@>t2B~#>QDLAc zC{46XEM;G8B!bk#5q~Ak1aJvuHaH&a@tMgue<SH60T8pej0`|gs5~K=u-Mr(MXB#t z$zD1>Iz-W$GK$4J-~H{LVpSRQ2>KUb98ilU<ss^1w+O;wBU-nJj!X8VY|Ustg2H!t zNg$2qy$H+=BYYGj(1`cCTZCFtUI@f1!055>eifY}5)<q&EFrhY=_u(jJj?5l)?Sps z_2_?ZmoCM^lXCUC2*Qy!))K81W0%KClJ}8v+;O*6GS%#L!Pdd<#lB>RR4JAIi+i#u zcZ%nja4xyxE^XRaIAs9Ef@NF5XmBKl4)rclITx1dIr>k09)hc8G11PF*AtpUll>Nz zGz?5@ezAAW2WpU02kMeN5pO0wXXRW%-wl`W>6rgNsDB6;%sh90fcYkg?6-Mn2F>CP zL~Ykvo1S~~Pw?EI*C2AZf@i$0t6~c6x>(!qXpcYF!<stSdBEX+KF&(kx0-r*T`ym^ zyGCOBQ^gN|(*}Lth(0^Su-=4&&_pBHlNse8m&O;Bkn)g+ou(d$4Q8}|KCy+^hwQGp zt-5`#R}T?GKBFD~xwKC-=Mh_9vJLhrlHQz#dMhS|XX{7DyF|bM^bl*LtdXwI*0=5( zKgLqOuGKW*-28Ajx3A7a<tzwqp!&^R-R=pEe6Z;edGP=1mwH1wQ<zuS8;jajydxR5 zZy{2_G7)0k$n7HNpySHmiDx}&`1>(IQn(6n3AhCRz+k&%@PC<?iC!HJVPi~?V>qlj zfYwtChtib<3%*AyU_mX<r%Amh4W;P5K=n%EiXk6sovJED?v%t-6itqaRDhy$05(f# zNp$^@y|?|lEwkM<7cy4S`i+PtVQe9=yBfVdn(4ttC6W$bC{`ftTn&~EbBsO-{;-4g zV-By-M}?JoTIk^F?T#Z%8)6@u#H@2Lfaz%H{g0+VXz8x+{PmU~=JV7R`bh(bJrg(u z?6a_<8XR_CAco7Y_hyCYHbw#xvV1l_X+WSh^*`T2tRC{4k!-^BnU<Cl<e@xj$CYs{ z)#fJGQrnNd0YKbO`_C~)Im%v@HPhvb7txRVdiw=6E#v0fK>oz{S)7?q4UNOnw$?|* zn3KAK0@g+n%;$Ap>-~41-4A7sdF8Y1H2|F3>TB#?#Aa-WcV)Bt#`iAgq1tvH08~wu z$P>$jsv$uoV3__8$xm{eTzvVL<M6WBLew!#0G?xHuJg9?)lo4D3~V%N#ZahvrvCJ6 zI?3ey(M<ZLrAjYK^kaXJ2NY~Dfa=IFpI|T|@V`4abFwD|KOGhKFxU`_N8nabLbLvx z-81>bePWQ_eMD>hJB00U{1JLXWYAPsL2ZlZx8Z5<T3ux?5g8zpc8Yxd0VqgtS0B@& za$SJSzsN_Xo~{&0c`9zZ{5w*kM5<klIWo(mBs(SS&}n*sk8jxt#gW?<V3^wyrX3+^ zq``v!nA{7BcFt{LbS8BVzsNfJJ}6#LzGW_Ttlji8M=%a}u3EEgo}BGfhf4OQ3H7`K zOI&2dF64PUC|UGbj?9K0H3IzMj8|RPP<s?>0)bO{|HOC)I<^=rjoo{cW>sz-%IPm3 z<d+)+8z33##s&@Oq7aAGVVn%%p%G%EQ*Dg*<)!R#t3uwx*AZX3YLc5Lgjaa?b17D| zcB$OBY%ARG-h^#S)R5i`ZIhFrhO1X#B*3SfJ($UuN1ttBhIQ5godpmW*!G_X={wK+ zgU;om&{VAdTY%ai;8RK~7*lio`zU?2s}Bxq%8*k|4MlzMciEq*9cH?6NXCP+X1m*x zu(s88yT<CLmPDR_{JgJ}ZuidvwT#kq!m1okD7;3Ujp!ocv*W6yD*y7S0-Nnov#1}% z7sH38bI&8*%Z<iG#%b|9xUJA5+F5F4Tbve>4$YG>eWWf856Tvm#+QNsCzqu=9?#8M z+_Tp=kuOO`RSxU^(y8SPxC8w9LEYck^--+5j9JtK!aLEs?OB}!{LpWaP2_b_UQ|zQ zXJn&ACA1k7dblbyJ17lx1vHrbvwbQD@l6U%VaR@(>Tu^#E~?G{9QcjdBIzUlWUa6D z{C8V-L*dP>aa@_msudG08f_*zll1Qvk};ZatbXE*r6&0?)-^QWELrq41ho~R80G!X z6*F}WjL}%Kn{5=fw7nf60u2|cV6eG6K_^uwqxCA%@ZPUA_b(P|K>?Xu$<Z1VU@0Og z!zo?lA*%s{goCy{yp<`3rh2m%Q$0<2^OCP?phVt1Oo`!C4k=#vD?8S_=2RfGh?Od` z7Yq*m<RLsUENSroVf;NFLu8F&L{bB>!Mm+aK|HV%=Eme3L}bjqPLLy`m=1j7db&H_ zq@Dn+!RS>gPG8nwgX4TVL5b+)?}+{3C!8v**<bGP6iB-&!x);;P8@aRJYsT4HH5EW zJfij3soC`eI!EY#gCHW->{?C@0)mi>g_fQ~08QY4wI2+;$%Y;x)1}?oX(1xeD++j- zrIWH+2!Bp?kzOh&U?`9X!A&~QR3Qv;&~Q*kKIooNDNe>wEHeMW0C@&B3n5J@RR1(* zLuiuA-->V}imtfTZ{YNN!fwrMk1a7S)OC#Ii+t;Mn}+*L_&#a&AS59pfdhfTUpwM# z8XSlB1W+*r$koJWW!;^zzOHDr36yf`2^Ag$PGSDWi;FPAXE6|e@-sY~Ot@E#PF+-{ z@{pf@Cn~fgf#mL1S378eDf)U(k9yzSnU&991vM2keaKDdE<V99uZ6KRDZ)H;>so)$ zDMuV_)T6lfG_M>6qR7zi^8|(hoU7k=_z4GZ99K0mQ-m4=r)(MsJB;ZOE);h2{>f9< zrOQ8ET7Oj-Ri~SEOZtrzx<^FTd>^vB${rt~$i~bGUpX9uy-!X5{Ct^aO^q80Po&te z&E>S{0lCs1Y@B6RIA`50Nh`Vk;i(v5cm(WiuVXaov0VpB|BP@g+Of6S?CUDkH>bYx zLlsXa4lUD&#^!BMv<}<fk;BWNqR(3|N7%C;xbdw?``u_3u#;V@<XcnuerAoa$Gl+R z3CoznF?Lg1Ak!VzmM`sK*;SPQ(k-3bo};R3+O5gTb=Qr3`ac^V>)+zv+ySWh<tLe^ z2fI<f?#__MER25a40|O{*|o8?0MdJf@<}A6+|>_a*I_!n+31f<2PdZ_xv|voZdM#> zF<P1D1SYx(Q88T1p$4}x^g(-Rc>1BhtAI=xqe%^DGhkgb+Qed@9BnO^mee*qHpc3= z4u;8tfhDTLZPa}lvze;;-jB-I7Q7jLEWfYUTTj*;p`r&_$0VHr(>2!aCMyfi4;pK< zGEX_KkAUiDi(y|3c=&Nt*m79@XH54WM}RI~6}?!Hrl2@Aq}B<>poy29*RF@PhuLk$ zx68@a9F~pc3+cMtM|J&8@!!ey1S|UQ^){RQ`8A)oC$x-=W*yJ3T<;-mv4U!5bZPKa z&%J=T^|s`z<-4tza!7KwWCZ57??d1NH)*^A$$9reMHWW3%q@#m8=v|2=BFFB!qHk; z#y+x#=)+0!qQj4|mxbI6z7#TK7bv0!fCT4rQIh;+EECVZ1bGpL5h1CGoF-o(0;CMj zg{kOxvuuS_n;66JFh%5;Xw*hd;uRbs*<u(CO}5MslRl$e%WjZ7;h)^AIyKrp(?$Nx zrUq0!e%d>aKEK|de7||Swfzy_FSefewp)NRE&`NzlB6>wKPyD*^I>kO&%a5vOxr{r zMTk6l?ve`>hDkJU5h%7|(qHMPOhI_2b+GvHzwm|S<nTwVxC@1wbUlSt<HCV-=aT(l zQ86JLjthnjkxSe!OYS}lBxxGkNbFG+a5<e2RF-gvIfm!nME)mUP_T`sJ7l5{chOa# z8eLDlAAI`?*VilNYYlJEds>Hfx<6)Dt-i)1UvArPJV~XhbZAyJJ+GPTb<Ro=?VxIN z$-T!H&2~TMx43QyYt1?K?>4~;%%?&oYgRdF-Zf;pR^Dk`mt0xyEqBN}<PIH6W>L&l zn^-d<n;Gv-<#Ji3VaQHhoAtv^t$c5~Qk^$m>;_QKF0#f<ULo;28Y4(cVM0dg+o(b- zEC~_sA9Sj=^{d17xrRoQz8uF4^re~!s8m98K?<e>??eu@K^pWX$G<8h2}%udIMNu2 z{I|E7a|WmWiKeIEa`<xb$Os|f_89p8Cd$#+pUMQ*C@WDN(_9JI2=db15D@c6M1V~l z0<o*$uO6$xESuo|>wH-b9X2JxT}bfcb$egAS$z&77nP;=rpvj;>uhrU9LRLt8~iZa zvS_8yz3Qs7qnoLMLB)F?UTOhbGjUpg>6q!bEos^5y)~x;pCbKysUG$dlH9(oZI^xu zEu@>|9Q0H$Tu3C=%S|hK#2#axPyXOWo-c)J0sTxZk;-%?*%k2|-01DU`|o9GsOpqC zo1Bj~9qi4##wTd$2JHGlvoiSO90#~ZuMya)ZH{w)j4AFQ=wDyoG5EjqywT?d^xBK? z2WS7U_-x~<5A)<YH|3hEe342|aJR^bRrnJ1NjREgzJ#Gy_rj<sCs-m&XT-!?1aPT# zGlqZT0x}k1%vS`TONS^2s|LAKdWn~Sv~wuGF<!@}Z9l5-`Gyo_Dq<H$5YAvz)3LBR zE;wuu91Z6iOuH4hgGGFBHu~aERJFB>SU*M&-Zx5nrE<y`+#U}^@~9yR`RRqtp}aTa zW_r?1Q~@aOTtobWVehz5Uu33bfz)Dl9NHRFx|grv&kBzoyPn(TH{2brem|y>$)7Qw z^AGyFgVv6v&eci#v{$-4dRSem>X@A&YsB9UEm{x$PseV!x-@tgJK~V4yu?{-y^0Hr z;Su6Rl<IMKigxd}SZf(lxxB5DSa^SoAt@)4iD=<p&QOoyKomI3OXGPcHR0f`GW;(8 zKS{!D6tZsVf1~OJ9m?YeQoqm&Cpim@CM$4HsUZH<-ifHJ)5!=*@$%(R;5+M!F{HOf z{xb%k<f=ue3E#y3T3ubP>($IpyR=ir^K#%7!mY^~qygXgs2xDDq$k4`LaT2HWkjPD zN0(CNv~Tl`F;0zJ3G=LXdKRAHSM!6wsy2G2_a+6%|EbiaBkZGecLp^sev$_I)4*xK zHd;j6W$9uc{&=zunlkF%pB2vcY&U<KO%%%5%qd^B6pmQc?43vHedtUic0Q(k@}y~d z%K_)|-G&s@6mp>2s{4P<T#j6)(E8|c+dQRE&+vMYVlH%y`TJ(x`oZXyjHb#HEMjCJ zGi_%MMrR&rA_$Mk0!P=B)=Fm_uuc1~PP$TGWoVt{U6&@9vPKo71)G(!Elre)+e}A2 zlO^X29R=50gAt~{35FA<swX89hihfq2ml(UrfBqjS)2ZPLvgpJ+n2gF4UB*)*JMf@ z=9s+~6!OCt3=Z`%eRyyIBCxf0KsGBH657Qo?IoKlzLoGLkcBRRZ-G4Cz$<xsIQhjc z!Uk)#KxrB-r*JW(K8*o(F4Sps+(kF6p}@FvAD-->Q-U0<j`^Hm`2uV3(^LCa4>);= zfYypP@F{xEw%c-mrB)KV#}@iB-GC0tXj9E`hNB_xf9>7_a)Zss-lZa^(-pe^?LDoh z59?vz1wwOqcg$Z~8b?MCVcL&tCuGjVL>S#G?JM1n#NeajT8mr93%-Tk{Edsu9rd&O zBynQ#sysCZE!SP7tsF)qI*r<WSxSJb8O#)v<V8|T=MH29nF(l&U&@=w#kqO{OU#<V zpA`F?x+deW6<A?d%}OJNYoYc)MH_X#tR?28cKATsVB6r`fMFv}rp9Z;6xP~awqsrm zqy^ce+F$wIJHRq3oTt&nFG~m|TI2?k<}Z59DHERT325R1`nSm2;ea*U*Igh97Fa@r zs|<ARAq4IVlSuqH(PN5@rijKxpvFdJh^8aokV*aWF`&_f-dgJrWQQFn{z~0<Ae9e? zmb6l)5UgOuyV``V)|?vdfVlX*_fs^fnpOm8fcZ(q%4_&-%hh;8aN1@2-SuyL_==$j z+`3KJ)$qCxp~Cl1%<jnaHGWU@yu=Z_uh8jjZAOF4@Wg?vY2Mr}R}Ea?y8{{83iLn0 zBUjrA;ZyVjW3y#`9g8*q6NyJ#(m}ZEu1<7v#*pRZ7kcN*b4w%u<RVGFi(E=Vs@`>| zKK0*c^4M@009zf@>l>j(jGsb7F>xZ{b6d%h9^92Wy9O$?%f8rnL@);gG{JBr0}^Wa z42pw>i0C2D-%%{0#k{Pyr?uyr<raf?g$F9MkU^uffM=RLo;X#V0-Icf+vFw7?WF08 z)a#ZMY&7lmr>Kdy{>|<ePXL&K2GI{Z3_V9F{_g0_vr5#bV?|6vOb5$a?O`{y)r!ns zx<+)*CcOz2wG}b*ba@Fqw|B_okRlU0IEtv;Wq=vRmGk11iGS6(gjsJW@a%vzpSDZ$ ztFqId$;U!YGuc3g^MD-Y0w9l)@keHGQ+g-1t(Jo6C0$ni`#V#nsFIOU4SYjLvwc9! z;%!Aunm5=ERc;@-@buTWGvq;8sCX3|@>CgkJ9vQ9`9aEza4FM9oZ<6dRL7_QJU^gH ztfZ5s70VUb$xPbC(N*i3Y>U@AHny4@-=!E@Tj>UjcSsKL6Mt+wd%qFbkq&N2{(LX? zS}5qwY^;>qXamHIHsq1s@|b{u$u@qxtIc73(_d4=!f7R7XM#q+#hAa}fY_VO;mDj? z(u5ccLzH@y0uyE!_<-sle$E<&$m_0VOns97qTwJckJAbP`tPZG-9d#ETtu@022%|l z42J?42GvNn8dvW4mkaYN{;>7_$fD1AwxQeZ6<&SLHK~y*OIMLMya(UOSKtfuP58@l zZ|G%BgWQSUeK+E(&vVm$kJk=uJN~%c%Qfuf`1RD!{Kv(6DTr#Jo73*~<=6Jj3LlC) zft7~PWRZfim35<g*vh0Q^HA(Q*eT6TTOCYfYS8ve<VYvDR%H&w>hda<htTEODn#AO zz903f&s~fI_}Fki^c&Mo=>Ec8DK!1qh%t8J&BGRYN9nCych?<H2)g$&MxGCv8bNS< zq1=$)^Bi#qpN+<v+j1oIiD-2}c>fT$<t^TeW+%gAI+zJPh6jil|Ho@=F{-Dh0UypY zRTVWAqlJS=;)w*z(NPHSTVTJrISV%yW=w1(T(00Y-hGHi=s|LNq!k`tR0GL<BI{<h z(!{wysvJoTq(?{ul{55nl9UpGHeTO?+-$Z6W*$v-EeEBWpRL!m_;j!%grhW^udTK3 z5kK6CV~EQ)?Kg<;z}NRx5yvTe<hQ~P+fUKXDa6u+oa$#}Oy~TRNzc6QT^uB8&klQy z?1%2V+j5Uxuwi<avY40kg51YaPa^d?HE~gV00<Cza3f0Q%E^PL&z<_8*zmD)YBU(e zw!C12I5GmM;K+t>u$`1{Y8Y^Os$p+OZZ(Q^twr9m^;-GWussjF9m3_26GTDY<7*w9 z6P1*%30sg0m^Ib4&~W_~e^EBra_A~Uw|bRK`N*Npp{~iDvG(swBKP95PEB#)0|1QQ z^r|ZJ^Aa9DfvmUJo!97uwF)=ReO{ghL+KSJS2Oc-+Vd_S5*uhq;SVlPvI2X}uOST4 zV6b&W|J{tqG8>g~7p`GsgfH*T_Y$g6Nj&B0SbO-9^;u06H4RLMcc8iKR&O6A{#rk@ z9nu*-xm`G`GE_Y)8e8yws<LTfJ%k@WyRa0>o1kCtd|ic5Tgj_wRNr>#4Im-{an}w8 zdvgJ;>;uhl4@`o-e`g=jeE7ElSFGtE+!bdoR%zWql1tWdMB=Jdfy;I=_F!FX0nNVG zQnp{sCb&EbBtoH}3tp4-_&<5fw|(A})3Un%j0e2=4V68eZW*2H4>Yks;=^ET`xw7Q zMWUw#qY?0dmVdoOq=3Lr71b}cG_K91Lr4uEN`e^v0)8U?etyGR?nvmXw+r#Oc#L4v zDE<N^jkH=%idH~E`K2_HIJ7u%{Ev|BfuF2*<;)+VCK$S1;vo!7!tsA>{DLE+ae-O8 zg@;iD7~D@XmS`64?q390+C9GR?(WcCELZaG$L8&V8_3R<Zt|9cEc>}L;lsFXdIaEq z9@qJXzZNrJ^J=iXU~^SI=A8L$4cDI1<FR~xY;1ZeQm~Waf?V5j%+nUaUH9fz4CE4j z4s`7nAGyY&8i7TpOqaO*^TI+R3VhQu8awbe83oum77N%J{xba-0snc}q`ZV-Wnub) ziAaAU6C|^K1<tU0?c6748&rLWBjU64rKu->SATFyFw3aI0d;o+KVbO}F#2@I)FP{$ z)*;(T$4(V{+#Igu2r&r4;Wg)(cg3Gl-oM4B))vDAeP$1BO{-d6R&1QD!)Mey$(H3J zox8z0!}@?FLgn5#j+natpUgY+`p_xmwTs*V6e_vdJoUWeTGx5i`Rhz>X)p3_2WL|Q zS3%b`Pf>>klvu+Vbn_(q_;aIm=eTXUU3KyVEbNmjQ;V@J9@J}!VhDJ>P@aDQt_e@S zjkd^3{rV}p<2R$X@SQMe9RU;3WC7#@W#Y???P1~}{Oqkak%q)PUp#mGCj&=1OSL2% zsaPU*(lALUIn<3rVoxK8iPJ8=YhCstj<{;Gv!UC`S2hGEyer-rOBX*ExM$tlrgf9j zS#>H`ipRr5HZe>diOHDaJQr+*0{Aq^VP~IXX>DFbh-c#uP+rGlbPCss%l<TvG%PK_ z#U)M!M66IuJJk%nMBu8p;;pps)ZfJfc<Bm3L708h>9Yc$;e%UnzRmzRHUG{5c=q=_ zQNB;X-%EyUHtv)Nzm$tcg`t9n#dmYN!Jd+v#SEsQ*v#wv0cOc;*q<L`aVcCxh1fk6 zi%_<5P^{8r58O;>6fGuCe9;mSCjc^5JqQs*4?SA{e6k<H^fXr9Qn~_qK$=9(8gvmp z{@?!bF<OAKg=<76z{jr0Aez>)3W{}1!U}jWhh8|&Enc<D4PziwiApirwpQ_GZcEPw zyF+7SAq>l2$*FI?c!7E?<!l^%V}+hqFP*F9CPJMX&7y49mODpXSs8NR2KW#8ZUF4g zIRzUFJG)ssM7II}=rpa3BX>7AXFcRxpqj9Q{|Z0{@yOrb#7`QwC!pN-BngRgAcHsn zyaAk$zg?Fj6X-nOs09$Du5Z)+Cb>~(|IcPQiLSf^<MxpTUBhUnJW{d0RKY%;=T$xY z?<lI15z|<`tyeF6r9~5E0yJy--~58Maa-(WuoK|~@t7)YTavgT?rE5+hOHwyEZX!$ z!1;e9bj;aCJ~0M9HUS}m`Grs9lLc%trLOs<C3Z?1Q(qnQJjf-X(+Wg>-}@8OvtK9w z?bOI>%H=b7UuQRAmuUB4qlK4qoGjYfi*Y^P>$_B7JhqL23|oy!w?(+UN*#TQr87QI zKd)%lIQf<Nh5Q8FdYb#a+N|vSi<@$hgO&@$u-)`3`>wt99ew5ek$lxTws|o4_^5W{ zn6UhwzXd6Qu+hSWU;65`X$#h{(lzRtbfIinw|gFwm6B)UREOkU1O7*rA2b?{XB3+d z@rS{The{J>nGn#|9+nl+YkPe=|8jvz@)IC&3OTgdOa)PtgQmX*r2KUZH(w$B-y9S^ zs3-Dz_dn5|_9y_}PtSAc`ry@0hA?(FhsQ=s?cVSSn%{Rv%hlHzZOb<bpW{)kZR__` zjW*Z!)W-JDdI)u>t9IRa9|R)vo57Xz!IrUiVp;SH^&8ZkxpjdBkyoRAqcvODrG#nA zXHjR*+0rGKOjv^{;~?1sA*ID(J;GU`iB`N+3{`@(I3;OD74za3rPRq!i>KF@H3FNC zFg6k<2NE}#Hg4VRabgxhY&!r^ltVWj#e$!SAR>k2EYEn8&VX_itDOu31vL3H+?>sl z0TQeI1dR60XzjnT+{jd;CB;geFpI10Uui{aG&s$0A0mNnFNE^9#U4NCUhi(iUaz?n zM@sB)W@4Q&=Q_oH>R&=iM&kW??fIZUW~S;8L!tV3nxUAXQ17fipOviyD_Jlh4X|zU zWVV)YNf(}*@-om05t{N-d;h864L(l^c4@<jqZQO~5VYU>tMBU%n5_xWK55>oitMH) zY4YZpTG4l>5=md@7+}(^dB5K{SZ-v;J^u<GVC;H!x1Bm#bbey+;a8fKbSID3VV&JJ zMTP{g=#6GJUyE_RODAPcyxV$SqCeP>+dMcDGHcf}ZkOUDF?NiGaagmk0#Ug(Mwm8M zZSV}yG0gJpWEQ#~pxT1gAT<xhC^V=j<@#MA=XA}oQy#?Eyw?gRwWPy0<)2#vm4#3x zl~wxDsAsRAp-eUp9i#Wci8=@#&EcS3jZ+|n;MLU-OW5oh4Xqf05FH>4hCB?zQ(<67 z0f&TZG%#nFZU51ZwPx{1N4r2q(H3^Znl#cXF<IWef%cuNfC1XMH))LYG1WE?+1&TT zpJtOgyZyt7p#uj;0$KNf1!+y-5oCh@$VHe!PZZC;GS?$WuROWUX!&%{XG`Qzn)$LY zQQz@P;s4pe!pz!Gqhfc<b$vT(GLwazN_g8AF0w;UzZsgOPmYXXRs)^Z)6iO#f0f<) zXwzvUcdS{}ZSGOzw)X09U-aO<sWXZiGi+!qfv$QRl8L%kT~!yvB;v&};Bi}u-CV`W z4LW9{6+GsSBv(xNEco2djLM9}FO>MybKo*_#K>yyY(TJo%|g^g2?VP?ARDm>+2PtA z?SO0fX*)RR6oB3pB+@q@<G33AS4U#pqeQ{L5i#il9FBZG?pR!}V+DNMQCMiGhV9wZ zq|+s-+1l=;FS1tM^ysPA<C)zki;6D^_fjz>FjSYPNPur^EzE<vZpIH-4U9R8r3+fH z#W$i;`#t8?%a3Osb)qqxapA###@OWf;)z}j@=A6WY7?`ldhDFv+A@Ko$hYROXO&vs z5Loj+teE`8-d)Ai&*T$`drfQQ0Oy|pf8L6^a((>uif3);)1CP3V-KcEFaS`*Sn9Q{ z6Evaa&;P)c;?TE1O1+CUHJ;QLu5TmAQ!~ge93Bh=g)!BpK{h1-4r;Fop@T?%)nO;5 zYV1LzR|>%JhdT_g*8PUCL==#^K*osicmyy3vkX8M$ePp^Rh2~0=M`WK`IIyhqJK`j zCu#Yi#xj)<p;*QFwYvJ#1ua2}8h{3m3<;wAA17Cxo<VbQgxnz%tH&s7kw0tFXj!Id zeE(JW$me3@+u&iCFX>}H!iI(v)4S+2iAzge<lwd%f1TKQJ!HwKxJ6SVY+F#Y-Lv~% zKOe!Sj4$_8sWZMlnW68@9;N7<v8iS(%npC@DOf+o)AzOy?1gg4{V4937&cC;TwR<2 z*isZ_rhIu(|2Xz_Z%=eDc5tG&CP)>7dDB63x})z6bq${=FnhX(>8Fg`!iiYl5_7E0 zA~0^mrW?l@iT4KXPO!1=5uON;9~22msd_W4#LMH}8k1<oc_Uol-&WnjzBPZ~z2H9L z-mPgkBFRR-O7pIAqaH+ddr&FVDo@av{bXQ1HlCcR5|y?8X)Y;#n-fxwsn1Gd#0s|v zAP&FFAQIn*TrRwl<I6sgRh1P_mNgTb$bUTg@m7)|S)xR>f}q=Mi5oBHrAnz@x-YOg zUYURi)Jaz++4<>RdWC9jg{Z!otNo>nD868Ii!>&yM64On*)4(3k#<m@wh#J7IBPSp zwykUH$>H^WY~8d@8Lj6$liOSt4ZD{<&08PvszQ*0M#|k$W$ovikQ<N|v}QA_ECW0R zMPu2ZOrvzbiFa(d&{DGDtZ2wU)cayWZ`r&Nuz^z1CP(8K*-(TD87_Eo5aFWaGqZDS zmhnrPW7~xg3MgwW(b=m!T-U-|mlVEh9U8i)>Y)V#ig|D~3zqvAo3)1tFwW#EJN?G| z8eUj$6;Rc7m|wQLK2TlRJ2G#K8{Ss8_@6-pksygQ5D^3TBQYrN3FGwx384t{?$sr# zYVPHSPJ_Z1H6_bM^eRv&MI;eDXyHXFPy`YbB`FmTRir4JQU%?=ovyd0z{B;Lnr=Rf zPTZ!mIGCM|FS6R0-EKCuS{nbVX|XBmG9T`Ne?>ZcW7RRmp`dQDRD4orwSRv8+S#}0 z$JK_av0f=Z=6>G1uS7e7+DOQ=&Fr;oioG!0hG!hKkD*+dS5#p<-u6d_weAdhO~Z!8 z{>;p<d=H7SAWiq#-ER78Li)6jacz##@U11(gk-O-awtHcJDHl88V-~&MUR4)BB#+I zU>7dMD#1Zv0~;;=GH`cM+P{HQ=@W%Z+gqh>aknjphx($=U;Cm{=uv3A)w%vLl0SSN zPC83BCGE^i5-57<AYXMhhE2oPg-thkO%6qrGB>+qPb08no@NI+<1c~-iVbyhWuVP# z5a68ci<j_^?fbygeTl7Hj+jf_87;%n`CtL1|NEAQk=pEk7~@Uzy%b^>bwD7w)3N#Y zRrJ0SEk#|9GsYaubm+$WV0yyLvECPtUE9-fXXhP8>lWV}`PVPzF|oOz>~^&di4&sg z6}7RS9zSM#d+$;_VKPxi)dy3tI_unPvuX3I*}3;kbv&~>X&&kXUorLrhx(PtBK-pD z1-aYAcd2cvjrOR;I?hRM9Dfb*Bq15*GWo$dGNlPVLvwr(HKoa`lYh;mlBZ!3cZ$Xd zSaGoH;-WN_(?t*G-NOJOWUSOa6fM>lB-kCJd~2;5-DJ`Pu9Vn>3gD_*>Kzv0nfW2k zs~4ht-64Q=otf-yblz1Bu~qY+Gf$sY)9TvcR`j{qGWEmmOSoopTw(lN{{81VA<?J& z8{qEuBhEXiH*n&xf%mPog7;!K6r7$LSWy7{ZQlGWdwf~1EH|9@%aoZz-~HJA0qrLF z$D&hwQ8VpKLN0XHgRe(-5w->m<3n#z(|F$P<#fKmeph;W?oM_^$m1ZfDAMN(?ZaCa zT31xmt^_oBvqRE_%Uars=sdAM^e^0*tiynV?mcm0V~)r`OI9tvX7oxfK`EUEOk0+Y zoS9rI;mh{ev6UoEim8MBPD3GVBq_<L?w^WwH%Ww+BD)lXM!hpb26~7=Q@jPPLFqpQ z>*0`M7yo=FRTTFtk?-7A7L!>wR5E-nG%nW~{O(eAoheM557j?gX2dlY%E`5SSN6$x zk_>{Eh*KOHioNKPb$Gs)pFWe7<{h~iwo(A+;ulFYJE5%*nat986+Az7OGt+|erF{H zk0e*nMe^vybY03~5Ylfu1~VqB>;;>x{zhz9%5^?g*)M$T3XEzK*{xCr%iYB<l&!|> z_S^zKiR(q5`p|ef`s9+3x^2gE-eNZs^D`Y!3>TMkUuc`0v%k}EmFP9_PfuvgqE*`7 z?hP08Fw(emYJO_gfpdD@)JD7-_xI}os42vHSQ;AtSY0RkW3HA87e3|%Vu6pWn(x7~ zU!>^AP=_8%<m^08<UCYPU_Lp&Fr&6n$KR|BPbPf*+lmD(y%I?E{vyhBH&0$y(IhR@ z!A~NY`@4T&e{wsdS^<SG?mq9@U3~<Nhga_PeT9Cdwj^!4Uc24Q{8e|Zz0v4!N%krD z%6wM4;)BO>1W->n7Ni(wTu@I?vFWIzSNYpvshJv+%>ZrdcPyBe&FJJ%7vDx_MQ^gd z3T*6U4Yb)Q|I=-`uUjr(4y&5c(yPa+RK@NpGZdH9v>-t;q{DMj=~&mH*16CIPn($I ziVWZGs&lTe2aWQe7|F46Qg(L~Y-6*Xn6l|9Z+3R1n?W5up*gnIUZED`;0WZQ3p;^) z))Wib*ely*6N?>5HZ6zjQvWopE*&hruK(JsD||)IcWP!{h5zI+_H2CJ$Tzd*v$wA6 z+Fh0ZT$r`p_;Kh|{IsN?Y+FShr-loAM~8>g(c<QOl-cl!{fI&jOSH5`#$_Es7Gkz( zz+sLu3(2YFxvni*o5#K0ubdU%un)sxilKse>gt{}zyfV;p4`J#3B}?}p1j{rR4{29 z+AN`Xdv^5A&q_<Pl2eVQQYv`+p09&;qqs=6+1HubZwylMy6w+ORjHs*J329&C#`9} z+?%{H=FNRmJibT|oqP>bJI!wRB2GG)H8^>VFuSwMSS`)<JHdUwJlO5qH)&2XN|g(K zUB|o0#iNuh`TTMb%!R$wZ75`+z|&_K(c_)1=m`w6kc*DA>G?Lb_!<xbHfkYwA=MOI z_qQeMef19jIeRvzxE)MN*cKA~HZVTw4d}Ex$(;aKj@=CH-Gbq_Mg{MKcm5V(4i(=6 zn(%ocO#vm^hq{AKC&yKzdM6-qPq}Fh<^So<aEZ5Zj#XRkWfQDN>9Q;9N|<Weu~WO; zXOtq7mznmS`Fj32@}L>fw?m&a;eU3$yU#M=r+xmZuc_}DWm|PyRk>3LgRq{k{<&fl zc3)lIsG~6}H)}F8ng&>lO*_O5z2OdbJ^MaeT^?M<JfEz=U-=pPHD<zGnmmVC=YJ`D z5SB#BeTdxDrh?&qXZ1DjJ!f7a<Fb3%n!z@2aKo(rx50dg`SD{ye&uI0rU92$>VL8U zz8<y_<^fmxh1alP^{m;cYM0oe_8ZbGvYCM5MAC-DtX~Y6*GXquW?i<y%H&?=U^B72 zS3Xf*QGQuON!qd%QVSM*9G@y8v0X&ZWBVW_r+8}VK0b6u+L1dCUnkYOv^Qzd%1wJS z2I)E%qn5b#w3`vJ^Q<4*F`ydxet9?~x#Ski!3o<MjuGu4MnT%~WAJj^Y&BoMbVVFT zB#*0WJ@(`@y+8QRR?y~?7yH?6h9Rzz`+U^FdAr}%49QEsID3Q3#_+?yW^6AuD}+PL z(O4QY&Q3eL-RPt)#4jpDgVayTYos^pg?xr1*TK~B{Ua%k;}k~W9gD5X3K5{ggFG#R zhJ7Xgc~#Q-t&xFDUvv~nj`n=U`{hN#%lLr&8td&9LVM@Lyf4H&<V0q5L)pAQ#om$_ zGgv&mO($<nI~f~MLyt6%Z&({;x5;0`lVNW#KdloV)32%li2FeP5g$RNoWr8`C1mAW zc)LoRA5Y*LLULO@QxdA1^?3^&zptO>RoN#Z)pgM1aBNXnFM^|)|CYSDoZ6X3>#FT` zT4=gZrl4^x=Idvr0_BoEYMSd$PyGe&qDZM$H10TV62Ug<rnLus^;dLG$!e0CRnV5F zxm!Qkv+S$`7OA>bQT2VL0$jKO5>*Y$#aQ$YScZ4?+E+cMcV@~fFG7{&>&qk6KISvy zH08%60CJb4$30O8ln`c^(Xw<8eUxD?B}MkT&awep7xfX%OozSmTD&?e!W*yJyiN+? z*6Tsvb#0qezbG9I(e?hY13lwj(UVDIPcpaLj}Z$I*UwM=JH_wSb7~#0z*;LX6E`)@ zjUoH_ccF(fL`1+ZzuItyRBIzZ@u_89VI*7)QG>$E_eBlSf_R&AElmyYg93AALC=(d zfIh@;@Zu<vcQ4ZEMPe<R>vXnV`)dNaQh<$@y0~?yZhof<aYrC)woRscK;Mk;xyd{? zoI}x_{sURbbK`a48lIWNC=`FxPE|eQ=a@U}Zk@zz58#2$y(-Jw!&?<sFOkv8xb|r| zA7VUXsymbD;j?%tbCF3_Y!du)OVmU9JQZRzf^#xNo{Pi3&L@e9cm<HVt62y))7Zk3 z_$eZDy)J%KjlBmxG8wC@2`>{xjZiKxWMFplep^bgx`8_}mOEdut0(m^5!wMvSXEBb ze3x#kux4j^p<_TiLBVx*w?A@j%U?F7LI@o#>t6GAmYj721$9BBTT^y%vFou*KK7~2 zLeMTkya*G^nSGOrC@OhVb~zn+JL&EPU2=0-F=KrBOj2UvokJW<NyK*kE<N;lCgMA~ z*V}zO1bD|Nx>-2&ISc5kW1Y$^=S;d~V$Y6)Qf!epaS)h#&-36vb5JYydtETnL7qzF ze=fY6|IR4lK`W9w^KRqZfbw>lHvT21p-t?m=^U7xM0df4w<l|;@{W2_2<uOgzBt&C zi|YzF>Xi3#*j+;Xm=q>=<2AlFK{KJcaUM^9PX6?bS0kZK)Ft-_Fs~pwysNT~dNi+g zs6ezdvG{PfjNxaw=+1pDmiumaP2){*+t+(X=|S3}HL$xyW+c}MX~#a)xMzA3y9X|g zyYGP&5Gs8S9J6>YZrkqMxwo-udP2PDE&?Rs&1TVVU59y1e5W4RjrqxacQ_S0nT*FL zC!J|vreJEZq?wF!{&QjYSm{3k-(BC;4fW!C@ww^iEPSJe#-r5U^XmOk-%ai95ZR&7 z#g~Rb59W)cIsZ`HNqhe)`dN|8F7}%6WuDc%8&pYxNQ3<z+s)P1x%-LEbbVs4X{El7 z?AWjV|85^YeRF;^?BnF=uO+pwQ$#f8(~6WN<`L<y!r7@Bv^RhS=!g4!P8<C*?{Znd z<jl%>W5QMV1Y=$IrA0PdgLSuBsh0%xE5tf-^J@xalye3%;GQ`<^`9Zdf<<}?Mki+# zLs))`EVg>0LDuj0CjSZ+MA?YxMh53o^e!6H*Zw#;x1-lE(F7Y;k5WvO;4N5$ye(}B zWB0aT&~jGQdOxwuQN30$mi<lx<F_o*gDG~-@;<IE*a-DWazK-<s-EwFGiTcM!>W1V z7qk4XSJ?EuVqW!sJ<g)dxgH>8i*Cd`L^KE9u-ML8ggi0wN;o4m-POuQv0W3agLe-Y z&s&6`V#*<25paaLXpYX!cL?KWy#M}pHd(e&YjK1{v{V6KiDQm(w?oF}cb0h;NOR@M zzQwXpk5S>%d5>JqnnixGr!<TuB@3J}jI6jMoMFSxMY2(hOT)6>>??+@7meb-F9<T0 z96M$Y|I6SJenI>)$|+ko#cyEKB}{DKFC`q|)|o8{{$?kA?4iupDG7EZB`uPZ6wgg& zpp&R`@CfzLfMUs`$A+}z2AH|r0@RtU{%fr3P=|4-7AZq*>|N;njS)5&)E>av>$Jvk zZz1%<&XmgMe034$!EZ&Q3<>stWJg$;81C%>@dYW)1ve*NYucR&-5Ixqs7ast#Cbwe z%oHz3y&((6LO^1@tH&0QDU4TjL~cb)+$CLm@`N>$kI5|4g-z!4mVgC+TCL9CWf#0B zI1f-gj9sew<M`g^p@DeFnwO<II9c4>T(@0W685+yH9uZ1Y9)AAUooph%)cY>MZV4n zUB14HMLDA;5t#P=LihS$9^L3WKWspjvL^aP)K8mi$M&RK`BS2_t-hlhwv7u*JA2<u zHrOcNVW}|wC$TJM3|D#i&+bGTAVg#xv+Rj`K1@?`<Bzt~9c}oWW?oE=s%j9OK`0#{ zwsuzGhLjea5-WmAuzUM9WLYLI&85wgRfp(f;YBg+Q8UpQ+r6qtDZ_Ot{NnmZYo~Z- z>%v7v5I;QC+{U8t-cXhB(8{KYbPIvjj!de<TdFB1XSqu4!ug_gRaCg9nQ)7HoYImj zS5pZ+jaZS5XlNvMj(Iz=+XupPWM#zzkdc|Oacx=tpu4fTKEKIXRh8dHdD&G`H^)`I z*Zkhxw(a2JbfI~&vJ_flle4lezjBVN<QCRqQ0<n{Qsts)vvp}v)#8<D_DnIcF?(nu zv?(J4Yva<ijlEIQv_$BnWK-0(v=RMJ^(Ok*L&gSyhaCr*fugQ5e=4Ra=y;`R8g+iW z|Lff&sshWjk!{8%XKlHIETG0rFy|awh)8Ye6>-W<+N$a)w!+HFs?zGq@`3y2(!$N- zWU5Lidp0zEO2%f}!l{earK$mYUHGeHN2ICix@2yJpgH9~+N!Ch2h+xg)J=sQhC*IK z`p?i3%$Ntugr=%Btqq2jVnnb!kI^N6Q0DlG>T=r4r(tM2Tg%P~t;N|5Eq1T=(Irv< zW$JsqO2J_htW1lC*2Qr_hiUk>3`NenMw$!iQeGKwapTeyn$X<3zoJ#<jk%?DPO3Tu z6^{&n%9D$iXzF2I^SH^w>f)GvvJBbc`~pjh&Qc+cx$f4E*b4c<SFU`0m3tdz{na*( z(ln9w8HGzb*TO424SkF+NiRX~zwbHn<;FcDD^9E|&%qh7PH~Q!k>r)6ubE<v?wHHE zll2}L>aJ`b$nqPal2T_@lJe43M2adzBvW7O3d>s&>JtOe#pBKnUX{2<buUsi%mVFV zZ9p<LNJ^Pw6O-gGZg2lp4(CLn0JRf;{xM6?TnXkKFv59f?5a%HOSAbv!M4z(uj!pT z#0j%Xj~R92f#k=8%mwPud>N?T6Oa^qHN&tDA_MG;+}W~g?8@&M?{G$V21O=CU4)v~ zL+S(bm^7c1*F(z#_8VM7IqR3m``;J)T5oIRxG32K*&66Njgc6k)*;Dk*P$`ln5@H~ zgly76uS6QNfZ3QvUc-^~EQce<De%30QKv2**tGc@AO8-mAMB^sVMyM_5p&)T(Jz)s zSHKIUTHKJH)RjI`<PtMkSG{RMvLX?jQ%8VOGBpvFQ;ZTwr|eY#A{p|uTas^<RFd+P zsTk)G=*V(bD4F8aDjAzUPFXYnuS!2RFIr_duv*ntGy*v}J<m=FOJGLz8>G&S8b+Xn zdIzj)96^6m-k8F)p0G@Jpp{b@x6k+q+=b*+;XEd91aKg*QzQ%YrP74w9K;zVaej4v zwaZcwlV=8K5MVEV5ZKAz4q$Psa0_%wTZenUIPco^6Y{}u4txLmIw8|h8|k<7NS7o- zUe$%svR--WWR-#XREMVV;ZN8645DLrHA7-m{^U7JTv?X+1b$&YtFl~|2dG-g>oNR- zK6O~e7Km%{MSUDBQc!=2ldUjRoc~vJl2031ZSfz?D(tn<edDslLV8EHttU0LMb`52 zU?@T84vX!-v^LD3V~LDvBvKMcOrpV|=~#)vk+|FXMF%55Cr##SB{o~Q6!QbpwNR_` z^HqbL88Vby+>TLvyTaJ&P{nFpMlDwp1NCD!dP5%)j&xSDQ@$ysF&NX5=mSsLo4vXw zthEu@r8{rOZ*+BPt;r>2bE=I=$C`m_mQOG5p#=A+)SEtUblma58;R}&c9ZVjQ9Lmm zjCb(;9=V4C%xiOB#?9#BJjb&6Sz=)sp?B$O0@l!+Ud&CW%FByow-<A<(md9}`a)_+ zRepSi@82)y(2Rt1#A%F*Av4<<Z{`PM(^9nDCc2B1N)U}3lLqS+GIF!>W3P2qJ~yIb z77wW|;!dSbo9&_Pl<k=9t-&jm)?$0PUj}!aw*+rZ%_4h0``F5U$4tv+iz=Y0M^*nd ziq+y<jFoS;?5zvk+&9-nvwc@}YeyiXHz@m7WIeIx<>!Qp5qbV{$b6e=F50Az=EzVr zBfyigqJW9~vNgPIG;phStBytr7Xs$F-_=UJn-dsK8<I=PfLC1t7Dj`-SM{CA7SB|d z^!fUqiWJ6$8y}F9<(T(t+<&PTk4pYa{${`zK-j=q2yX13SN_@lD?lGW5Wr#>7af1T z9eTa|7l0b`^~jA#XSa}GdV$5kdVMAD2`_YCMf@2~MQ)|`=;sc#K|h%~LF4NqwFL1) zWW`)jX5d|rXrQ?w(}I<v<bn%_@Pos`io^*6Xt_1{?akdOU#0eHfGYpc!QmqzP(?hV z%6F18v9K^Pu^fjzi_8l_B#@K+*un;u#>2~d+o=Pq2NK8I;?HM8#nJJ?w4$F~7rz@9 z@~)N5{7uG&r4_@q4f!nI``ky}`y>!r*YQt*1PP?tPikL!u;^V6zV!@5%o_m`^~VFj zz~4sBf^1a@gIkpAWx`z!o<XpN%O!P(YxK9t1FMW6LA(U-;v(!sZ}bPr1?o^hhn+6i zZ0H-vivxxW;w3fK|04~=K1_&AkT2^sccVKS$X@I910g433pV+uN#yzuE&pdw!VqX& z=nOQ!HiUlqX-^*VogA<#am{URBsZoN->_W@2H&fdIgVU#SRp>SzV<yM-CN&Qf*>#< z-#r*3-23bKLB-%OV<U3CtLu}QIpiT;KxZkT8SP<FAs*hLUR*8EsX#5lp3ELmvQn^P zY2N1ge$}4+9rYf=IS<Ui_J5=32$w;RJ_)|?{dSgb5^-=LQc-cC5QIP8hcls*#hjJo z7=;&o7&`FnkH)0>N`mgxyD3ulZbLo)t)gZ@ZCQXu!}pXA5cVqE!UM+&^1Xm+QGSE& zf=GIi@8aQJFC63wdjbQTPhUa9&&qA%`e0{efVqhN<hh>FpH7|jw0;wP;`Cb)$p&sg z!i1mMN%t6edLr4N-V&ZV3EFkU^~@^ylb4i+KR`mh5&H=CiRbPb`0zSddBXVc3D>HH z4Pf!}ks)cb)cBW%xCK;$pL*g~M1%~)%KwkHw*ZbLNU{aR%*@QJ7Be$5Gcz+YGcz-{ zq!zQ(VrFJ$X6b8YcV_qY+nN14yR*uw^z`s>j|k69E6d1u5Avv<Cjn8M?<nzO00E5w z^1+#3qF5VX51e=l*s~sh=krC~ld2AH2Bd=%vcob=XETnK0Oo`d2HOgxsUPkdk~Vw; zT^p<exwqeK;OYw2)&I&LmlyI|;-zfwHj2VGW$HS!&b3bu(-Y04M#zV?u)56oeG|yj z%lL@2y<oc80e9Ag>LC-X;YB_Pjxmc54&TYKp1YHTon0G6u7&<i`$XRuc#o`i8^@FW zcZ@zpKFM!d16yq*?^tKb9DRCcg<gZqWq=u2Lb(YkPrfvq@C!N)oGoGk)$Nh1t6F!7 zQN}=Ij51`5^OROz0DY}}hG(%T^ptGj4~a{xP-ZCs;F&UoXyX16Vs|r!w45RBKf=L) z4Q(=cN`_AI-mw@C4U=M`AYrN5MC-P~TBbl)QoPa6UK3z0*i;<ox>N*9vFWr!{piDf z8gxtax1MKCPI9~Kei~`9BCc-DJv}JA)H`{df=TL`4`LSvm`}M7qn{1HGATW=Jf>u> z9(o2+$+s)#E*OEK*9|41Ww6sXBm+*NYOMqH1NA}RFkC8AQSyMmd9|4fx}B;n<rUtk znYE^O9F~7FC)btZIQ^%Uz$;Qd3@+|0UyaVBn{)k^e+~Z%tNYtMG0<bzHPoK;jo=mR zl2~Kag;5SDZP;nf?tNhi^vJmhVh&6L&;(px3!|^2!HmVbloD_VP)!M}t^`(J3ZpM` zng@x0KGur{u#^n=-_)4BnZNuWjRDR_do4z=!125APC$498i=abqDsvj>41DOb&1$B z@OgN`VF!3Efn3e@x@EbvCQ=RIn?q~Nv{vB$gh>QU@N4x(u}TD7^j7m*=7T0P*;^6t z`1`o_qLf3n&SEF_FfkDBKu80+kTEdlgOLStVq%=|p<@7@i4$D#;bOp^1@RYr3+Ka^ z8wE&z@AmRXy1YF9a6xrp%71nMh2%fIO~1B)lE~M+%DuCJ)qg+KL6E#IgJtJ)0<nHm zeRGhZc2{u7cd$ImEz4wFIWaV2cK9J*w&BholJ{V9m5}_==<FK+=edOifdPa8js{T% z&gbfu062-M!vn~<6)^Lj!Nhm|3!Zb!GorpL|MIV+e;4@N3g~&ypyNLbf&ZttjYxZK z=5M$yyZy5?yE~|xxO>0**}KdK|CRGIa(mD1Md@?(>m#t_i^y+9?+pJS?k((H?0xu^ z{H5&0>a+2K_Ujc?ivD^=ZWIIbBA}RQPA{G06P37dCcK=Ph%7ohDZ@gThMC9}3lTg< z{FkUPj8qxosHznM5ngmi(xK)iMuH#~B43R7wV#0m&Xc0t4|hH0tXGf=0uKie0~kYY z!-vGg$^Cm^H_|r$Ho|tjw>kimq+jY+G^a0x&q(V<Agkn=x_J(aPe%l0u^m{|_?h9E znJkas$ND?yMZ3+M(3}y)qr)krY3X~UgtJ~%nnla0iz(CRSW_B@j9uoIvF$wI{5s9h zgVlVUM&_wo>2`zjJmWkU&46>ibD+sAZjE)jTuRiJXRJ-Wu2ZBJl}D9^%GOz@*}di6 z(xJ_S+8x=U&1eUoo!8b>=ki^r$2&shC>O+3Lg&8y^&#viSI#qHztA0Lh)`^fy>9FK zJuOJpD5<1$GP$uuqBDp1EzMr+u?O^XLN*Bbm8<ypU=qNb<f++7R9Z<MQ{2P$oP%mU zojiKI)eveRY~zvU=LKiGS{9uBncJG;{wwN1*rKGIR91$-8jwatGI>_FS&G~z;n%Ji zs1;xq#xq$2m!UH_`Y#$M@%2KT&(wE7r^DP4o?YDQ90+e}j>RgpYASW58|}W(z)8^c zPA_Ozl#5bMnlS6e2jEli@&R~K?V;l1l4C-@uBP14xws!}kWfC68W{6+S<^yQjq*^{ z3Dc+-+4j8{qfv^sOMD>R_{mDg0s9hv0snHi0T(`Rg;wR`p$!6_tNo39ycfodS-BB> zr#$81sPko|F1lK|Q<JqvNLg-rLDi8FC=QJRVb$_P)XWj6N#hXJ-~A-N`*rL4-7-Fv ztQgZmrQ!tBlIp=mjA@Q}|04VAfO+mcC$lP~CaVehs>mLZ+7f6-;{mx@L{8w)Ynx8h zXTOdAwX`*sRpK^z?zC}e=QI-#)VS<rvF90=u1-;XD~_uXlCym?vwj?IVQYwqsEKNm zTd(z7iFhUQ{dC81nnrGoRF|&H)D5w{V!RBny<)ozv&H*`+t+;XT)NGKu0y`DL}i64 z)fn3xYjWy5Ir1WXU-v?1&XONty2DJCd#E*;O2Dk1moiVWN$pS6+gIzn(KkhO5L<@K zbkm}5rG98}sAPdhCBqGFN`!4}90awRFUe|7g3X)+t2qKz<4k(-2r7lt)mP32vw+=A zuaS77cB=<yO8zJAEk1YGh#X*#FKmhqPp#QuZxxaoJ_hNy1hUi7Ci~?CWXm0kbjs|M zJ3`}|PzPBvb!&g6oFpQFL^hEmktB%(d6eNfT}xmRPjC`X;FEn(y5ugJ=P15}R55G| zE#s`>fn79@^m2Ilz>$MjXFMdNM*n%%-7+;vps02gC+u;^9cjsT+=3f<zGhA|$!5+& zFI&f_^ONka?%JCiI`vwU+_FcFOvWJBBwWH2`Aus`j>HLZj9TTnH<29<e)fzQmR)M? zJ>wRi+I|mv&gbyOY1HiAv>|a`t!=iAafbyhooHAIE_f$6`()+D{<lt!dE+VUJhu6! z!n{J$6?`e5|8s>}h&9jp4;-EYi-DI@wo04jt|?@;XYxsF-SC7Ygw8>`VyW#S0ihl@ zufSHxZ(h;%dWCtd(xAMSkSTD;N=4U_3(3b~Pes>Rt|A0S4-i=nl6t4ABP-^%qK5jB zf->%fp?REx%LobSc(-yXMK;Ke>}TDx@{o7wVZMPk@x73ycipOK5{;cvZ&bfTa75kQ zkre5~L41*yE!z#Uid?_JlPF5a4WBuyM0P8Mq>&Wx(UL@UGm#DlwK3`gUWjLj9Z9Gp zE+o^|>fk>dB`SNkK6B3{WsK*%#5_S9`ZY~xUW+bsoK4<IO%a&0cWD_Co}ia(Qgu>Z z418B9Tl!tapL4#ZX>j7;=|Y_1b%wk|xB(N}Qiie*nqBG0(AA(cLuZX|<_CPXp|8tJ zA{QI@L?0t*>QBgelB;pv5hi?Zq^VsGQZ(-k^bHr}=B`wT_Xu%3HK{V4yy=bXT#GSj za_^x+o9-Ff)kJQt`y6epaeoT1r~8NIWvDxDNnGIyz>z&xpmQbEmrc&k+n<q^T(GW5 zxKitD=iS9DKG|BauL&+ABHM4D<~aLtk0Ua)C)lHx2(y<6k!pmDtA*f<SiC{15RKTN zBdn@V<=HM#UwV*Uu)6A`#s{&;dC%ZUXX2b^BP<>|<48vqPPU!r@n&m@QsJ|ya$$;7 z51mVdsD;}fr90ThGD0xx&sqitHf#I;WJGJIsG4v*U!NhlLghK;^ex}OpZHo*uT9d_ zL_cfdfFpKegm0gBgPgQdbkfK=Ng3dThkd9V)#&9mZoHYKe!Xs@{~3O3s+un1PI>TU zZ|wUD6Sx)ws`T>5+RR%3EhSSm*?4}<X+FUp{gk+Jx;p2}lQHnIkd6$3(1Y20IRj6V z*guu5x{45rRx6o$V{@hD{K#taYm<pM&Y32=ARX*+DxFHbA4b|VYdwoZ1tX_MU2e!h z2m4!VHD~y$vD1BK*>4ABoep8G2!`Z}zzZP5Q)GZzh0v{)O#y&MZwM>WyGq2fEn}gI z%xhRqN^=!>MdmFmzMo~R?N!VIbPpH9$}MhzM}pN>3>liU1LD#h?<9H*u~AUAV6M+G zYENF$mSjwauI>?HD6&aLv8OzW){hKR*1Ju&7WF4wRZc!=(1LWzJ&{;8_l1S#npiXW zM2!m~isx9P&&*6@(|@S(MF}KKu3$~JV6FxE2M;%GTgGNpwqd=3?T^y+YecS~&1!9# zL9*1tH^W(sf$|$ef}$-VWr=|%%_w~02OKVZv96(VVSKhMsq0Ut4otAit2-oq>n#9w zi8b}!@y-GE^m?;2`#|pwDTfUS%gwMaU?Vfr)D(1=G!(VJx=0uCKVHO#BIXD`YLlNy zv`Ld(20?ElwUaX|oq73IsGmblq`K4+Z4fO@=Bx|bB|Tk{c$yvaMxwT=>hmfV9}5JK zmWhw%bpX^D4YS1NitZ5SkPCl9aCjr{Zsu4;G^U!LX(f8AE(EWa!*OwiA#}ynQ&gp# zH5Mo}RW&;iAFhcv2npNCN0G^oT^_?n{(+{UCA&aR&$)bvRIj{5sTq_#GoUhoN?8$b zhmuGaq!dGfQ#@@ZF(Xg8%iiLnEsPoDlcnTp+M1b*Z%WXld3^F7bIEp$A@L4<^D8q) zUzcchv3w+l#6|H+6+Nzw|C>viAs}f%WU)6)&n@AOyIT~jSG3stXTQK_C`1eNs`!VR z>8f3ykMu>T+2th!UZ5)3l<fA@7j|2=p=n+q1{9abGrV^WWbY&7Mk=`3XRZa3o*2>% zxhww0yZ>9_V^R1!{l=l+3$l*j183Kj%7k;4RCrpgEJ<WT_F=NOaY3{{aJzg9Vk5sF zs<`cpWM|dbs*&Q8#)a^<N79*Pc0MAPpnkVA-RKbKH*a-Iu|y<PXXXvNM|QlaIZ!QX zV;-~CEwtt+C|*7al;&IbT`WMiNa<Wi$k;OGpw2sPXpL~xs&$wrpTTYP3>+vA{b%ga z=yrudKW;E1xTI2ui9`(sX#t<1YYjO!+-KjRVl)zslzy9tKIQud)?D`EAU%r3)HT5* zibX24W+jU)q6_OGk`7tD1@o*O<mg}G!Y@N~auJzUBnjx4GEkcz0&o3pv0~;l;B9>* zO<b}m+R_eTuNcr?UZY<(Q2h!6^dg>*=z*#x2~s|Jo_BJAb__^U;J(4^Y#4*?n}+H9 z`|Hv_a|^4-B2{*$C_Z;x_j=&E&R?>9*C-{?Ts`Xghic9y9;ruFgv@$1MBKrq=|Rl* zd4*PhQJYdbr$3J!t_UXa#ot_0AG}d_5rfeoU?>Bh6vs4*lYILJDAX==2VoSTW<vr) zeM*q@KJc9t<&+>H?VP)zxexotlaD-RwmWas0x&&a`n%8v`SeKJS)%Sep6|(0-FfXm za;B>y@}}=+Fu914uUi=zxui_@Ch-Hwm$*cq_!e`(l~G35o~=qtGv)muC@470P6*9F zL6A8z_(#Kq0R<2w5@Est6*NdP_z{31C=3Oq_4$`+A}xMMH<3f@%J@?^&p)5Ij=i=! zj(>%nm9<w@dbOWFUmu@dogwOfAS)1nG4Kl&J*|+?ec!k8v>6aTsYkc)FrWhN2?!`O z5Cjxcl1xIx!oUN+7VORf>XS-D^%o5w^FvBd_wO4K^|2-{F@gg3>L&gX{tF@!C`7^| zJIACz*tfd_BvChbyVfb9SZHPpvco@S`Ug7!hm3N&URhsV5>_fCw8Y+C4`{Cja1Zh; z0Sc~^XaY|j*mFYRWfh`7z_TG}elUR1A^HgsKK_u4-H^dSKbU}-czrO?BxpW0fb#n| zpdub!DK{h5or674-jIM#(S#vyEGjPDk*@d?Wb59|e}H_De1g26EpVgkb@04~#v>I7 zGsG>rf)+H{AFlCnzYk?+$eM8<8UPMupXX7$Iznivn9%Ajp2cJ&Q<5f9qX+~88YSJQ zP)O55M$=u$vWJvqJ3+H23G3R!PRr0U1EmpNg<wCWkxx)U(Tb*mB{La+fO`7AJ^%qn zWG#Wf#lvk!m&pn=9{vuH_fDDEgC5CW87yUrj0Y_d7!tIAV7eo)(`~I@y+k_L4D7-m z+3APBp4(KfB*0r9^o$>w9mv-I=a1BpIuZ>>D%iNc$&jOQTf#dAPIX_k2XO;)7)=d6 z+B=Pr4Z%_y;rU0ri^0el8Jb-*Yh%v}x(COTLhoO?AF3Z6=`n3As?YOymsh#R+IY|5 z^d|q!sp50-jH-dLXjA;-=3!y>cuI|lZq|jlN5b>J@h(my?JUNRFd8jk)m%cV^bIc< zGVw&i*~0;-@63&VWG3EZlbUS}^GM_fa}69#q`zP?wEprAP0$)`<655MHMq-F!fja9 z=-U}dsy3ec6LjS2z>C(qH9i9<xB_<|hBsubfct}BxYwnF*uju_{6>s-&wDO5CT+}5 z)fsPE9Z3$mU?p4H-)uB#j1s>X@q&sK1HqpMBZ{oxX8+PjjrLA6T4RSfkf33Y9SqzD z_eAp+l;~~l%oT|#6=k~PNW~f#e*A@UJw}~%2wYi!qwG&54}8YYV-6srk2Vq7#(+;3 zM7>L;4iaSmNfV@EkG%nSuFtap``l0F4uBUpyaVYDmK%h=i|P)%75cnmcSGq7r`NA` z13R3vALE?ByGJBs94(!|@muuI2%wDU)d;3X5#|UyXg&f;Y@s|%X58K^P;zkMEKw6i zNs)9D$YDNr6AG;uXgNZS$oVXNIgX9!`Yhdof2IO8XLM|#>q3BRL1Q_#j_9%ie0vmL zA^8cYXN<2{-i%tL2%)4uQmLq75rv0jf?}yMrHf?JT&XjqPoxy4QfV@&iA+q9sbXUV zza?F2zfl9s)6f??#`I7EI~w^;2s^6Tj&*ia+HQ(FEZtwyRv5Ki8+Y*9VJ`<{UVr#q zqZjt07>wG`-_bpw`P|0dh~+RTfY_BnE=T6(LN=m4&INS*@z8Dlfq!SxX9K0vAzyZp zT0tOsangZ74Dcp^G3Y|1Fi|P}LHRMz`UMGqmVb#kfoOv-11hv4+JX@8lC?sH_erWl z4(_V9qKfxosRN7lX{tku4&>OA#|L-p&=G(>_wwk&Y=A!pG}!ZPz!w`}TLb^Pq2Pux zHUPf>aJ*sWhCSHTa7Ux)wOxTl*)?&;r06@p;gk>MsSi`=?zo|o4}sqm$_LBqCFjTG z4Vv}`^9IxdkXZqL_eb-F)dRMP#U6$|vF~Kp<wrjyz|9X!ho2E+E(DB$i3i*vA~ptr ziHH0J7&-!z0Z42-<evK1oEr;XdIp3UFuhR19Em|lb_6n=nC$?JCLa9`DAk;EUqORV z?*O_wf$t8Sl_LFCc(|a=oDL(7NP(nYWH#E(D$G!Ure4f}0#2GAk^+!DUpN^8XI7Bx zE-zeB9x6RpQGqHwdQKiIJ@A)2SbF4dc{F>$RSInOBJE^oZF$}?@LF?BO|Xp_D6-!! zV$`#eI{{1iEWOC6MTR>elJbx@q9)}qFZoo;prr*i=Gf`6X9_&&0Z)Zp`ec@ZKj${5 zKOBIbbNFq+=M17V$b{(d3?l<LuGnw@-+Y~10Kh^>J3m3YKb=3p1N9p!NRibE7KA{{ z3@t*Wrvm-YBAFRr26P_LI01Ig*xVqG6V!b~(R{ZP+;Cz1Suuo=?tFTJ%)K@^MwGBU zfAz?`J@9)<LP>~0g~DWt@G=q#$X;x05^ywmsAM4V;$#Zac;O0pDt*Ed(TV_L$)Gs^ z%4D<>P&5V3Xtq4bQw2|bMiC`u@uFx7;&|B%c`|~a-}yBBWF{gS0W@QwzX7GnF{P6e zWnLA03BsWAf%xfAMMDC(X(C7kc=3XU{Y%u*#sf{<(Q-jk_c`3*)B}R-5h!{M*kP&% z5!r!I_AqdORd?NS;8piYvO$)1MBEY8qvjnrDf*>ukm})%cW~sR)AmaAdFXmU^?`L` z)PiE%adp8ZZ$vv0KLXiyW%5zf_9W{e?S`}jFl+l*@^P*QxdcGBf}Z^)JK?W^RowZu z;92)sH^Bbv6unTaM6Nq<t%P#fgRe|6_(2Qvla_-u6TrsoaJ2%}24L$`R{Lw|vseey z-VksD#SJLcL+kqY^jqDaU4+2z7>Uy74Y=XRO)(os{3Y~aMwAiB9YK{5YMjAA3GSB% z(TrIth%ra56lO7p|G{-FVl9PbaYk|}ygxx|kF+i1I^p#U&Mn}5K=a}MJmK<|HYgX4 zP%@$b9!t9`3v9s2jRAI`$PFuUz>yuKWQRT8M|DS~>&LdItnJmZXQ>_Na3Hqr1HVO_ z@PgwFq`)MQ{7WSHmkbLmBGe%~l(0|*MS+sHQ0_xG4<wuy63M4uI4?LH4iXs`iI9^y z@FbpMwje<`Y%m-y0vR`vfRj1$WX8NuC{Z}9I2<nK$0YS6o_UrKvykVvu-8HO(+IMT z0zrGBxU)#aN#w6tRMbN1N@2By@Y-@@o!OrP31^Y0lStNCR9wMMIzrtzggUwKGRRx) z{&qlv&G>p-VRbgL>MVpY8OTG^U`HpxHqe5NM0r~giWaiub%e2D#Ia%IF&oH3*I-94 z!B-H$HsFGd1bN<{E#ihJ<Ax{Xh9~6(KsH#}tiKT2U^b=xM0CW7{J;a@jvLZLH<;T_ zFc+TC4vWx^lh6)~(2lIY2CZN+ZRSYKJWIwrOUV45ya^Ox4G7XkAo!2IpcX^{ZSoA7 zsCkx@IW&3jZEX=B_^mu*rJzhXJnXJkD^6|b`7V7uj&10=0kCyw%?*Qf7`XvCH#~h` z)eTuE@b!RLr*7Y^za0l24t^_+1_8El7|txpL4bBVd}f4c5kE@gQGrT1gbja5d7#3j zWfL|_A)0f1g%f0DA@T_fXBb@}^$A#e%vHhmjM4*Am%#O`*#j)EAX+kka`7Mq<ru&! z;}VS}9BMF~p~XcQussCau!1|Uu7A?4VRl&BzF;R>-Ehy2V<)EFaI-tQZSQ0&D*oT- z?@{mhZ@NAAV{eWA9GqR*T>CQqsk6vnUQ)rlUj=d@Gi8z|O2iKp$ZyOLKAFM1w1Ro8 z1#)3CWl|^e#1E&)Z{~vdX)|X0Crl*ATEzYNj0Q8o4Cay;%)~I6N%u9NgtLk9<|5)v zWF%_{NW+Lo!^lWBkP)uI!d`-VAcBR!gtH0p>_1yXJbOkwdq_NcO8klNRLfMb7<zvZ z_3muU&55l01HrMhoa593k+ml>s}Drh{D_AmC!sSKp)(nwGaBJS8p4?vM2-wZju6Bn zc`z7)ATVTsK=6#dpg9B~b20*!C`67F1T1;*6mhU9f*>(ufkN<%xu7`=A#*AMXC4BU zSgt*~A(7E{!N>#53+e_~Tp#vLNW?YRzG?o@AfNOGXa+_`1Pd>N1?$IP@oRmagqmW8 zG?iEgFzZ|iQMz(oq@m)KoTj^+=8L%Ii?rs8pymh>?F2Eca3Wfv1hn*q=+KQM0=4T% zCZF*Ttj4X7YJYsQ{)ps<0VD^k#?+wUp0B8jC!qd9L7c`p_5+$d#?N_6AxilM$S3rI zcy|$ofzhfpY`|x@*U7o1g5V08Buhw~u;7o_7D^Bai?Nk~wmXlH#*#UB8!CN8i(K>= z??}XuqX2HY+Ka+Vs)p>I08GFL5LMw3rY)AyFC1Sew5%}V0_92`!Q2sAcn97|&K>?} zKk{}NCQ@=E`K?F1jK5p}w%tpbGc8RzqD_z^U?x$f2&CDT<j4on__BhkF{dz5ZO<At zG}HtT(j-FQMFZpvKw2)-z+O$G#2TfvE738}IdC+hJZdrmKz-)`8gKyGm~b%UP1qay zT!0$J@;9M8a;F1s)0NU4=d_z9dk3ZFsh{yTk=27RXB4rhSp%OMKWo$^9$;+Xp{nXD zafi(oI8P5#E*jpN;ud!Osd_DIjf8+59GcqixCoip{jMe@0b+5b04rPDN`{9*={reT zo?0AQCVBUTyfm2Z>ZB_1@%vOEhYG$_ufahQiWNHXbZlhw+<57638<{BIc++bthtG8 zX$b@1Oe_5n+=(w>t>hs^tZprJh+di{h~5cwW3vYJ{LoET<|npsHo7^i!*leh(md5g zl=7+97n_{<qa(YlN)&6w%_`ptst304lRwb1z8Y!nYv+Hn%u3pRg&eLHz~UlO28^j0 z*VxAC*LY}qf7IKWON?qa$Dq?V!$DtW)w(X+CgjIxG|0w;dOY5bN?lx;#hKGaJiwKY zOV&Ir%Q$-eZeU#bJtz}8UPq*$dvD(SXTfd>JCNj~tSH`5Ln*Eke*Haig}j&^_sP{< zJ=0-juT3pM>T~&$@&^jHqqsd1lo_S3N#$#|v_@&@rP{lD`fMACYNY4Vuyneqn{0fw zh$)GkZ41A0TK(DPdG&#MefaOIW)8<oq+cV_CjVi!t-LtWblX6v^ze4JhK!kQ2~$;i z7v=b#aq3LQIg_xNPWUBs9JP|GT++&U=be|C$%fz8i^-=9epshb>lGuf;*D!p@@*7a z>R5Aef}PJN?AW+{8LVcGp8MJ!+Ynn_Y0cuQ8sn|9{&rfGPHHNXmGlqzd4+Hc*JkrR ztK{V_ntEE)-zlq4vLh-~--B_`_jh75s#acD?Ix??bfvY@%Jwips-e`1SctWcKB=Rm zy;JI<Ezbp!b?h6T$;6Kr1{%ecPoH(GxFnmn*m*saR-o74=gh;LdZ{LMJ~^|{*k)bp z^G=p)<ME^9Je`?X1)(d?Dr&m7=%vlo*X1mW9`SeioTt8qpsfsc8?#Yl<DND{l`+Q> z(;XJx&uW-cL6+cC6&azXvs1tN111AisOfZ`u#VkT|9WX%$S_8AHbalK=vC`0_vK9m z$^ussl&f*wrLMbe%jAgpnnzynk%GZIn}SW?7Xg4pW7xx{SKq=jijzT&F$+dCcJZ|B zJ&5au>S^0+@_%gn03LyuvJ^H!*pcP2=ZT5iD@!}y#K9texM7z{Q^Q%Wtn7{l388Qg z3>13Ujkq+nd}^tf%j$X$)%Eptu9e4n?I%^<9uyOQ-kFf&9zDBo@qW38cm*ek?R3Ok zxE@<25kIO}3&Q0o+5Sz+oJW6PZ@Q#FaX6P>^i{eQSJ&uXS3Pvv`Fn4K^QSh4sOQ!? zs9W(JWpg3@yy$>NEj=ppxyhm%x_Q9_)BC%W*J8a}TvgZNJD^M8R3p!u`d6cq>Xq-j zV$*BqDr*al#3Oea-WyN7uiIXd%Td7wdcx8AWAql=*(H)TPOGPZ`Dv*8?uL$CY>&#y zHI*vDLWR?2uffFl66H{;ZLZ?6;AWEB#RS)(ky7qqDt^op2EI=5+!3N>*KCOt*CYd{ z7tx}QtAQjP7bm(kN21%XlRPT#d<MR`LoP+RW3ahEWFAKW;UM^~Uzl?Aj!hAJ)MHMN z`G~Z+#ug0XlzFUh+C`f%0+-eDIrgxQ<OcbPO)kPi<loLAVs;#`q78!+gcuEFtvptd z%gMGNI!KlIMdT(l<^$gv7b;DN?7VCbG8gJjp<=2>+V!u&jLzD)T%F;ub#FsmP?_=! z09~{^sy3SW!0}-Sbe%5379}T#?I@dDmyni8HBGy8w;7r<!!NqSI=5VHNObj_?WfD1 z$t%xy!pEfYbUe>ejm{-HK_lNr4FmeT8;hPcv-Mxr#DY~?Sz2mXIUc|wN=m*xD^_l1 zvn?HN=iOaBP8zL*Ph*+ywKAqE741Em+syp|r5AS-9%EA5?_j7`xvQ4Gi+&+)PwE5P zv~0@8kSdcJTlw?aZOx5Op@Q=Up3<>_!Szc5ac+OQ8c*M?nEUTz|89A8bUkT@>Sz~2 z6fsgp{{?}wlm;ltmEb1%+QlIhHTx2%^awQiOA!+QxZFFkl1|Rfyzk4PA*7o+rG3}) z+or#GpFt;W|KjZEwut?MZRlIoYi$oJjW>~Unj>Ro?;2XBTB^rZnsU}zd990Q`hG}C zEGnrHAy;+N8_Y$=Q8E)FYyPJGUUsEuQV)4yIW$F22aJ4%oHv`-eoZiS+bpn(r01sW zFQb!N`N%_&1&17`_6v$k3m;cm(YCRhDxyu#-8yNE1$l|mltt!E4(<I9>r2f;wWdc@ z{ZYdg^d*x`V71(t^xvpNC*8y6NxQ~84?m}%8?7Ittt~I8G`y4vx;4x4ssvt{HLu+G zzTobek#sfF5}%74(i9%-7h#d=;{I#W4tB|hD?JAT0c8tZipA#l%`TIpju1Gh+>;W^ zmbV;S<ot%l5#4&D+|6enutzQC6x%poZwq-Z-nopPZ*8xyeDyXi-SLW=?}EMKS4V6y z7b#!PZW~Mv@887k3rqy}CJ3AHDo5h8MNGc2pCGz`9<eMo5?N~Lsu;&uQ!?V=%`?mJ zkx>g#Zw@ezfrf<-M#TLdPLJT*Z+LZf*Q3tdJf>(or^9H!d?Qe81hPIy<}b8!`oNMB z6MdKT#W(6xk-mUX6!5(!?*(iUp7)E^*mPr%##*=;DS1U6v!{6GMY5vD)|01ycugkR zJdA@|JAkOo{WieA-pSEAtYVg4n%`&XHIGYz=_9B0YF;<WF6UF=3_f)T+ZCqZGI<?V zYxn7<lA2+wC7yI%&y44O%l--7DorX`gMYSyeBjpeyEc&Qv!3;y9>eonE{47TtTM}} z>sF>Fi_2}|TF~Y^>h@C`uc23Fbx*5*J$j~Fg)$j@=HGl-c~dcRHGZw)yP94~JwI}; z<<2AZZeCmU{RoU|@k)G4eHD!!fu^(Op7G9SosgO}7*1}B>olcLyMfhu@%~wrtTWjo zA!6{k&!ul{Jz3WE^GeU-b8JeSDbrbFghF06;3HyA7+X6YU}ZD09p{Lg9Awp771$?J zcPymM6iY!{Q$hlzoaaQw1>erOdx%)bAUTNe&{xkJXNz>vyIaohtY3O(3vCjtxnjJ_ zk~lMr=BQ4O?9B%uF}shW8!T8dRY6{do4?_4vet59d7o(6n?8&m58rN9W<t&i;<7T| z9iQ@i+V-nf(71&pl)gV+&UtZ82YnR!6qGt`pE|pJTD?a{qq$CHt>+83<C1URM<#RJ zpWYIL^*)DWDzioNH13T9yUmI<yE-QnTv+8Kcka24yl9t|&H5}7${de?Dk8R7MMTRU zcv~p7^;q?cV^gb?^LqqVhe+wxB)gq(Q@59<(OlNwEw)zzN75>L!u>8#x-yCH=%^XD z4hGwkE9v~sIM#BkRz4ccRsYyLJ!BW2Y~FDuwHr!adL8q~s%c>|=Cf(gz?#ODe@HvL zd~<c;DoE<zcn(mYO@{yu1phi}7;k-ikFhK}Lc^o+(KNHL^4kOAF)a@S$s#5phu|Ka z23P@J=kpT$-V^;4&X3F%bBrr#Z;sX0!0a7H(m*_ypFzJ~WR(Rt^|f<&o=EU8=x+CD zgzxSu993-Z=&^l2J>t2FoMZghwLq+w9K97WHd3xsjM^``XaOaLyQO8~c%!+LsLm65 z&5Y7H_Eg1d^HM*zKD(cP1WUVras$I<J55#O&URn_T`a)aEzS6?X;hTH9O+gvELfUs zUY_zsk8R+g$Zfn^ymZf%rrvr5m+hP7dpD^4^fkxEHo?RfL0t<m1yRU8WGA`u^cID4 z5ASWJ2mi`^_yn6?{|8V6+Qp{51TmiTwAuJnT!iV5v@Y(Vg7wUu{RgDn`Jc>^7W}YG zv`!@|y34hkgF{;fQrrHY`&2alr9Oz|WW1MhvD5}}fZr6)8#*Du6{3x${)BiEV48XI zE`RFy_*@3;H{`Q;jw<fRn8<qA@SU%`abQ_cU{G09NJULXKy5@uMon#7Q5&FIiYnfV z>@UAB+4kH{`jQ<?q~UkK#GaHEmyAFtSH&yJ<>juI!}FTXE8hgc+cK_ykfHT(bS#q9 zE^Bf%wEQK{{;a2%<Ty5c`{)MUF|G13_LJWHP+Qxqu$n@Zu&umczd04sl<U>e(X3UL zVRP89iyfjqucKw@T3UR5`lx=Qck<c>LI1jI)w!5I5?a-(rQr*!URRH>J-ab-y+7Fi z`WEud<WxOw@!e#YS6^~@Ky0*f1l+Hd!SW^%C9P>h`Gj$;>pC{mtlGjVW|AP9fA>9@ z$GUU@eI>HU>RTc~?S|ECs27nkQ5n6Ar7Eci%Q2Og&~<p~unF{9GQF3xdwU|W`|U3w zG$1yR$y`=>;2eaRNo4Zwd)-Wh{k$>j*vj=7Mqpk&&NuPL+qLMV*Kimyk88Wc=56bf zT<)|i^7eb5l5}tw4D=(;U6M~z@}*7vd-S^~_Cva+cf6hcneHeoceazy>02W{h3s^_ z;FnN!^PAA%Vy7Kw&O6d!Ny?UAt5>N*5ADx%{FFrLP(xk^Op8^ud7ljA9@Zo*^pz## zhSrs**+A>#q^MzroQRjP9WDg#^`7Zz)5Uo@-s0Q%kcV6up5Mz^QcW@b`D)Y0Py{8s zQTHL`LJh5sf}{J?N~A)Qq@9Xpucd~}<kM&s%|#lGkH`C6BAyzq(YV;3Kh?PW5It?b zG~Tjx`U*GgT%bRgukonF^?0ZnW_$DmeZ->G<8%HxN13FK5A&H{ooF)2{GBB)taplO zga<O?o!iINzKR~Td)IkTnO@<-a*VmMOY~g4YJoD2+)Qk2-RYg&vo=GqV#*pSWV-+A zi@%f$IKW5mrT#@fha_Z14vUrsPjttRb)C)P&HzfFX8ywBW@_~{Vo(dg<9$jYDiuoQ z*a`!nCF^T-CWWEmMyu{&dOdd~zF*==+jLz|C8&+QRv}0!w0rHVQmaTSbh!Pr7JRUh zUf=4!(l!d^r$8x-20b$Uwe}=zqqkA%9JF6IAbBLrQz)BL;W%Ey<0(Td_rB9AhJMOV zy!ZjxKK&F<MNam*$+AlBQt<oU#VniMYHuOup|3F0=$SQ{Zq>%L2ru}L=2+b4NjD3$ zjI3|-S^7NO>ul5KpeJ-x$Io@niYGN`?pa6ZA(}hpxU|uJP+#xl(HQm&hO>O8(?i>3 zdY&}(+qK55+tDk<iaRghVZh28rBoNPixoCF0^KvW-k0jjRm4?kHt??xr&!E#4~v|J z+eb?W-8AkznTrHx&jtGzgOk)0Y1lO=ItnwWTLc>U6%KKBS*kbcGW~uf4~K!@St)oi zO50{N)Ak(sMZ!f()`ZNjChE!w!|{0y>r=j1*r7>7XvW5u?|q&7y0US;oWWPH4$}~P zT9!`mJw995hIAJ=T7eD3iP5EOx9gx+HpXA+uk^S#Gts&(4sqvqWj$3j5z^0yn>*z! z*Yui0=S1g6dXQN<Y-Y~=51<9jIHUW^hFyA?RH`_UZQXkxf00I29xstQ$}F_gY%RY^ zk-kU9uU{b78`j{=tZA6mk4VBs{e!^K`W~}8_OGTr3Q%h=q6JUD7RM+ph?eax*pMJO zx2`=uwZC6})uB>}m7Qn#w6<_<sQ%exd%v6S4_y!wv~(b-nN#ZXyj_{ILqF`wA&Nwo zD&x>q@A@UIbAF~%p`P%5>4wF^^HAIRE@9&2+H?JNLgma_@~$F2E>N;JDQdQzh5Pj( z`)v7KP=Y&Sx_4UCaPNldQ_<D#rzDl3Y<1AgGOU;bgvGYSw^&P7lFsa~8WcfJ8nl*l z9=L?#-LJ8N`qJb)+wl!dpdY3U3uR(!?BwidVqo)6(az8k7K)LDfq{U5;GeP<0fQC+ zD+7ZL0Rhv$1lE5EjEw)3{!#w__4gm~{v*!6qI3K!D)WCu{jp+Z{<r?W?Eiafer#C& z!{$Fdv9SHC2J653#`^2ux_|p){dYfE+5cJk-@X1nm48~n&hmfk<;R-i-_aS_|9gjZ z2>vgLV*IZ}{UZzi`21`CFZut6?EEv%f93pNG5;0me;)sr{=ZuIAFce4-~Vp^zsvus z{r_hFAKw0F&Hr8dPtE@r+F$<~T5fK7Q44El6GwVcYXfH!VG|=eV-tF56I(N9bAq2$ zD!ja~Q2)Ay+_QD!`z!|-U_!5bp>R8d95h{F0_J{=6s(*70k^j%Wn%uVkS(<3`x~1x zy%+5Do9|ZZZ9`Y{4)TE<eBB_hFUcr-pdYPZcs7Ysd8boGOU;%mqr9nilaoAK6DzRN zYK9H*c#!%+mhR!D@By65SdRFjdphS~6KNlpyci_K63d=_B)=-++Ej1`biGB^Id7?p z!7sLsg$PH=&po)IZx<&<gq69llDY!yjIBbHu+8sH^fBm@F?(}Z%2lndY;S9eDXr%j z#suATRLNC7@BkwBrmYmiu=MT~6cyJ_>HqGA!SsJLSd2`JY#jeNa*PDO*qNCB$KWk^ zL+U4qtbH?GXH`A>@Uw3*H-UPRbZJq{%%MT0G~(10GRthSCNM`xczV?PL#gW<s4ax( zfZFv^``7w|k9p?TE?0ICP*v@nweN(T_j%5EPfxs;$`sT*p8Gw2`!G$|9p!i&WgKUE zkXt|_0ECOk`^#%^SsgXCe4{|iuLI=QbQmkxGzXI7@9!`czpZy_3fWFs;pc%9bliB1 zCXR8q(AG840m}0R9o8M8C0PyV?vn#>!p>=1+TKIKW4m61rKd;lCuM3+(oXyEtb)fI z3gnJw$>61l!WXn|k&e)JuWqe6FSXq$0SpiUG%s3OoZh(Tt%D-`K_=+4M3qV1KNy;h zcO#oapNm~-oe}gF^<|h^+q<OT7~})&-6eLLxMI%2iet$Znj=p*3PDo}i$X^+tM9^t z1PQAU(bn$yVDaC>1`yr4cJ%E08ujnAr1a}MMANy~mDYocf5HLifhey@22f&4C8Ld_ z`V=h^VPV{SpPAfj@^yXNt^wG*7m};|0S3;Voeys2Ec4<$Ye4M%_B<KQP2fK><iYPd zBxpDwz=DwvRFb1kmEvA78bQ<6DRP$yK)R0zz@q6ykR8Gzn5;krq2Qv<cB%R`!V_OK zMcA#vQv?O@l%JT#qGaGY;=aO3(D4l_;ewG0vX&XQTkyTmex~<%y!5u6xX}LH$mu5x z0qD3Zi%o&pYOeHz`<Yi}AcF_xC5W8M_C5D<`yv0{K?uSeUVyO22XBB7d1((Z;0h8< zEcz=t5Mt0gTsS&_;yVrjdN$kvAqWG$AsiAREFI$Z3!eZI2_XqH)?auqAwIY~#Q6J} z0ZNo0HZ&pJh(C%QP4u+~7*Le>45PFcLzpL81P46uTQ44pbC6kFKpLE9&mAL-9Z>P} zSf6MBMqFqj*m;l!BQE{t0qFMLD?8#W1ZFr#d_+35#+MyIoB^*fF`7SM144ATNc{dc zRwN;M1IQf$xd88;F$F(Oh~T#xL&&Z&g<v+=P`HWw-Zy#j0LkDf17-t|BqFr|lp(70 zqaP#_##FFH_@aC$JM<W$*?{x6MtK0#pj1AR1Kb3E_P9OXo?oALdPFNgB_eu1&7fxb z<u?$T0PLP&D~JQ+gn%}b6XH3-G(XRTP$$X}u`U=iLRz2T;CR83A6BiuNcgw`qaiSj z05hX?aLJdSKjs+%t$Z9se@VEEea5$wd8kRaYAenxm>PjD<T#=l!58kujQ<J{nJ_pr z5ocfY2~gBGQ!A9PFdH+WXFlfacs*+Mms|m?b@-({sUdhZ{{=|Lx1Bvp6M-%;+@Muo zggfp)%Fdl1P>+8Vf?5E!1B*MtvOoH*r}<-EAa*|Nt*E(}_P9N+GeK>b?Dw!evUbc0 z=rVz=zZD`|zspygK61722k8fp15>r&M*odk{n|I-2i6k77R)lSZ3s4^oq;=b_2W0H zZIDZNPrzgNI)-gn7J?tN&R5b6*NVS8m$h&wFe~Aezup_4e@;E-t?WvmJNiJ!u3GqW zZ{6qhK$kt!o=-jMt#2!+1Nuf}E4J-@54hJ3TR1#}H^Lu6UXUIkZ;V?IZlD(8w;i~_ zu6kex{ELSk==WXOL9t!B!Qma-!R-N_@VJ4luYG&}U4d5kTZE0c7my1<ZzR|ExIU$N z@LLOafLjLc@D~{FgKubVXn0~ggBNgjkXw!$LSA^UPrp!fef+(sdi+}o?#LG;?$DQC zA6wsWo&7g)H|%>=_5imm?BOq*I6nv+cD=~qcKu1=et~5O+ks`Dc75yi7`M2gexYUv z3Q&Va_JiN#>~Mbk-srhP+<^21-NQFN?z7)y-T-2Va=$*PJA+>cJELC^JNNv6c|-Y# zas$;6`2v;^zQO9=^}^(KVF#yoWCnYfK5)K*U*O%xzp=7ITM(yvxx)2&^ANwGzXILS zVqf(_=y%!o_;z&$>o9y_$q{-2o<ID8?RI?zoo)d4dUi<m+-}sqsc(3^!(V{CgI|cf zqup~2*s||>V0>Rd5N`%S*-_C7`ippI48yO35j;O}7((EVU6`szgGz72QK9hgIGhE* z7{ylXNidfV1eAo6u|VU(vDyiO(v1+%zn!uEp;U$urP@Onos9^JhhxD4GyJrZoNd5r z(s#Z<7*&W85D&wG1#b9aD@kufXwtXdm;uEMX7*%Hgc;`#Ds3H<N8#pm2tSzhSK9-e zmoF;VW?s0wyH^r)#DL08=N5KcAhOt*ec2WNwIKiYN~wVz8yGhOmw?lZ5$ufc=*J0* zgg+p?)__sLVENB*jKFcRII$!`uqAnUqUVJ-`$rg?GoXlIc(|6#4_Tom`2tDtSTTX; ziecihn$g(q&j0KNPxfdKnT{q*w109FVPYH*#vqPR%!}`QkKFJ=gad{9+8|+K5gIbs z4+XSXVu5X1ULF}1vVE8d#y`AZ{5a>skqB+q@%0^}6Bq1*1r;KZ10TV5XLkDO=06(P zMoLTodnXkt9?Pi1eRD!U_jQ`g@)NVPze2M~|8{{e(F`~lj+-+)%8wH>jLBn$+2YL{ zreW?>h-4a&0^7aGoc#wc-0UvD!cZ3KKyWdeFwsbQ8qeK%?I$rLyrCJEsl~f+S&au} zlp2Dxmf(0f95@nGp+An4JG_acLrBNN#Cd`BS9^=@Ly1QTZW$+<CQ@Nl>Ni-0@7e%l zfaB<JV@aU@5!l$_SP+)EBTT#-qL<_5<R1x9=F1-COJRQnce(AIkK6$VC=A@e-_!dj z;(n{fcrm;7QCjk+56$G2I}aPV=1WGoKt+PXYKq^p9$Q^CJI-#-c6t8<FmvgWQ^0Th zuyEcBQKh1$q8pnYpJc@P-S~@%Oco<AH}!{PyAb(rEGCa6m!q(wqM@L-wzaggvaztc zx_P*0jUttMEWc@ruV~PYl+_L8+{5Cc#)F1kKb(@hSdd(AEvAo!w;(Vv@|$8Rp~*aG zvI&xj20Up5nq&bpwNm*UbhjGyV?UtdX&|SyUFE_ubT?BqPgpam#RVY{zB6Ywp)#o! zH7LFXLZvs;TD6V}Y|4n8ow|8Qw;;^qSa4T?!3xYks$J+-bJ|3@q<T=60*eJbcqT;h z7@L-!#$i@TT`|$i%K}x>5SyQXj!KDYS=IE|LjqJ|_bm9^X?Hn{C=jYOW?p4~ndvwL zYbBgD!jmcQeDf_oGc&7ku+{_G{BKTtyUH@FLE{(GGio2EI^LA*6c7K6mhvfdMF;=h z!uBAB^&ZRXYL%3fN9X31$aa@#ZphK3THcbwj><$EAfJmfP4X94x^if|MTP1*u~Ll; z7U*+liso+1BK}2n^<ifIQj%4F!8zW_(&GB^x<VdUHK=ZcPv@@Y^D!{zr4c%Onu~=? zY>tkL{O>x34#^Wu<+A11Qj5pO(lG_E{Q@h4<1Y=9{_1XGjSR0MBND0WnCL|8UBo`v z2D9j93=W%u1wbWassvxO&~P~hXbOp(t>F?hC4{JgaqVd1^fO4!h0rIflgM0Q+yd#C zC1{;(0I<NXiPLT#vNo|4tWVe(GT5}-_<>vg^|XZDEcOJ^$aWx|s6-i)X;6&}n{KQw zYR#L){84>hT-nMzWB#Ob=Y?@>xMTrh-WOHc@}yi)^M$LRUqYf?aaQ@n(;%WqX!8jw z0SURMu%0l-VymLEHx_fAUm_ype^oTdU&Z$b1`3&D*UKbVs^m*uC+nn`Tx@1aS)6UE z#g->}YgQIngy<(uEKh#n-qcwxK+nF_cCoPN)K-T2OM-t)ThF|Wu`X#rVlAeTYYd>P zDGXb+c~%TryuQ&;K!;(vd-$(l$Y?a%`%`bI<wPw$RujQXE&?kyYgM{REPg7wv?y;< zs&ExsrYfsQElO8p(y5pzvZz!_mQ)H?Dl3-6Q|VTUuX0y!4>$sicc_0wAHu8q#vL-! z#OZrLj0dT^8noe$!_m0ux8aV9(kvS>8fi?q^Aa`qidQ~~FZw9D)G2QgtGJ1)lqjc2 zEuvIVrBXF3Q<g*~QBhD2ys@Xc)#D7^5v8KnbH^Pz(8L+8#vK~aa5a2jNs*&Tx!8J( zdyCJe0vFd<r+SX(oYAsXwOA|KIaIc+ENW#gXbC^2nw-(5RkkctwJcN&TPQLInns%@ zn--I4B$Y=j4_X$oBxKsll#3QASfF6Z2GJAf;ph!4F36Izbem1c&r`f~*DT@_6hPBG zQa;W{(EkCmM3a$wLN$A7eY{}i;{Wi1d_9cO^o+*^5&U4Yof~uU;UO{A&Q5&iUYxl0 zM*5pbBu{*FsTSuWE8}I=;0ArZDd^Qwzh(T}j`v_Gos~H{)c0qd<*yTS{4pwQ6*u2a zU0CV5I(4$e_qKZZg))Jvs=Qo`%gnLltZFIU3ZCNpo@~s}cMcpq1Vr@{c~uWp4qQb5 z?8xG4I1dVsL*tw$gjG^_5hFL4%sW1x(U;MOBY$F!^vU8_tx288nr%ViJy#kunst3@ z>%%80=9i2u7+&kiP`MPbTjJ8J$K$@{@RS>R<_*myC8!wot?-3uBOcV@33cSZM%1e# zXXiU$2cM)Zd0hRt21WDn*VdARCbm6y6i-UN%L4;9fF58LwE<ZU7X+OWW`xHzHwf9p z`;2x3dGSme-WR0KJ_n6J6)lCGasv)8k%LJU#ZlZ5%ncisWKm6PRK*^6_gT@<lTP6| z>=9WT!Q65V+-m;XIUAm~<j4E5H;<7OV?~wfDhX?{eoipg&fJ6fp~>soAMvZ<ua$VU zioQYi#()~a)d#A-kxkrlv->_+(uQP&s^-0+xAP&?yi2tUI-&0s77ZUSu~6?+1EE9% z0V?9-G*x!7pyf@WwIS6Sy<v~6W>c;7!7qZj4A?G0gl=ebkY#(p?cr*WLo&`(ge6B5 zCmz!`jY-=8FB=Fc?1*}Z-$x0PuTk&d*wC6&f8#c%6?f*YPw|X(^?xRCjppp}9(NxE z!0)Er$8?7Eq-_uMO!d^3t6nH?RJhCC<|b13Oei)~x-TA9!ltuT3N27Cu$B9jbnAS+ z&sd8KcKuSQTYVXwgvlu%ZFcv#Hq>4J0daGOxmS3}J_}f-w-R)MtRP_;F`RfjQ0xS3 zLV!O#nLWXC#9tM`6Vch~^N!9Yz)$pxr&s44u4omeD-!E@)uwGp*6Q0Fv)T6@=J|P5 zE6*#D>#vVLXYO9N0PetxI&T2}fZ8n+1N|QTKG)0nYuF3%2jmyb8?82@2%}1ax&z1A zSKwaq9@7I!*+ELh7|<cfgldUUn_`=Q2e{}1<{_pEd!uAEl`M-!vuv|av!08#i*8Q7 zta6$Dl<IN0)uO9QmS@~s@|)6R5aA)=9|SjZvWvcHzBs*lFZ`mO@d2IMU%ldvKt;P$ zyigS&?a!_D%{+sDFU#gCtVZ1*7T)b+;RCRSpzD)+U@pc)d8K`@ToL08Sv>sn0O9+) z&RFkAwtMq-uT@Gb$)uhR{@i;l<eY&$mQkE8e@seNab_h`v&HLdFmKG-{s!nK-R?zg z{hgKtLEkG=pWCzxZB}(8fE3_$>0wK=n%^0<UA8i+MyZwvc_L7AN8v||!Vl!jiUm)J zaW46BA<hTm_~2Igs?z%I;Vp17UbtX~JhXmb`$2OEUXsTr&I`!koEO0hJm1Yf!FV)u zVyNiC*sj8ztv4jVMiJ+$*D2|c{AKuL{SEoJJjOJ_0rMIM!Xq8(HTIWUIWxX~<>erO z(+2|`Gl?OCUSjU(zD?3V+fp-?3fOTuI0?z>0I*hHPZZ3}e?vVLQhSDED7^_ph#3+; zEt5|}1tQS3(@k1cx~WAz<AB8)&&hv$TTQ*3T^uC&Q95Gx<CTeY)=W}8B0{F0XmO6f zHP@g^g4CL(f@C;dSlkdNwRoY)Sus5=E1zsdTv|UI|8>Pk(b7P`H<MRnvn5l;lsYX> z_T|g9`|yvl;6u+RAsLx9_iouq@O`^=H@BphE-E^9Us|Zx7lMjlBo#4{*ffodxO655 zEjJN0eac6^c;@QoC;a~+?JZ*~i=i#e3Ug9nW@ct)PKBA7IXBEng_)U|@rIKMR+yQY znYn9TtLJsU(Hm(r(vfwxWo=9TW7%HcUj7=@>EAbmh^il4dI=a~daNXOK2GTgIu*E{ z`b5mL3EH)+qA#~aXJ#cu0|O7_R!&aTp{V`+a}}FFP|Marq@)`JW*GB+5=}_=6mg7S z^hA$Qa8Z=EF84{8MQ((35cY#76=QE;y0d;YMwfJ5fvGSq%L>(+xRo^sdhE!lu~<0< zOjgu5uZ^xO44fG{KRvOx$jA3w_IXHn$A;aC9rT$*_2!jYiP9MPq+H|8xRO+ZDA=>P z2fn0R&A$_6;F)6DiQhhe7F76ay<$&cf8tHZ&K{Z{9-4!Enz=p=Yt*Yy_L5MNJkEm1 z3Ja%Uq@^RQQv@I?BFjHh#KH4sup>O%C%(8sXFOk`2i}qwbR%JIyBt*Hea>;ePjsCp z5696$Tt-GFRdu<&OqV+dkI*T}7<N4#pDw*qxd@0<s*8<zzn9o+t3R$=xaTP+wzUnI z!X`ck)ztx_&&_NkM+aE1N90;1o@wmg=7CkMO9jki<iFL9!+yKv?dPhY<>Xb&TZXK~ zBXgf?)aYwBxDLS`zE)<N9UF`<QW1Gp+ZZihbPWmSZt?M3e7r2Ht9}mzz&!s&`G!eB zcbCPgCp_EHxANrkd^j<+D{$ICHARvGr{`>^Q^o9oG+r*JI8$w7CI~~uA1&e?Hsu!v zi1HjHY?>jH!(_ddPZE!wlAE9rL$zz}RMgC#S-Mcq_g$X~eM=o_!2U!<;Q3u4Y$w2| zPC0m3QNFmZO!l1buG*2$(cATYdWCXFk`enlbd`8jHVWNXu|EGvZH~11@Hbh@)pBW} zxDJu<>$srn?5ykKOzR+`ORMSbhM3)h;?Q*1eGht~_W~eG*Jjg!lyt|bkVkR3=qjQ3 z$1p7HgOY812Cz>I)_A)x9!3)VLG9?Rl?vz|lq>503AdZD_7HuMz0vhizfc_1zn3^# zLW2%No5?0lT`eu6hl-nJnr|_QrM6-joG^!ufu1G@OZzvIiP^;Y6itnS5CglPkmUXb zC07R{wTGL<+qIOFmbP(+2#6&DPj}If{r!dp=XuH|ye&hz0LLud{fTu06PfNYQzj(r zYAtM(fcC<c7<H0?`U{K~UzCS90c~jL@RlrsDk)hk2dC`l^?_?kA+y84>ssttwwT)e zNqhbg3NH6Fn~9u^rqgVg{yJ?#4Op5Th5K!1rO#54JM)QMG3(kZdzRQqILbODVBTh6 zr1yP(g@5hVD+k-~{`5#XfSSp9`L{<yv9vUefTgyVF;Tbh+%HiTkVjNu(z&gM-Mnca z_fr3^2#>w!s|SBO2OJWuS96Q(rXTK4iK8|~ML|EiQ*?$R5YZllZbq|{bR28^8Gc-( zc2YefS`0oMKl+~BFnegUqCk;E92ovrOge#e-UJsZqV9HOm;|42A)L<m^i@|iUzP}_ z0~B9^=-?1E7oEq44nF$_QbnX+wwE6m_lmFt9=C{uYdqL7=Z5FOaLcs)W=BfaY|CS& z-9N486=UueU~-A!oRkw!z-NF|4p*^-#ZKghdnTkqx{YCsNJL%!su^;n8mwyQ_Jo~! z$d6Btns!+u!@AUaW^$&OmJ`o36S<h#p$d~oS7z(OY{J-|_xCbio=wJMNRl`Wx1X=a zr<cU?Q-ld+U)$zaESayx-%9$g-}HiS{)|mJhBVxB_ccxo;5`<USi+&sSzs-9tnHJ* z>aT$t>fp0f#JaCJ8|uQ*GStAudKvT=b#1WQN}WSM`JJ$?ymgpxt##Z+ERl=q^=uv} z)rm#A<0SZ!`h4%$JX$>fT3L%t%{fb`+PrS#h=@f%*#2G->(@amNw@^eKc$GX4g~e> z{XuJ{(1)6{4%j{_=;cg3&!l}jK4fZ$oilIHdah$`i)cmmD6j#5mBRX}zl4Z%7FXIh zddX!wLLoT3b}P)L&G9V0M1a2_7(4k1XJ>=r{XTH$<_^~`VN$>}Vh-TtpQ5N!+;#2D zwoh6<ay5lJ1a#KVEZIJKg@hJLx&k9oFT~ZAG_76Obm~1qD9XT~*2RHTnqqM^tHjzN z!wLn%cK6VW3f@sC$a4RzER5LOFIRHyZ7?pU0Dq2tI?KpJ+rr~=uZoCSicy*256+yn zvajP&bap3w{wWi0D_*p1N)OR8FB?drPVU^C0#sASY1fTjB6lhLxv+Iw9m1I1Meq76 zpSz3B+ZEk3V`|+%EQpqX=pAn-WDlgoO)-TtgSDSMwddfr)tHCs2+(PcqCgrWlFp?~ z=M$DVZ;+%gIdAD03ZP&BHcgr%LnH-ISUU08PN^fo&X~}}ouFsS2gRI)RJCnbT7+SG zGAooLP8n%)<C7eQH8UhHMgWX9YxHO7J$U%_8^l@Ib0}me3>PNtlg6!CNj+)3ejbj% z$Wt_(oHlT0u7!xB6pWr?9BG)ss;bt_=TKMw<i*XQ0EPmHp%!NBSn4drfTqeRbU{OQ zHUsuilT9KIUetl3p@~_11gEoy<~HVqm%J<xvo=#x#Y;Ar%x(2odaa}8W$H~jih>8n zY(N%rN28=k2BV@T(ZN_i)<D0HL+iS3qpRvO0ClZkRt#bk!<-vDX~?)JAsZX5fg@~n zEAl7}(;nzqBT|G4@|ajYtD3A;=QgX-O2Jkz5PjyMJ*iI7yH3$QdfF_T3MBEcyhuNh z5oyZF6vCJj_vSOt8rd%%V~<?$iJ3~3z-x^>LJz9eiZ{~EK1nt#u%$0GPwtfbF&om8 zI%qP!=G2)V#e}1cqeL+_aSm9^nVfiM$v9zJ-!SKu$OW4`=V0cE7U{Gs9iItjZkd5D z8e?inf8LmqK#g)p!`Be9-oS6ma%3c>CLI9KUU}IN)gSTNDdWlV(NTpwgln_64^?TO z64+V0)tgo51d+6GO3iL5@L=4KZSGUJ;#`#ruyle}jVjzcxyTgMDiqs^WM!<Z3S(y} z<(8`R>TMV&iU|WQN%$YrPcU$EghN|aHVWzJ@ozkMFI88uu{!K1fbtIjnU2;rIdjHG zMU$#c1}}2SaLX+8JF7$2d6VCvPs-NVG{$v~E2%G!c!-mQP2vw7cILu&_$^~<HB?-W zVe?z76H}smpjjo0>5d*m=Fi%O1uGlYob8k_F4mL{r2a4rVs;wwc5F}aW}~LUoe(*8 zCPwD{&^E0~;)+Z-sm4*G-JouN67ok%zqZL278WR@ZdH+2Jug%A5g<)>OySaVY7kWu zGn><f3Ki0lhQ!Mj&)wu%u-4Ysn{+@2R@)>I^xbJQx5#nQ(-1B}RuLYj)cM$WPTRw5 z){B|){r=q8H+Xi>RYl6EwY(%c1HfmY_!{VIPK1)%@CRmb*p`=Ed^9bI_7aX8v&ib2 zR1n?z{<`h#l7eHn^V~EOI%E-r)5o}~GcrmBbQmOHaq~*fOfEbJ+L16$Ur^s?PLN?a z45;0(3&~%VGIH~g-~-C2J(OC#55Tle8oHVmqbTuvlGbd^6XrC<JI_I5`al#M=LJb2 zco%{&ZJ;!NZiaUX_noIByAZb?1t3hUT!SN}Qv53b8Z-%DW;2RI&_VntrxD`5YclEn z`JVYF(uClN%$T0U4Yv@28gn;2oK!YpDli$Ny>vl7I*Y9-XR<IEV>sB^jfnu1O@z`I zA$A?hj(w`BNP)yVk*%;%J3}AP?$5JNyw`-<4ri+eB50as$N@Q-<mH^Mj{M*-R1aQ! zWgtSCRGi_&#>}huYS}5C`hsF9uCtb20+AkSH#P#6G2v`)eh7HwCJH;i=hPXG+6T>A z3|cC~`KLNPLan3I*=FxrS^hH&#xjqQ@|R+qQj3{somAGlp!@V~wUN@Bz0g^Cv*Kt{ z&KOsBlNDvAZ?c+xuSv31w0_bByTl?us*_8ACAheR{m`%Amu|EyZd1_T7dU6MW+ob( zx*92Jt)0EUh0b0Xl3D4^AcE2zZCGBW<Fd|=V`QF^+GWcc3d6iad4tR3>x<MQvW#xD z_gPuea}h)1eE4{afs2CzN;Bh~8JBXH%1Wo?S2cG8$rp?@LMDGEn%lXiHXARCc~)TM zC-y-nMmEJik?Skd9_Mq>xyn#Y#;NnDL1?5QN5kw}pJ0m<0kY<CX>=2`uAD8S3mB~< z8ce+&-dySF2>%dM$tP{Yg`p#;hl%9<p5PX$9BlTfi->N3xwQARi~kx&13zjwJ8u*& z5HA7a&Eln8ua1%|M&4GzF>9?jSc@;I#>Rx;a`V}|xS`;|*ADZ>n>Q)$Y~inVqIlz~ z)t;d%hIv(AMmBdJwych8i8}Y&yY<Etm*(o}PO?s7Z;)q}ske0EBWCAZZX@$}26l<o zQ*2m{@)FT|r`c5C=7A{(VytJ?#@$0UZz(~J<>0z^VSXLC9zPoafW>Pi7tW(r>B*<G z+77OeE$a#dC$Aqu;9SsH8|#<TPuW#Xc((DUo)u6M?=)@3di}aq!0RQ+CCRC+rBUN* zFxh=$Q(VtxX7H1rfj!B62m<vaT_ODiKe>2a)+F>z(v%2qlbBFeAGV3{SL%~cA8Ys4 z*`~K@uEY`{SFax39UuR3+QU`+mi(NzR`Rw7h`q9Z)kiH*-_>|>L`f&_o=X!k$~Iz0 z3D}in<%{l&;Z0^~wgh8|yF&k&SMixstn9<<eWce$33lz2)HP3cm*q~x+sQCjbFFZL zc*{Wkx=4L*m$*NH=6Ve+Wt(~_YG-skyMf}meC|81XaI5L)vXS!*V`uR6(<|l)*Ot$ zT;X5}mas4LkuA#2A<pZtlf%H}J?43TNs-8laDuxikf5l`nT5QDR*KC+$K0qnfel=j zyRPVNrZfjtznFF=SPkyJ)AMn$G<Pq;SUNUWB7InO57aEUwMcY8&uAPu-TY@Q>_@c; zn)QCNWW$~0BYMsViP4C^G&Uv4DF^B`UuovHliDk`MD^1h;%`K(?gafgsQqWJPH~PM z9M7cO9rn_MM7Oi9W{`qxLQbqbV2j85=s|D|T=3XMny3=&-L%0+13CC=Ss(gq!7!fO z5z@-g{5VeZ$&^UuJ;@l^Yiej}yU%lW6cC2Fo)ixRd4``{y};OV2ef_=u-Ch3AC{Mu zRTEn>;vRU5)^8#xPLn0u<G7YdxzkHK=;X~4)f*JgcZO<_8pieHK~<jk`-bGndpQUP zBA>?E896XJ#Ko*1&d>7nb+r1~6Q<^(Ds>#TYuZ9wKW=qq6KyMZ-Nlv&{A8HRR+e&q zzvXfOjT**yDh0w*rR|e!i2{`wpSRw_o3p^)zxsjF2AAIZO?A3S!L~x|3IB=-Ab=Nc zY~D*Nbcpk;WX-YVmv&$0_HddO<fXeeu4lWJB?(ZrFxw3h2&g|TIe&)49f@265sYV& zA~vmpdi~?=yFen5oHqWLr>}6^fV_2wKDZPA_%eR;7kkP=yQm|R0GTCX|Ad2iQlabj zs|^v?f#LrS4r*O!lhCP#&1h@&x@?CoJOb3tD)iN=#>QtenS{$^Adk9`rWmqSh_I@P z2``~Ji8VAWwe_WAFR-4~GFM3mQ;**>;qYC+V`iY2&e<+NFslqQZq2{GPy+2pk)r)K z+R9FWoF%$0x=k+f{nGn5U)*$Byq>X+x(^crr1sqHR=d%WE|l7pq|R5&5)a`r$y5tx z2y#+>4I=0xdfK^3hS5bxnQb>EB%fZ>#H#7K#tL1`ser2eej1(47z)X(NqbC}!g$=L z-@_FcTJo3r%ofc`vb_C!dnJekBCg)6z{3Z)s_cg0S=aP9+2k<HRc%Lf6}WeiuEGs2 z3hMs!v?QAe&PG=&WidqGiSbEVDr&0s1x;MCi@mjMGLxWYzXOz6yQ&s;UY1ZTL>GX< zZ>OMUMH#~YdhuSX<fTgV&4+V(Bt2IIX_!`6CD7jAVjxdp&Nk42n~c|;$8mMAaUuHd z^TFrZ(*iut<4MyJ`1Tz9Za}kz&R;&y&RbxdSPqps?YD!G&v4h_JRe7=vHq>wz&S0i zmm^6MM6KRd2jAC<P%R|YU;luGYuz5*@ynO3dgBTH<Et&d?Z5x(EcUjU?v5lNl#NT& z@L}ElX~rbvZ@;QI)G)|Mnsm^?2ilb0Xvb0-TP;=Lzj^`(?W6c#0vGF#9S8|e*SKzx za9z(cb31zME1Di1Pjj2y(t7c76g&2RPh;}qo_W;1zph>rs*Y@=I$uUqoI1pwa&?m) zmoR>(vg{4Iyj!T-61Mvsr_-0!z8po_^mbhZN;JM^aT^hKB{Z5Y)7J@f^<3^UB8vOC zSx?>O2x__u;0bzucUa`@c))*jYUDB13Ybr5STPx=$gmSf-VU?vxAiq8RLiIKCc9<w z*IsbEp>wX~_)(7=Te#v8`-Kjd_eYW%(v|s|peIES4fp4~^13YJ9G;p3yQgh~(P;k^ zC@ba0sM0A*meKUb6o62B#4slUBxYMqwh1Z}MSNnF3{AIK`_s|F9RwJBl<c@6wVl)z z)P=VoI)e<lam?#puI@WXQ;MAJ&o)w>&Ue|75(VQr4%7@Za`ubO`!_Z4d|!{+exbvW ze%Y9JfJFM1>34WuJpom4{`uk1&P}=;R=+um-gbQE`2uiVdwX7%+V{Vjd3~=Ikp%5& zzODCc@_Jl9BA@gAwmF@d00jXb10`Q&guZ@<oONN_PEV~@(Lf5u1?#B!Y5A-e?-d8# z0biQy{qSCkY~S~lkjK&Xv3S~6U`?+h;kOQ8cxZiA6R!(D4be#{m|0ev?XnD`#!S%X zbCkZ_;p^q>dAm{HSJc@|<@}H~kGFmx`zTNOw$sKWvPcEfI~G{FJ~hoxMdwZX(3!Iq z@vYbGDaqc_Y{MsX;uw#p3{OuY?oI`nvW1qg74<+Qeu^)Kl0p#_P(VZW=SM-Llu~5A ztFY2f2;_&E1QIpmP)3kg=UA_4J@=aHT(_^WO#W3~R`0E6&S_TG40dMpdjFwsuV(eN zZnrOaL_Fl_qzOf<K?nRJIvZK+ss`kIUR$(4Q4#x8F`a!&fmje5m!KP!O4nb%b)MKC zGvtU<Xy9GQVE>9>I6-KbaW;<p>QpkPZHxO?ByHuSSw|%|f4IC?631g_2!qz-Iedx& zUfGD`kyYf^922MyzIWq>ph8Ak0L<8_yBH-ZSLA_YG+)a<;k&vA&uvPX)B=?pc&{L4 z<1jNKJwwhf&PwG}Aq^-@+XoyBf*UxE9Pa)&mwhZ?IWoW#B2sZ36@9lSDG~oi<KuUF zBK)>;Vs`mL2{1_s^e31YvtqPk@lIXh?DVq6+^iq%Cs*rS+(Y;`F<1r8mj*V~{W3gR zjI(O|azHIH_TZVFBQLDwn^zof2?O#&d2Lmd*(*>Z%jTa%4e^J|eI(&8hq?Gm1ZW$r zbct@i<)H}ZsVL9)r0II=T6fj53Po3Q98D$t_W0}e!J=tWAII6pGp#>y?D%*mT9Cbv zX?<VMr-({1J<9?^FQL%rN5!F~slIYtJ2fsddB-7RePOT?;Z6ob6zGR1Zz)e!7f|0g zYZG7W=BSpxyH$OmUoU6=dTkWZ2B8Q~n}S&<`P3|5#pD^6p`PLSZqd3Z%4X>0jxva~ zL0t3Y-7TDV?+vn;yzDg9Xa8_m9>(<=0nrL%(LL3N^1S_e0cAd$(a=3yD(KxF^tS&y zf(Ay#1cwZg2Sn}zw+7csNQ*P~D{VXDVy*6aj|q$bzj-4Co@zlX@^uIKwsO#m<0Hk# zQuTc|BD?<_M!K>0&-g6Uab*HA+<szm@~z{1cz6gde|c~Bcx!uuNV;(ZN9;5F@nic> zFxqJ`k!{%vQuB#Jne$zTMBS}PR0m(-YK1UIA6u-W+ThbX<eRF(;;=lP81uxBv<TVy zBxnE9Gc-O8w14j3^)Fu%WDX)v<i~gB&p)9G1O#4*DH@AMlS`ozr?9aZW*)AJP>`@_ zCJJIQQC%aQsZqdZNncsDG1Vj)m={g6*&7%|LX9rTz<$Y>Y`gKK7EHqxA)Aj=$dN_5 z#LyOVH?C%=kTkyT{8l2oKdMUt-aPOz%~HihcsRNazjWA-E_cPd_;r-%=1?~mf)X{^ z0BUb=>@ci7=jE#&b*5a|+NTpr&F@o2Y`NkCcLEpR5}_Z4FKgj^J-vOa4|%NxXAYo2 z4^`9F$B6^0)56@_5|D^)f1pT?$+9r9fC-gKTr`|LWx79(qOd?)bQYoZzG9u<e+&AR z_eR{()8td0;?^>hIFC-LC&Bc>n(8;UCXG!M`d3S3VCBsCx#}9;25U8nK^%Ex4Sb}f z<&4B?p&;UR+C%55SYOj&6~cRibymiAkBrxt2aCszx9rLS*Pxro#T?d%o0|hV<?$Fu zwBq_22P2udk9^pU^iVCYO$=D*?i7;>zasZO*Z@a#MSrX}gN$r8#ZYe`K#O9IL<v`_ z?t|j+dVk)g?$s_juV!&Hafhf^6*wL0!78Or+V~P$qV!j(WWnvC6cHD_29kncDFU;U z_wNT99Mm-L%r-qX^v8S74<X`?Yy#HlN)Gv4J+SdBPaK{28KYC!Iz8l_yY-v!Vq~7C zr@Ui{m3NVq@RF~f!8qSsyCHuX5Z?=-axZy)e+tThZVQHj?=UGb{_WdgVPV2f44@>@ zKf5865<2?QVyOq6SO)}8O>8ZPQbBx#_cmGBz!GO7Sc`_tbN@mr6V#S?u1fu^%u*gC z{4B^43FrfGK3&y1iP%OUCF0C(vp~cXO7}~Vz)WID6S#@gE+IP5oK1)FU7%xVA$X9~ zuacWrt~(XMx=C_qqAVo;y6<o3hVA89Tv^e;NDC_Znox~kned3S{&y#zz0Gv&N4*tZ zCh^^bswGD%$v6g4j91*#Pg2%-WqI?|)ZfkQv06{sGQ;d(ma#v6MV?9f?)wTsSmk_= ztBPa(aNye1>PYLUlA|LASH503#nD{GD_n_d*0ZxPB6@v;Upa-ZJ&b4p%Vd{6pelFJ zFFQ#oVL=xp4l5XmZ>*jOr>xo?f6RizaMI81$5KHpwRyv(eyuF$Y(9`NW3~1u6?tEE zx^=hbIc1eIkk}iQbZwT%9jKXLL9G|QcNmQ01wb*0BY_g9knka#$vbt7^oP>dEVp!r z=i*IZJU~Mux=9s3d`Fl7F-LtRtM%=e9BK2gMJF8|ZP;ov4*_rM-Rze@G~X!$!w&q2 z0O%nUgU&d><k4>zz%couY9{}HxHZwxw>O$_I=DnJd%U#r^2)HFN;i%U9)`>8V)qtX z7ml2Erc}*Ur@QK1VV$$JPB!@SS?uBi(qyjfx%cL@%iQ1dCw@yU_Gjv{?6QZsr9zrP z4}fv1>o*W}Gq{JLJDaN+JIAW1ro<oI3$5P-{@ZyglmB&=$l(LZTlAIrOzZe{CnJQ? zJQkWQ4THiIONkwxe$~>X!uF3_>x%xZ_L+xX_+37MnB(@iL5z=7Rc7lCdS?V`8?@=p z%Pu4X9P$0!F>T*>M;<{l#423{QRI9NgB|kt_1(UH9czG_Epf<ePYfTJ4{<v)wKk@$ zwAJQYbKK1Lm5=ev*JCHa3pkC{Jqs?gImHigYI!m2X^!EO3-%_0q_1UIk&k+jTL<A` z_b2>>gj8-hXIaNW4iXGAY4N`6-nqCOuSkQ1?;5f*k<z~@n)?{IVPPF`vl{OQ4p*Ib zC$0y7<_X7q)M29vH)$Zpz(r5j*KXD#ID)EGY-mL|X;b+@WsZ*RM}ZvdnwqresqZqP zF8J|Je>B6);w)W(BUwuq$3XaWu#0Q&A(DD(JZ8_bgw3-llREjPWZoWlNN7S;C?ONy zW6{|O#)(&FipP`nA}A+ciBk(+Jl?rYmPA{HQ>I@8XAO;w4eS%QDTB+pbB59T=13lL ztnmrwLjo17`)`jA_|GA$V33aOwDg(U7t4?H_KckyUfg2mzQc^POtIIE-e(UXH4?|` zP7cEsvH1szn%aDydP^O5SM8xjf!skkpLn|RyR)riA_?Tk+fpA$TZg>xM{k=jUlMv= zE_@vusvq2(uzC95Z*X_WQW~LsQgi_mkuTKZ^?txFn6FPNjAmd=9#1|jl?fX2U4o=L zcCTPw^}VzEzw3);7m}&xpVS~yx4)u&E9gbbf#VUCAT$AUoRl&I)Su(1-a6CbFCQ;L zy?LG@?O&eFx}|P7>sBU6%SLyt5qFQdVLU@&u#8x&h*D~P&bSu3m@ByD;qEZ)QHXIZ z`l>b^=@DFnH4Z<28|$>6yrXD1YzkjJf_tSlEyW`c&MUG<UJkx(%RQ*?STR9lsQYw) z<JTwXU!%e_jAH%OGtgIE)iEv9@-b#oie1cBw=sgjXsN@%a~KNBPcP&=8D<$QU4G;| za-Xk{f>u?{9J&!`icB7I_n{BZB<@S8T-cB#g2QRqC0Bu?aIdGdMt+oF`MgY0jWw(! zLi(IUWzU$mPF1RlIweu3%OsZ=VbILMOM=Zs?aCe`(yDb>yi;7==(_P-{#!6yo8hv0 zV~7R&ksdy&?##mSL+iFKa6j+Iw=Xtsa5nf#k9>KdDU&tqSk0m599t*rLo*uF?@ij{ z!BT(5*#SQ=z;Yv)$hHIcK)5GuaL+!DlaVx1)>E^d7G8z2PR9C=my3>2kRxy|!vhk; zZ&y}@`}N@wMh@<V8R%VuJc&<$;bWaON;C-=h_hr~Z);m={xwdPB_wsr^>r5L<4V&e zn)QV;2Yw@rGn3zooZZ+oU7Y<s5K0BZ!k$Td(f^Laf6+Ng&|h)pi=>#nC%VtaY8z&J zF)C*bNJE~ViXG99!k(L#wQa}@fo99SH9?yhKjlkfg6J`c$(q$HJk4FypNUCnQM5de zl{3De(WD?<d^lJtAL9t&*QLRlm8+!BQ=`&Xb*u!d)bTk-6nGj4oo3o#acSxr=r<>( zw83{KkY;zIYJH%mDe6%IX)NCoC?sy8R&3?`cfcduo386Y9HXlSoM?r-%+o(7a$P8X zcP}>`#^I?WMnXLz&)<0^f3D{9@W*ne<Ya^<ni59A-=*F-EOdBr4$&?)Y1nJl?-cRL zJh~DV#aUa<fNUx3Xo$WR-lvmZhs$_m(Q6$9^5_V*ZB$ARYHBO$^aW&D5`Xtl0yvLp zO=bd@#FV4*`I>wgn>u$EK^PE+vT3~RytLtADot5*%*8xN>DYyR2)Z(VgFLpG_~A~C z-~4!TovzPGRGk<`02vwoc5QB1SzPo#i7J2+sJcl<3I?OdabYX8ZZ>TTj!%?H>L`9? zAms4~q8!7TwxPZ}r}?I#k!#{DBV2SE6`|CL9v~`1Ol}I5FN*FqdX!-Xvz^o|G^^YQ zqUT7VyF)mTEB8k^@iD)wI;2_@S%UR<Om~&Ixg5wjKqcaOosntXabKJ3-9+$j?|_Zf zOKc)4foum_sx=G~m%4ym)OCjssh;g`xy@Zu?Yi%rZSTXqeO9@AR{9OJrMk8CS|z>o zO3m6!dzo(KE{1-Y@M*=d4<tJBpFaN`*TeR|xSsz20sn!4|IjqHe;^wd8>=4Ce*vc0 z|8wmB$#wmo)YpHdvHt(Y{~hP{pOn}C{QJ-Nzs~r-XZY{N{_p+&eWw4K`TuMD|IGX! zJ^y8)IsVr||G$!HY^*FCEdMub#l_0S%<_MdY8O7<J~0|k&)V;v3eIFCn8XR;*<8-M zWLLy{QVL|kgXGXCO3uiISZw9W#g`}KR9;H-!KdBwi_(_lRLl?hi<PpB=9aQ<m6e=1 z8Hs$??$<5~A+7U0*S!7{$Is_Y)z@3oJ=ZPE`remil;jkJOFwctETTtoHX18`(KpoO zQhnV1!OjQ{^8E+ie!4*?U~zC+9HiH~@iL<3cm+^dJ?t=>KzU_6`ToMY<Hq3@aFzq+ zezi*1M6_YlV8o7N<t{gwd(f>_62bc9o2t*^9k0ZIg`)(`>N|}Fd8S(Eq>x<AM09B= z<gnVQyD8@7ifv+`WNhWBs|tkKE`WYg7IX(#u{va&2?D*)XLs1eTm<R<ZP|BQ7W$lp zg1mR{$;5w-Jp;L>2fWJ~weB$hJu`1g59l%r_Gc5T<l@3*{%wKf_7q!D7U=ZZs5eCp z8p#H6cd3GClQiAOpGJOSl3T=gquH#TKKdr`qpx9O|F-RvsnsSkH!>w-#Jei#v8jcg z`!4r>NQEb$0Sk~R$%i0{K#go5jWZ^ay~|&>$be)0W=$j|4N0WV0*B!D3=;O%F!HCf zO6>8hsf;Wof~cH85NLT8Uc?jgn;P{SvA!q;OBMn1qev2Rts-q<1<7Ailr3#IVmXoJ zUn-bIxfrEY$UCF>x%R|RTFoVI?ZYL`WX74nD@^bU3`^HZtmJxvV)Ld}A<lirt6_k7 zY)4XmI{O{)w~(d!7{D#@Tl5r3StR0&6VG4a2ZEgaC7<wr^?+nfLG0xzsp5y{S=Pin zn=@!EA+1%F1dIz7QpPNKx#G?&*<=3j6;X%DoTOt3<r(Wu=Rfl||3*<Xp|;M>CyyVH zZ4Q1iVzaZPs1etPa7LQ<RTcWAhUpfN!h8`nI)+lD_}L79Ii5S5Us9zS>cy~jNU@q3 z2D{-JDrtlUoU_iYk*FE$@8m}R1UIT~no(xv|B)-CaAHH~6)AAU6<Yw3K8g1hJ#CWv ztjIph0?DfL+sj$bY==nO#wYmIe-HsL2Ebu>Kpx-4Ir+1FAyRwZOlnS|Y*wA<h=?0$ z&P6GskU0|2fbYA;t@Tsmp5ba*lDOOHqzN&RTLLp=(=va3<}LVy5u|E467xor!O13D zH;vp<B~|~or;NUJHagVoG0srd%~rq`Et*EY8IpVG23eZ0wP!h{R%;UuEr}<5F%@=^ zVi!DX_7BhQzTM{Bt%9LpEkuznbQt|TqlgE1(?_NnWMt>yaA;)W*`eI9G$M^ufL)Y9 z`1c)YsV51MKc`^aW9*-;d8S0R${{+4BVfiS^A(0BI+;l~fb`dmYp%kyC}(jrU*f&g zD0v0BJRevGZ?H1a@#f?U`N9gw<QkNg=YiI4YMEpygC~P^Vo6w0!L_seukx?pd?#); zs7~clZ>-lDM&8YsS)drV0W7BZ$%s8i(m-3#YcaN9pB!F^!=eJcc-+VW!(<rS0YNw6 zemZD3cQ|u$ei(EkDKI3m!J5{CGsYqZ@|H_mcs*2*jXcKLips+H!ohH3zu|WVTi*Up z9k|>&Hc#wwg;OVVE#hyXj*Pw8D7?UC3{mRoHaSiuyc6?e=%H}kBF*1QgH=ukDi+zg z9on6@Ggqxx*EoOenIEh{`whFugE5pDBgH;j46USd2VWe9`NHOjB0<fH9w|=&XJYR8 zOWo!4m!q=v(7feox9IA&#MTo+)8`EX-ijIFM+MnKT7{_B;5EmO;bu_^g-Fd_-SsxK z<+0mA_6~a-4_J1)S=?|{I>U#WRrsn%RSkIWb^I}6A3ARdUlMV1;}3Y<;yU$X;|ZN{ zUxAOGc!z|lZ(4C(JVV!1cg?!6vfeG5hn4cH#wy-Etm>vv%DJegU5Rk*sJ&x#b7q0^ zLzJ(?H`0FaACUfogg0oKt=FE|$Ib>EO`IchJjq{j@Q3cNyifa@h=XJLoBj^a^7S(> zN`Bc@9vE>FYZ44cA}9LIG<&l8m8L(2iSyXwyN(1_eT42jF;eeryr4hWW$gO(e;AR? zDRj;e?(x20Nqn*O2HqiSLg}cSM0`ULMEe%;?1l$5jQgI*OPvr~`te`y`d2#9m;|<Y z`+eYiH(1r?vOVkiquB2$C8ofWdAFO+qv?M)yN-|GJ7X;YwN4V~o1fcY-4zqZIOlcI zmmFhc975E`pRbwJ|M@UlGfdBcJ_;asKLFlX?Lx>wq5zt9ClKhfOi~A=C%*~Vc9^C1 zAYY&;st0iMO*CV8<7vHDrEp*2dIr<#do6C@KKT8|m<z#`U5vMjmEiLv#>zg>uO*}E zL}0UKmSJ8H9Oj98kOkJeUBjQK9Ik{rpm4CH420L81N2KI4F#_baD}{uy<d<8+|<_O zmE$u>4)F>e0zH_h;(CgZUh_2TfC*%m)E5-PH%x#_VZWqvBPfI4M@tO|yrjvLPQP12 z^i>`??`1#02^GCJN~shQX2qb01COpXtcYZSv!<rE$0ny^^Y)wSW$q?!vJrbz>IAtn zT_Wyyb?HWk-d{p_He!NLQLtKnK5=6KTnqNF^NknMvcV>=;MZxUI|H#;*MbD94?qd} z--SfcHmd;%3u18``oJhZo0q80OAWy8^quGq!X)5?@%EATSp#tM3vf{v>MZHK0-hK* zV%_2X`b#8^{WGP0l;=a_qyeKBgJTp`9YX)uohJ6@hxUBO7s|UyT1QQV_orT})NfQ> zvR`-`6nBo53-=hi!72>tK4NW_)2#8zQx3O$GwNr=H9^qFZ|53+NZmB=aLD-)C_g3E zP8(b%u`kI7(sUSt#JGkX89$>wlNs;g@6^`%kYIy)VuGFvf=e(rG1_4w%_3-CMp#OM z^!pULVK&uw1m+++PgM>#FMp%k2CJT~t~PY86>b3zSMfuxT?y%`9?~vX%-Tq4f4xpe z3IuUF|KxEeB;QeRiIs6GVhZ+QB4B;0;`|HcYjo@kq!66hcNxp&=h&HUM(NnAq`miH z0zI|UcktHbFkfaTC^wD!C*yfmBTD<_O_`%Y`qWI~?z6%EB)OK#va#Dig>)e?c;IUv z!m~Sm!Z3rPh|V9|XyQa5UzD~ZD}&_8X`d1puZs(ONK`TgSIB5ltu2Q|;eqMGbj5n6 zlfE`~y%W%kdW?7PXY11Io3tgj3;lihL!)4M=tONQKlba#bgjtYOIt-7^%J~(l5oCO zcAuUQ%mcTA=x>J*9bC?E^+NP39Yi-cU9l)J!fYz<06?~i_kmWvOtpsTF@2lo<KAxe zbi_qpCq7V+=t}7BDmAiuKJT*J7v6|P>Iu1~Ma8aNo6Eh0om)c->g$6+pz<v`v8E!^ z>8>;UTpzlfAA+zJeJl46(MRa#+j_9maDiJ>HB=4HZw$TT^_Z^t?m*+)r5qQo-=b}V zHkuLc#GzkYASilGA&^MFIc0ZR7Emo(bk9>X!zPKK?7?ZBXvR}qPRD%yb|7*lfSpbG z;WnGcMP3SZ)4XB2QX*cDt{k85q&=%Vu_|u08G`Wc>n7~duOuM1DgDjuukT3Y?dx@) zF<pQgmNUCFvvh$fw#D@8kHbO>1B}e8wzw2kZ~{(n+?+%EuG2W32``FnSGMmUfj9sl zxm2z(#R|=+Mb;EA?G-BP2AOP#G8rZ3B}x1H0YTqrne|^kL?OgR|Iu80CtSW-j|*6& z@&5}e56eLgz#i4(hXu??UM?GwQ%1w}$Z+HhA{1lvjK1^z@PPaXNfpmiWQyA_(UdHn z8M$fA?ej+8TH4QfvDr}W2t2^~PQmP~2_5;}exaGtb^0CRKZUvq-|6|N?oBU?B(D9_ z%9n5BBP;Mg(K0lQfBR>qzpUlddP<F)Wuw?+FRSi!?lt1FzrW=a$PD&qE^p(5CYdbl z;j03%C*2t(u^qyZwhunLceEpEc9zmT-$kI!X@^&T+;l%pwaSIdW|>e0&?YOPx(V5J zhO2z4^hj)&Pm$|srA2HwZJ29DS+Q-Gex!CdyulGdqXIBe<^B3$khNboc?f*ij6SGM za(@=Om=%ZzduY^J@0Vvyo+gBX!>cZ)6^tFbhWzVt$R@pm5Dzaa)JVaHqX}#?-@k3P z!gQ*KMH1EEkNYUa0((!D%Nun7ZJQQ|^mT!J@<5_<@_+CT|GuKIGHQB(zp!Glhi+6Y zw>-3$w6^l!5G*W+xT6g!W^Ycyem`NVPUh>jhtd#UuilWB{+8|ldmxJ$2p4gJ9Ys9{ zwdPI$5;(BNV}fMeGvkk3^2V?C<Ajy3zp8rdrE!PE&T-x(2N`1jb|P$TWc*aSbdHHt zB)tH*ubdMQA++)#a&!sOb>QO#Z+uzWU_HE}SRbi?@wvb$wBxP3{`~itLcnr(CS!x~ zqUL_*>jQVT72v(Aj|{oJ<x=;^H+lfoxd=k(2kw)D_?K6l9V-EWMaGVXoPW-2E~x(= zA0Aefqa2j?naQ+XQ76z1`k0=|Oie$v_;F^9XQeUAlRsxr?*`SaiVIxt<>&s#uT7H7 z?Zr*M!^h`qgNHNz+&8y^V*$U<?hne`mJ!t6uU28M=O@s^h#rt*J%Q#=(3l;-4L6M6 z5w_(v*BO{@B>JPnn@n!LYXeS)YUCYiJ%wxoq_pL_j<0|6x0(@oa}nYDKE_6HSpb^{ zEO#OAG!*&(Z>z~CVt*6Q?+3#Z1*YRW=n{U>Hg@~-G>_WCt!xJNsNRs@_{v|R@Xd_K zHZ;>iW?bmCO)Qq9;`Dm1-DW1J<(?f6D+c{nC!ji4byFm#!UrS|l5%S|G~%6$n7naz zX~#?o_5{}?YrozbdR98qJ2$HC75xx>lK2j7##Q8UweQdzH|;U+X?<`wkvi|zXdD&P zZdjHzT=oB&)tA5tqvOS(R*B@$+&ht^2_I3w29u$@n9QKec!~q!%<FyRGKU>$s23he z9QZ%yZFd%)S#T;KTKc;CB?}l|L3h)Bd<JNgqrZZDqC+au8WOz@oI@+GWP&C`p+MV$ zeIUOxL1T&31Qwv#enhP)=@_Q>JHmprLVclnbD*sRu7QxEYg28!K-m@z#x4+8mO$@A zdHg~tLLXLyGNcp7N!vM>x{y=qW9YkXxaS4kABB}uTuI@<-d5s_gal};1RDqNQ!l+> zVAR3YbFKzN^f~0O-uCq*|BzE&iR-{I7+8|J__Y}TI0M1^(IrK_fSNAT9f0^q&l%$d z2Bl2Gq-O;A$jo49@CboeNVa2m289Ruk=RIu&6WHH))aVbg|!+ufF7HVwj(9O-V+cj zjVF${V<`g`3-X2U#r=~@eV1#DO&|;s3G#?~qKvo?CfO`I*nq@|1OZ|z-x0+OH_s>! z2@GS-(GWR?Y07vxn(YA7BSM7=N>ipNn)Sw>T%l;Tk0o@Tdie$Ixu&5H8`ffuYajLH zd_T}%kt^#iz$Jii;OYR(p%B!N`-bglNNmTa1Efu8cam+CD^yPjx+^p?AgUazEnOzM zceaKNqAf%wP&Uwih#?!cI^U{q9c@d&Y*;$m6Xjcq6EtleekZ3d&XG0?rYp-F<Ql|J zD&+xc2R4+}io+3ol35_2B^ypxo)ctQk^3i5WZ(B<+q3T-T|nqQ2DKgrF5nzZKnyPM z{1juKOF=gxZl<OW0hV(PWgqJ^A{CUAdP8nJx~MtS9_&kNx5$<EhPh+F1Bp{T;@1pe z;4d1V$W&a(6RQr?7x+yGpVTXkt<acusF&>i8dVq{f)_-)B6K0j8gO;m>H_bW0WL}n zFn21Sz$Gk)`6yWTIc-DwO{i)xf*|>B!nP~|wgb+EuxOwm;WF6s+(4f%?D;A3zPu)X zgnt1-A6PT8NBoy*moVcz#SU#V_6yC8n^#Qh4+D)C$WQDS3V!P@2?uIEu{f~pQp$j^ zz`8l!2eKQzP{|YOeRQw5Tu1^nkLX+wf-;(YGfjtx>v@+xBs4!Mo!wbKv1zbhG#|8f ztcWw)<&Ykctzf_A5qCx&f^IQa)FSfcqWV~2r{@$*1bu+oJKUjpDmhBO{L41`7}0Xe z`1=?G-whWHK>ftM12NJ4<lm#aZ;H+Wx99wJ+#fLa$=~#M$$5T!1R{cdgKUU?7pDb& z7cK_~(saqy;dY)z_CtDstw=fGbpBOb*(iOd%DTGmohu#rw4e6}p7yRkd?RJ`e7R?R zb;^I&HJ*MaeLO^e%Vy<%{)>SezE{^ApYDR6+iMSc-)bB=3qYRH%gx@2&HXoVhVM|< zL<17u(e1xM)%E(=^&(pJ)a~`y5cQBr4bK=R8g>OWYs#-x+Q~7&^0*<&tMzRAhQCZJ zNG`@pm50l|f6GKC((3r#;qDrEtVGp*&1gcus+63=8d`Tq`^rDqoi2|F5;2v#IcBvI z7hLxDuS>dyH~-Y)6(1Q?K4#zo=>VK>6<IJA3iulJy{|(R8&ZH#le*085NnAxg&`0! zvsf&gFt?kG#7vKu1x0Ym1wFna39NnVw0ys*ITs)DD62rOyi-2Qo@K3cYD^PscDl)j z1Km#XFmX{gN7tCgP*#ZxeLXZgXX0D!f^?uDAYXuYHmB$F{TG*JbL@Z6@~rSxEuDtZ zcpkCN<B4JJHnl@S3e90c72pyf^>l`<s8xsPmQ!8x4;Id4cy!6}<;l7Gj48cEy2$6P zoe0M2wXHq-%lQU1%rx)mr{HJ=bcdG9+X(lRl*$c9;pxZgx!PwEPw|@bt67?uz$Vq+ z-->nSWqnchD%M6Yl?(>6iI=z+@e=!KNJLnYsvt5xnW!w%*-7VDr!t8pcNPj+qe{74 zBo58YLnOryDF=DEy9c!|$j*hzdgajzTo+^JX*W-6IvV8CnhMZU&tBffQd&S%buDeU zhj>aXjdN9K$I^Vk*Jd1kvzpFk%v9A`@=@_$*B-U+YMYs#xJLQZRCkT<ZLrYPdD<rr ze)u#8c93`}8XXe3cB6<)5SR!%7<>BVCZ!e0MrB82r`Y(FEXidkdlU_=_VdhWt9zOd zr&3hUNf$XpRKmcyEbLk$jW??v9cdM1SL`l*6h=QS{!!(AOTE0rO9d<+kqv4<fp>uG zY>sW?Tb(ZRDX%4$8CSMNo5k5D(v2f)HRb<Qkd1&K9c?mJkVcV7DsLo%8M--OwdO7} z6ffn~DaKTXBpY|t+O~>Btk<StL}u&r+8wu1iQJ&pp9M*ik|@b#tH8PAcPg7ax|kEM z40q>QLNk$5x{iRkg|i-VJ<t9D2O1vdOtfD3abW+`Uo}~G2fYQ6W;m+JST*+_6+X1f zesE$w?j9+Up>jQH#j1X!>fxMOiK$&M%DX_}u+KKa_IZzFxz5u>w>oO~Ef1)m74(i~ z_g)C$lQlOh&}m(5U+!wZOUk_4V754a;G@@VGa=DcX;&PJkPkhS)t4<Ji1F8#sVH0U z$|^{q38fFt1_>3_O}|D(f5fF-#4#AxrfJij<d?H(yj*+!TJADn?Mh9-fvg@0zu16D zNfB5+KnQ}Utj05Kfv=>irmJM9iL6QeVPlqqQ8c7FHA?qTZCTS`Bi`mRGv*^#7@bs5 z69lQQ^LnMUh}h#j5z^K1BmJ(^<=z@R>Y+dIbulMCO~WE^QmvwpTCGRx0N0F_ty>~p zP2D3WxLoA$j7GRSZGokNt%)+GqFB9c4pbE<H$=~I@4V$Lv!NTW1v*i!zFVy<7oFwd zQN>6;O25Ktv)L;XYztBVe#wf(F@smUNXn2#v$R(IRi}CL0DL)k8)Q6LPii&ve>SQ$ zshaB*-J0{%D0<f`TeT|FQC3E40G2)xovNC?AtvRl14PQsfko&}BHevN4J%sfH_5lM zmOkEj@q7@B^!4G)KcwDE6;cMBk+wI*wkxs8f13eo64BPA5-rF@YvD?I;4Ipk0S^dL z+y5FGU$6#in#!h5YIjqU7=ImiSQ0A%?H&$9_em-GY5dsb;l+pOjWqT081eaaH2YcS zz$$bFbuQ&ymXuDpA&aUPTl8OQx2o>C#z1qdiW!4K4sG1vcc)?w8QjW#JbKjU6Dd2g zEi*2Waphe{yL#9#VtzCujxh*gyvmAgXe%v`X(2A~YZkm}gv!zIi(C$<>!bwAnLN4a zJ}efdQg~?T(rQQtkUVATq`>jMus@kJquP*E_{pUu1;4@UxZ?MT<Xr-kg{ie+ogwot ze&mZbRdKH=jm73(#HZlXuQ%`k=;Cs^*m-9P$(7yf!Lq>^z_Vr)_|Aq*bZ<|H^<@L< z&@03vQqZDj_7F*jU|&1wYJxSD=85MLmP9V{@f?Xg5Zgp9%9$Zv%OHxf>DCeWQ24OB z;JdK95Nu0THDU)eiX&C+im@tAXRfB!FQ0O0E*3}7TjLx<=?A>t$~KGLey8)yo7ev) zb{~%CHL1)6O4SFP4bBPN7~N3Uqj}JUAj26A8V5C$6IRK1Rybq+fz%8}87lm=8BbTe zlyU@`*Zf`JDjwXWM|9g$<Up(_3#hjK`+;|3eIwwmFIh5ypW+M<)4^w6v+q+yzlV~r z#<vlJ`_}%Omh?IQCUQmk=Pz0n(WF}ZI!y(!i2a`ZUum~AO@u8-4lB3(seDaEymC@1 zSW^%qh!#Z6Zub1ed~e|@AzESDdYnJ&w(qva&U+VwW)W4WoRs#m8)+xqI%t8g;spa? zYpp}lSZJ1rvT#3n<jDlTly=oaIjLQ#;GII`A9z`3uUjJgkbXUQI~E#jiS;6*enQGW zoO8_9rAFZsbM(g9`q|j}?c4hK+WJLs^y+i;PI2@$3r!v09!PqlBdV^b7)gdA^YskJ zX<zJuMzV<Ra|0w7>=G=BtlerOx=1URqIUqxI)St&jHm|D7X<9|EL$lk`>;IX-Ni)^ zIOEd^oa=bETXo*Qo&X-t_g7~*JNU===XQ^=4~QI48DJAN6ZDe;=1r^P)mfn#6MtHU zt-|EDdV;z^O?OIU7u5KKzLcf)7Bs(9SLrONxOHq+NxUb7rT|N6ihzcp*8waW`u80< zb}gtzR;sK<7pUJn?`w@V-7&LMWIC-);tIn0?DyTT9xjocPNs)Pi;cudsbR9uEwSnQ zX?3vfVXv=^3i>TmRqBT->kt(M6~fekpO9uB@Ms;gfJc}XcK<(8B-!VUBM01hF@N2k zl95SC1aT9Sw(N7HP<&Zf&%_L{4~`dKRl|!XW?44NNJzh}xf_Z2i((5+^T!gzQ%T3& z4tc_R8g-lDbq{&Uo$+g_HTa2WSc`aQ##GD$XjpgFSmtZ#S>;nQju?vC$Hdra_kA-9 zRWqor=LM<fcR7<IzE)W#i?w)Wo*W2jiwb<YczhGOXwbA-W&eaup~H=d<e(2>$l{mW zJ3Z5rl-9Qu%l#HFY4O?6&fJv)nrl{uF}zvzxFk#vSWlLhif6QYE=J*%V6%(ji?Y^; zW52FLVY;n)$-6&$bW~j_Kd{E2j}CYI?SXXo%($pw@vgtHsrrwv-lYCa){1{&P7dsT zH>=XI^X4%S6!W*_A(AaF6Q#J7%Xj%q$!@3XUfC#St(UCs`$r!OEipZ@ytz@@XtnyC z#K{z_-kKnd52oPd6s(YQz8g`fxx#c`@13*z0p}MjBV!(Cg^zMO{9^B&=lvh&jDxuO zV`TIACFLB4g!<t*j=CRpsvO$1jMI6N*7D=WNw#*mAyqM)Lq|ns3=Xy6s(zoO>;n=E z5-x}L*d?ZaUhP|`)BO8G%%u?LHenO~9XSa@NiXuz_XjEVld}X9{D~RvadF{AvxRnb zIXiQ8XM$l}JlklCsa;h+F+PZkANPQ#*v|2Sb8(5ogPx{k@2BQG5+*SY@i^jfv*M9u zeyZkdmD^wJcPL)bdj2t4V%MYFy)d2T^V0)dfZZ!?^lb$gOY*cOC1`w!C_Q+>E(c8H z{#fnyhf<DJJO@|Ko<pxsx1w|cvrevB!Cwxu5Le|Y`}o7KCczB}+OyBvVgn#WVa#wX z!^*^yWjf43uxnyrTn6wz-=n=3wsq4;+$g(8IjB^L`8sB)J|(q(xizOD&cC~+W_)tT z(!THuSQq{dj)97yD_TjH&tMC3E(dK##+$S<4&o4AugtN0X})cq1+hDx1J#y_vTAwr zen5Qy@g2;(L2fs$ZcXX83V4$}ZHZr{kh*i@88W|`9KG1#edTTtTE;=#3t6r}Amb8~ z_NTWCkju-rbB*6BaGyQmJj2YttbZ}_Bw^e=^kEe2`*q{;!Iy_gaobaB1w5@gImV5{ z6&NNRW<BA|UQ2@LvFBSd#9F%l=^Oa!w(FsANZL=a$G)V)!N&2#0*N~wofd;?TB4bp zVzBl<07pQ$zcOh!jmM~Op*v_dy@I-j=xzFp{sAdz?88Bjg@vs=n#b^bjAAQa<Ob0e z>z5>EiW+fLvuTI)@%r-(I~v<G)-+yhG>j_4X&f-#QtR6X{iI_BZlF2XVsgb^KtC_j z8Tvb2LLXiniLnmhY|M8(+CRltpiXA7R6HjPc)x43*Y$S#`o<BBvl`boZZ~=x!=YOm zoUV4%8<Y%flE3{cSHIJJO#Q9Mc4*IW`ieuj19#^v9>;lH$Yng6=kQ!!%(p_S&+rc3 z&Bys8{t8z|FVO~avWXILySQKM5C_F^aYiF;4DK*<wZ+=~+79g<?Q=aqkJr2F!}UV_ z7JZQkE}2(b^IKO!uFPsEZg`~OKx5a&jK&#_D;oDV9&h}_@HO@sXW@!=#~AZz8pgN; z^S_hsrOnWfXEDZ)=^UNMntuyfXxxIsFyctHZs{2JaEyFBT&Ag@GQJV=uiz@K;XPc> z`}uW#laKI8zKF|n8_^ZiAG=_zn2I?(BC3Q_d;q#6{)KCKyw+3eg<C}-W^<QzH|Fz@ zc2Ya53%!lrLm#6r(_b}drYWX%rVXZprq@hgcm;SBxNXE$3xY>`OYGNEw3)O8w*yW4 zLL3oxULr2@QzC-*qqhj$w{k?f=nvm$H?({f1$%Gsit>sQ!4%+KDBBPZiv(@F9;3CS zdGfDB!~}7tD5NKO4_y{RplJ)VLt=}VtZmTm(^L2a?ic%Y5`O#xrBNEEVC~+cxmckD zZJRFtPLxb$?TTrZ@H6hx&zXdF1a@!$3+)Y_z!x}2w1u?#i+jn6_W-_tFbg~I189C7 z+|DHZw6;<V6(1pOCf(2bF~{9BQ|#tPu`Ws2k2i4+Z`69wQl1NG^rIWa1JqH>5gnn= zW9d7-o!emNUdGyV5>rXn{6q;I75P~8cQ{CN<)zTmS+s&HDV`g+p578`sSlTGd#|)> zh!cF}0#|E8sG2Y9uj{YF`MwNEMnH4TaJWB)PH#XjuTYd01FcCSlfXR=`>7CnJy2ZY zTg6P8&g-?m^AjSCMpCI(E(Y<s#!Gsd)(aBb1#6P-)z3^OyD38NjTJvfDe7;w$g500 zWx8F)wfD5|jeH}jak8mZ<4IZs=?sB&TY<eagg)f9Jc&o?hRD_pV;oh9ZTd+ggj;eH zy=!2HHNL=h?qpbauHnn0py89`|1(8jp)c3x>$l=;x(us%C*4Pn&|h$xJdSfK7IGX0 zX-<UgnT|7}JN2YQ%q~U#7YoWlUJi|eJuQTloJxP7xv;!{qUWd@Csa1%F$wji(v3(j z#|gEVmSX?kMJr(g*3pynu6R~##vS)=@v>MTrqhS?q4uig;Bj<Rzeit2V{iu^#jVkE zU#wCj>a8^1LvNia9M-=#b}97UIBy&`o^Cjd_MVh~q2@J^&U>X(9F623^e{HTzCnii zG?V;KAKo;m+RM9^Tka4{CS67}^6@eu@}j1Ruom7j?M0?`=8=m-Z6gA{w-0Zyj|lj| zK0KfSmwJ1HU2>1^y#k{GqoV?&rs;IWqSaq<nCLQD^m^>4^TsFQ6O#!iQ6!CY_#gK@ z>nqIOJ`}*M=Y^s9osQOi6z1FZ`G6GmNr`wK*C=oH-XpSbIyCYK3bh6NaKnW&X9CWg zq14n10T(zhs2~3I=nk`}d3jko#>8qdiM{*u>e;qUu%^(<ic}<toiQRLFepSsi*8nH z*V0(qfRrv0^!pknSi-_A;>l3oj$ON2eXf`X*y8O2x+K`;{m4f=rR~>`sK0$ItZrqh z6?Zy(*r$d3KkWFNXt7H?PQGHVqopNqU*O@uQ-K!)O@X_(EeWxAyBT}GRy_Vfck^uA z%l3$eahiX_Ij(tpe<7d&v-$o4WM>bsL!OvMlzSFeBj{_8m!(}hix*E*(a<o9Nk7sU z784m6!=JfAtmJNEsUBz=NQ31EMn|ul);aAr2X7AF7Q8KNTe$aN8WIzomFDOhpU|fu z%h5V9>%|`ZdkD_9b{cAK5fstBb-~bDqrRqNq6#{>f(RA77?L>j#Sp)cYA=zVn-}gF zVA{eNTO6IYBv`g|;(}}{7~&}Cn_7^R(zo}J-r2o_d<p_v6a=OOIl8Rt9pvbk802W1 zjEH~Y<RA{J6*-QC;av+76AJo77i4uR7@C;Ur*~HGoS{6lckA$i;5DIJLPh(6oZvOV zTY|OVl-3x6<Nr{0C2&#{SHG&KXQq3uzGiy5=RSLO?wvhmcX5a56%|F1)ff@i0W?vA zL1BaOHb{)3h=F)TMFkCb#u&L=7f_REyy9)t7!%PC@rY~CAi;#4{a*FVavAgcrFW;g zs-}CWuJ_*m{okwF!44nAOUtEIl1bW3eGb<3IoK)8<IY<4)7nUlAA#D=ou9(F@dN#E zd}>s8?%Xrpy{+*x0~L$>D7j*^mmIuN8h!hBfIw<^uNo1Fq_oaXX}s1YHB_s;eP5+q zZuiO_t7*Sl<MwDA99TrWGvxDy?umjb3TpJR2&M3%iX#t^-VNeyVV^I2SG3u=#kk6c zqwC1K^?z)U9;3F^cY7ttThE0Qn)7k^#eFr>j~SzUJ*d*W!q?mO)r`A#BTUumd%){_ z2%M{5Po*6ho-%t~l1-E?7BlaaCC^03Je6goRjvd=JSdhLcy1W5Lc!`4#OiBPM|bv; znFO`1_JZ;C5F_j{rm8~}yBfA<1w!H$y~dNrQW~XEwch(v4wtA}&zU*%9IGn29Lali z{KW!H;p5|WMX))Zs}HSSQy+TPVG~q)3{R;ejPvz9)WYUy(=5gMR7&;HWW=m!@yfi} z0;9FrV9+pL4q$~szToO%h!2|M-9^T`4F+rs_khv5DavXw1lLs-J3FXU13A31C{qjn z<7hu$P#>#57;~sF+Gp{RtJmNopM%i?ZqzrzXwmzW)%1Tb+C1*iFLwv{xE}b@w>x2; zq%M{&bDP5caN?MRDU+D({H}C%;t$?`h&%l|5=<@=Gocon+r_w}VlI>7Y-T!%^7%wE z;Z7zKiFhIzPXzq#K)~<!`2)U$B)TO@WEmzQ3T{yp^2tOzU`8!INfcPKi%B4n&C@73 zWHRZZU=;@#23ZqR{Sk2sa$(mHzE$TK-9J@~Sm9dws}_uga7DLIYnj(VwWx)sH!DLp z(G<5K?a^MJ%8&RIexx=+Y6?szIaRk+dk6x<ta^LMi(XvFx-R9PT<j_+S>|gM8Y;-R zw!Phu1gR5g)X-oJ3k~EJk_{!YSk2=alp2>*S5j+=iRxA)QNe;_;}yYI|NDKsD#)Ju z?(=v=Rk*MInJOrpT{11hVPaMF_hwjBfs>gTA9<ak8vOX<pej1OADzs2I6*bGF)T-u z=n6d*lxRRNsRQ9KLX7(!et^D*;RaZi3A}>_81H}}C<8pt-~p?Zd8gHZ9cqN>U!-JF z5$~HXcp1~S4e^GtjBeuz#*e_G3U1?3glGdYqT>%8ZQum;GxAvVrNrj(xyB=&OX^g( zeu~kz+A#6E3{03w>M(Ykt-nsaf(wX6?Yi<?^eWnlc0i!Ek;ea^euG}+tYIr<-HdNW zHgq-)HXINP3Kd5TQ;6c`^a3##>TmirHEzO%(YM;-s?9;>W|*?l615O`f=_p#C&0?g zluCc+0YU_}@!L^xD)}H!w3C+h+(RwA-~t%a3uEs?5dJxGq5yczwTzv9%dWc4eiVn0 z!5^lAO~PHt1Ksqu6W#sCb&=xpY26c!B`^5*w~tLXePTWv0O@Rf0?W!+Wli0vhdlxx z#SXCFXV1eIuvarzvp3;e*fsb*b|cz|pT^I!Z{Y3tV|Ewb&3f%Dwh!TFHkj-a(EvMy z*TSF%m@P#UHoYkf;Y|;3Hr&Z5c;x214AyFR@5Gdwq+;vnDS}^6ZPYL9ZkM2%6aP9X zsd5gF`ChL}<?H}JAHZ{eWG3-l5kI(2q-^owu`iHmZ0FiMlkQ`o-ZHimrN;h=WO#YT z{<$&WVqJ`j8Xnt?_^~h623>h_M`r8`J)SlPTwzyCJevsxL{z{jvojWVMJr;iViwJ2 zr>_DG;}084iHb{Yy>l2_0QhoOG^Ur|1v6YFe$Ozp9-*g!eUmQKPo@gIrl?+3Rz0d) zHCqDypg-gf`)Nx`YthnLMx!luht0t{7>CtiwwSb-kkC;?^65BhN$Mz17j+!xqB{1g zP-u>vjtUeMM)Jo<_hjJ6E<)YS19$I#OgiNx-6Mn~wdxKD-l{+fITRABv7xbl>pE0Y z?tlP=pNB%_pzyk?aZ;q*vJ+}hnA~ukDJ0sfc^ecmsRi9?lzhmix)&;(+Z!f#g{zc} z7bbd1f&W96lMH(X_V5PIq%@5<dfsqmUKxI^9nh1~;xWqOaYNfHx3`I%rjHh#e(RLW z3&F!VFVv3yaUpaVFP|_eqqg)+zIN55tkTkR<kD5tpI@$je#a$;bVjeMoVeg+%#(WT zy518Pp8rB6uEy(IpLq2A7b`I}fum0lYug5d{3Cidc)f?$ij03~Y`4w{7R0cA-QO?v z`)QUNrtU)yyh3MrhlArEV;PF{n4w3+W;2B!W15?JtfJpNOuY$_)|rnWGs`$s%DstN z1Z>tzy{OyJnSy}N1P0D;q2{9ix)Z<H&>+IJd-+kIPloFp88ILp@uL;7r>J25%biai z&?vQ{njz(JAlr*?=5Z(6MJ>k>f?K0=4J3=yKXbF3YGYJ-_rFi^0@Nv@<fU6rBuMRK z2*Z8=X5vk-r7Vs#=;tGTd)7?55jd=Y4K|0n5;FseR7V?r#Q!MR)L-?SKhbd{caiJL z)Riq)rtfaKJH5%VKEpaio80N>&d}+2CX{ujLM?HJ+fFpa`H46p|4ST|=@w>uCf|9a zIg#cqcpCt#9XkQk2G+Bz&EXruU#&O(?M)D)fYC!g^PW&i_Bp9}5Da>uHw4$)sk0$u z{@J)y^1F5tqlAJ$-$)hacN+vT&1po9X$0#GgcG77CnK6Cs_00H3p)0O-8vQ%P&BP; z(W1tD!+{3zV0K1Vv>EsS3MaZIQk@;3t`@7M={cMDWwBV1b(Fe-IF>!HWAw$~3E^K| ze9rx<g>~?Pcg~}y-u}Kea9;hb;S-`nNI$$}`)BjMH?3vv-9M@+R-2b^T|M*dB@<3v zaBlsbJBhCTZtQ&;CJKSz*Ujw)A_1t?-qzMBOh_D+n39~-{R3oK7`?LlM*8~Bo4VI@ z-rfDEH0*s|dfxql_s`N_yq`+{@{Sb+a^D7b3<M_(fdm6kNi&>1+aj2XFc1Zq;{l|G zA}v}@1<|jIM8w<>zIL5fX$L-Y?FO-8iC4-)*s0q*6;mM4WAaTX4uc2+)S^f1YEQe_ z;{0?NU)B%=z#?(hQ@3q9mfsF@Kb0qO7?H;4HfW9jP7=5@RGyHP251I4Iul9BO`DS) zaUDx$kB$?anvUJHs3T;^Wf2^3>aGoTqwYa0H|UGDms+;Bl|e3AGhFZ*EkjD<HqsE1 zNjmqUFNfxSRN%Zk?_TlXbx)nTu@>^F>XC!j-+IaP>vFtc7nJE2-n#M+r%?}dY&h-b zAD+_6i@d@ucx3+3%fCfz2`?F#xxBZ-&3gHk%C{f?$q6@sZ+e5+6EM^uilSF^C;0OS z6^fdJ;eZU&x_x6X_?XOj#34Le7hSH$JdtShOv(gI*+fOd5t#T#OeWeK4LL(lUyEGe ze867?1H=qu#6h3zF%40d>l`+_&I|^_hznsbh0ri{4vOLd-3~T{)fi2C9N?{91#u+y zieqpp1jK_R`Wo%!33DR6lmE=%Qbve8+AH*!fnWlO1Zx4q`SSJN@iSLy9mLU2+%Ams ziSbGkh}s1qj!mY~*YIl(9YHAJ5k^^mhLpGG>eKP8Q%$Koe;{*L|8g9S@GR=x(J1Ko zlSI#9=5pw-dd%);12HzOPEgGG^fBpK>2uOIr=L~-to%)3RHDQ(QDO-y{z#m0^O1xc z_Tg|aind_#HJX?#5aVq+8?4Z@4QWYf2>+kXdMh?xg|}ksFm(k=Q*$@Km1iasL-;R` z@M=Cu+s0LR-<$#6ggF`+tu@q_1Z2e#K<$wRDep1#*w9`@37FY{8T_}xLgBXrb*wVp zeVPj<oXyq-u`mu5Byu}QbK@~<lf5>szze5bRk`DjJJz3n&at|t@PhR7wbws!_hpw~ z9&th#HHAP3eO>+ZaQLqqp4r`*?25{wDqj2SJwJW$a9)wAJi#G=PZ4I<2PhIpt@wW3 zQHZ${9kEb06b)&^W4p-WknZZF4`C+JM>F51Pi8DhnBa9VzmeuSW}M?4iJ`IAbsIqs zxI4i(hv3eIG)*&Z+RbRR#$==k($Ug@be43Xbd_{PVw1EX@wWYK@o!Gaj?IiUV$oDC z5lKc*k9;S3Vf4b51;zQT>tdTSZ#dq!ZFh(#GeCNHL5xW5uqPx3y(+IbV<_QtB<-3F zw-%{F4!lU(n$4KK7MC+o0vlPgAzv|>SpN|It1gEtZgZ-_I+gb<6_nvKkxXlb&TOGx zKy4_26Uaf`{Yb3R3W1th+Jw9DqP>)^HkJ5}(HanU@OdL6MAq9HIWTWCk|Hpb%tfNK z#B%~CawdzzX?IeV9G%f|M2ZdJU+NyD*?`L>6D<sMX3cpWN4YS0$BvWEl#bHYl%W<x zG5B7C$q`%|G#rk>mKv@ni}$IDp()^Yh^{nsCmur{H_)ejs)OeqyXN#OUw-VKv$vEd zRa;m6@sbm|6<KhK>B{fwkE_}*=FMNZ>hx1j?xmy!=e)c6rmwEN=D}C*xN6SI(_@?} zdTs9d!yiUp*?8MSOE3TBx4OV8UmL5N-T<rgpvxX+O~i3q0J<`i#bTl!V;xTCnI7c! zc#sFkgu`q1IFO0Q)R}gh!0|Skci4x)5;1k}dM~TWpYBJWw@o#OPt^b(z#Xq)O~jZW zjx{1&<siR}JEM(>=!6O$2Xxb-(Ypzjm`wFwF|tckEc9H>FpHH}{`(o9pzt;kQ20ZL z89p>(h9oNC#rk35J+bG|XXrBr?W2R9Y<_z7bjoaZ(Td;YR+cC?;9Hqn?boMPW^c>i zhkudUKs|07b_{1<usxTRF2rl1RLPwOX0tXB4-Jj|Wo>J`Fg*4b2sU=F7nqio1nJAP z#D>Q{Mai*G)}~@nLW9I?i_XL=>9i$Sk<7)4#Tg&Mf71DMTIRKi={;YiDo>Lsc?gf_ z_V!4He=k>I)wYAej-4d?1|@-_?S`TfJvCIbHDB_F1rN=H#E6apZor{}6=H@~Gq};P z0Ep!GK#^yPIx0bcu`ie)j`i!21ghcMAR3%RwrFI>K3WIS06fS?>mW!VXT23-1hWDy zvjR0tYFIJ)+>WY8fy+Il&qMk=r0;;xV8&km4H(!p4uwW`tIKfP5DI{9OZ(ML(wy&a zUA1cK_s=>dGvSXn{rvR_Y3H3kJonC(=bgXO`^(EN`{jcR7d}W`(|*tF8{dBW###4t zboLx~+LD)ET5?+dgpcR0xb3XduD`x+ows`RIX}4fUcf~OaM25TkwopdU(Z_^I%CbE z!u^TigheAD8P7rCQlN0ULTw$67!+-CdoGpp5GKYAls*u@ivJ_CvtWK4;Sxbfa@P<M zx(xFF1hv6D<>4-idqe5T(rYDpCgV&X&E-hhTi6Ule^7I3(BY)HM7m-#6Fk#xMF2Eg zv?4pTVZbaWb+>LyR5)L!?>%cJw}rYFb?k#Ke&;9<tzDoRAE1UdY^#nmQ${`efGd?M z#NxEa>2kOzivV;+;@v!LF()%D=tzqlbR?z4JPCqS5-!jr*ksbs>4GB8N1=ZM%3F$i zv1>o@LbWUbtU<gN!=P>$X;Z3RL#_r}-p}Wu&W@C}PrO}a)8l>XW={Xb?8jIAU~|W$ z9_{*5estBzJw8QncvJ0v#BJ`*+vj}$uDi}SWI=nB`u&1)zx$iBZXNyU;s-xidtU!d z#cGUK1g~Af?H^{|dj9(L*IvC&*RvpJBUfTN4LKp^E9oq^R<<*1kwx5uWxxa)%Ny)= zRSoP*p7c)T8&L#Fq2L2jDAG42RQ467)B3v(IhMRem+j56P`G<6V?xF#6m*g<JmGrT z^%lR?^)bK0^%ZaR0!g`lT`PyVA?(vx7$5f!{x>o`gk{}n?{K}!$yk0{MV96$Q573W z`9>OS1ged^>jA?vMfXA_bwaXxT7MT5$DM+i`Uf6WP$HK7hWdwkYfKDz9OOTJK&PQT zx`&<$aqQ)K=wS<HST=#M8?iP-R%a4OfI5Q&W&o36Bin$`$Kv~u4Q~bydlSUN4<H6_ zUTb+24^a<*KEr3KBAT{H8NzX(S85R}hRfYHG6KIy-KmVIJQRzWW`>g~C`N@ml!Tke zfN|6Non~4p+XXeYXP1eMse)amCgXoOR6&*M{q=qcDh}Y|r{g8`9FxP4d)HcP0>-ji z_j?kYUG)X&X(EPSPArO5(Il#Y=E7SINHV{x7Zrgo6X}mf+KtfRfEHcaW5n8~8%Vid zoqB{YFC*3X8c8A=i9`y$Irbxnw*^!|lX2})#E(6(E)ePv$r21JhB}-&6jf-ggR|5; zE5=#rm_)AfLS>lQtWzRibjEqp_n1f!SIRv@*rnUb<+ci@Cr>;qIAk*GtXj&s-kCUH ztB^dkK<5rSOto1OIn^HdRnNpSL>ouwPT4lGvz(YXIf2R;!n>7g`*PMHT-5EdCy|#E z`TiWvZN?v>Bhk}jk%FWxddWi1uF;*fQ9_L&lHhk5d<k%e1bCp2+YDE31P**Jsu|#O ze05T?!>nYo>1<0jmDRFli{uvFf}3~KmZH|4tg?MANJ+}G5ZCINg`92n7CgxeeL6F- z1$(pVEaWb@W?@H%s|6owIjp6DLfLVbGR~pKx7Bqv^}gKRBu9Wg9>FcPx9wd+*_(<I z8mTDRBN!gZLRO%fh-4a2GvdX!|L*>)&X`=y23ikack@k03%sE8&R)@fMLuvW@4ag7 z9mg*@%k6eb%3(jb@$A!tq#GCPG=1~jiyuDqoTUjhQGNLG`i9@u|2dgg_=r|Hq$7OO zgyZJpevIz=@!@yQ8GV8RlICIYR{Y}=jyc0jz5`!Ch<=>D4rNdQZ`8A80cO-cG1rx! zEFR@MCU-=>U+kA>`DW$%^Sd)#7G*NI0;Z_EjUS>`>#}p1bET7d*NL5J!Rh3MpiL0t zY4Vm!)7mqdmd*s@nH*~}x-6D<gVF_ADz8dLmn@$s%CaN|RZ)lqNY{~J6uvCHJZyS7 zjKgVvI2`Z?V}746m&t_uKDXcR69pke<sq8QC*pA%paTwNxk9)=6$-4H&uKnM^Qn|? z7@vf4c%tskXnvhzt4P3{KkVP?-{Gf$!sj-&Qksz0#9=%U384Fettt@R=iypTz(|-T z{9PCmXaTNWS3G<!AW9>lHVC?~)6h;*9W^p*B*rC7sb(yogT5{{8v*WOK$pdrLY&L& z&9Z%78!Ya8a{rG1scGD81wu<+jkLe%pb!~1H8P41dc$Ojn@ksvzBOp9U)Fz5%09ec zw~@!Y2jALfbU#f(=~dT%6n+mcuD>uILYqDz;PUU^?hUCIQ{NfAo$NW74mvagbSQvQ zs12W?Z+R&5K=${xr|fUq%*!%MvbRT8Bv)pCm9$)(SeRUp{b7EYZJGO;#IhvwZT@tA zp=~}tUzjh>m#kAFQ=>;Ej?P}`GPiMuL?%QhB&(T2vWIh%d4?^jkwDa+^k@9VIG4#X z7xJ4EPZv!`M2<?H7r8RBr1i$gn#hI-lVbw1nnfrmQ;a!_agb?^xJ>aDS6d_%OlxvV zV?x1DsjW?BD4B^TIY-!0bW|PF9J3tr99G8=zFbe|lL(BD;)LbG6T-{FR$+%=5quq~ zmJl|UQ+E(I(>~?GhE5PLA8hWUs2S-G5_5pOjG&%x<e{30*8|fX24;m4IniyiOIkLW zap&_mX^ZD^PE6-f!mi~p+Q*&A>e}GoU=5C>5Z}*3Set;-6tolt^f98fD1`XsMzSi3 z(V(#e#ozwan#(WhUvuiHu{`w@PS2WFIqZh>>+A4+$6YXS#vRwxUp=8A?hO~+I;(iw z%oDCTjfk8o#{*||O}k=`eB@a@`UMloU&xHTOCLi&h`Q0c`UQD6E}|-$hD>JJBcJF! z-Ths8PGP=#fjnPX@3nOW%B@r6Ddhq0K<8QB?{!`gxTR=oFL4on3?mcclD%DRk$8x6 zB9my3ug{9fF8eifD4Fdt(NvaoY0T`XruioLHLesc6-(6;T~d1%?<a(*BZQxhj*{uG zj&CAp64d4zx3`CIRiH5F=wI8vb@Z<j$DIsOM*w0hU>YQl3XXlcL6*G%MQ%nXGe~d( zmOh@BZHCFICfZvq(1i?E*~ELo8w#e*&JGcJOm8*(vf!o6C!Tx5sVC~%p{W4o*Ux>R zU+{=>_V^d(49q-o=GARie7N{!I(!Hb$;V-z;y<BpMmC&3cGeLmUB9{hx0$m%vfwSA zQj7bKeBfu(AGidQKdvI*I!T`gwig7bbLi2Z+OD==C0;FE?Oy6x7G4%v61_IHB)u%- z056w{qytg%Ck5;+sSQzT65|aLytVt%$ma{9pqHUYyVIODGUh=>C~)DBEC)kgCL3Z| zD#TC;jRWGyML3G{6>^~vj)1f&q~<r_9?a~^aO^V%LT<qbjDp18|8403Y@s8Pv3Xpa zlXGx(j<#sYRI(+RPSO@hbc>WFn#|Y|1sw6j3pmMT3pgf*3(eFQS*U8J)4@OQZy#i# zhse#k4+#ycAW=ceu#Dhj0|K8s>!HH5bnpjPeCNmYUedDym(F^$rX~(eEIqFNQqw3- z>YjDh)H&xa`r_n6iB&B5&CHvRt<31p9R>EV66A3%$fE;&uFsrp#vJR&@_dku`a_+u zSkT{|=UT(9RBN`QBbWz(DieSbRZmtBf~uB7X+BM*v&m#I7mI6Z2TCS1gj5P^tV*#= zM>3z(P>#>_=S;aF@NKz7B95@e$28=R_^E#XD*wxdhco++7a}}H{AK)deg{wUYUi#; ziG=ooRc(;?EO1pj$qG>~Ns^5A5^~i@(P9Wo_%Ca(_a1~;<K2z-_r7g7qJ!3q+J*6K zcvKiqsR-lC8{<9rw#H&o-A~FvKq$^0GTjantBhWXjl?3UQ=Rqj0iMWdtG`R`c%gpu zEaU#qNI8qd6qf-eT>+TXi#5G_Y2?-jRphJuG~RTS<A}tG_L}3w#NGD06Pqo=4wjC4 z<C-HC*AnG~rHp!(qn;iVEO!=(DYSEKxUF1hYbzFloi-+%;`0&?c@+S@d^r;i@}{W2 zS1T8_@)@0-v=mLcOh7E==n=PDqB2RE4V_Ua<U<%E-^7&0F=2*c)XL&{2LYC`^^P~l ztzjvIM{L^%Ts_Sl7Dn3Y00XKuEU3{S5zKy=)@K9S|0yz)@8lW#1f}8CGWN-agdCIO z<H!ckHdrIjCJ@XjP)*44HdmR(k*=|{0Zp2q-1v?Mb7LKfF3x^@*5Vg_I_>JumOj7K zN^)b0D0s2um5a~abX*yu_m27T^oFP~L@c};udUzQS?*uH_Uc=gVDplBB{$~_Jr-8I z!Eet!{in6_Zh2)_qy=|@h!yOWoU#=p`T@|4kHM<K=uJIeqzmS_BjSv>Bc5WQ7@BBq zceJ`&J=H)pbgX%jLwD<*qXW}|(?TBdcW!`ij<T`58f4Y5(GHYRAP`1DwSjncu)+r7 zDI#g7JY~V-5rv=<)>Khb6^harPGebyP)%VPk9jq+^j&2y(xIy1=Bq}?@=fse-+=Gy zwi6W&2ms^M&kkC1-D<dUBOatD?vW2<Y0dp4<bR%{Z-IF`l=`k-Q}RmL*OzGTZ0{;h zjt=yl8J*jAe)N*QCHj)STl5uu5A|*8d%j)bP`Ul^_URoo7t5B9=;-S_vGip1clr~3 zj6dct&56w^-O%w+{=V`@v9I!9m2GW@B2*fm=j;LV>_Pz?Xpg{DM}lgm)d(0O`Q>@4 zHIMW8<)wVSwG_;hP(unXWX9(90|a3QSZoL)9VhL6jnl$ft7g)&F`|{hbS&D}p_l3E zp|KJYQ79U7N24(mEyd^vZq+hzEt5{GrC2Nik_1sIRCkv)v07yqUeh6P7@{s(AB`$( z+YmnKk;tKkme8SE+c3Tt#i)yPuijspU7BAqp^{$eFPXNMc9f`6U)LsxD<Y_h%ert_ zG(t22@puPOib+$3@d^8!pg{?HdsTj?Z&ZQippPt166^M<hLMjbRUg4#lA1Ogq_MlG zm#ml>#=p3bCHpH>q=$N|NDp*Dp|(Nc%|qdCsWw8>8H>%AHnw9a`^O2zZ`QfmK@mo6 z@M~}Hf2Y+2p+;lj{!tVg+qzCobPy)77S1q)8AO2%iuAR$y7&P~92dqTlkwycCc84c z<1I={;S*OF%XzEDy#XluY|^uWI_wm3{wL{*)!WXzs+yQR$JlB4ll6=7bM+-(H-XWA zQ|9q{{X3Z-o!hs=SW=zyQpWHTU>zrcbwtrzy<4!mIz=&PCyp9|2fvB6{F#DC)$Q|k zN>b2AX?DMlvNIfuSs(b^kR+<HH5cx;g?f7pd}t$~x6f04&3}@uWBWFX{pWeYf20b= z%KmKfu+KbW%)$rbrjCyd`P6WI=0WC;kpj>21UyeSmC`4?AKV_IjzCkopFl68*YI0` zSAx6HF1#yfOQKXT71FvV2c`$^4Lurq9lefU4}O9_3OY{;VTWOP(n><}!a(!V632;B z&=F3Oejdg8V^l1y#bQY<7%p}iX4=+XZfol-2a9&I(Pr9dhB4DYyWi9JFa>i;SfP}( zTTwjjpuf=4u=s3$mdd76*=$QHSQr|+Mh^rriUfke5T@Lil%Z~fAY5}p7g%dhw}+Bi zI2;NEf*L06DS?2$yNfb;G(S}+rpj8eXtz6PNpmn-s=GTF3I)5$p_GnZ!r|1c)V$O~ zsmD|1l%7g=q;#>9OD#*ioZ6b&0ewT%d%7nW#<MWB48KIaSDOw5Xo{kNCSRz_Qp7~N z>CiOkCFx!1?-DJkJ-?l&G`%?3tg)X`=qWaSYlG0NWwV0{zujl7c#~d2vql>>PEOU) z#wKO5KgZZt$d8b;!Qx9BSxNJy{F7Pb8}0HSqy6vJe&B7Ogg*e!KZxV_>+9>|CW`Sl zF2TpCJ7(9n@GA`B^&BZDcari&JQ4T2NQ|<hu`2(3$PcC~lI8b<ebi`<dYzp2?<ZCX zbe>)WTAai4bO_Ng8&Ct((-gL2i{FoBKW!HbC3B@kmrDSPO=cU))Ph^mxt5k}E||2@ z#wFHvlhsO_f;OMqXnV6@D{e66M2NIw(e_|88VUvzehP~?)YzMg{Yc7c$z(`NB)~CU zw9)U@!14o7)os{rvtcF}2w|Xbx*wsOp6uju({i(N^K#2_@8&EyUx6}(L_fJ)5@$*C zq-D|$iRL6Msrd=t-%I@lfjJNYPNJkNpvLwFjp%LCh{n!SgZVYR0EZbseC!qiQ1E_Z zjcbOHTKb<U$HDksYBk_H8vjNBZ^s8iIZe$Sy|IDS&l}q?46J^Kn!AFa6D}J{L3{U9 z4$2>WXnJZNL!r?3fUAEGxVjUmc#l5zEccX3iQDDv%2)hX;!b&|YI$1z6aOdi4f##w zWBy~&>f?Q)N0t@(Y4Km&F3EH|d!u7Db)We@cD3U<%X18KIknV$EpwRzf?&@L)Cx1x zW$9wt*<Qy4zFlmWCn!vY$~uaCQcTK4<q*ocnR}dHE3TE+dVVcGt_-WpgWRw9HR4^; zFFdQ|hm`wOX1a8oTvJx^H%iybw<))%%;D1Ep2OuS$}#H6+{yg$B9m4oaAm2>)1w^A zP2mq08N0>C_$_`W&84K22iUWUX-49lG_rajFc6Y9lPgJ5NfFeFRv|Mw-<`Co>wJ?g zYHq3}TS3UOkdd-5HdhZC2g&`AUDh?wi4C$XAXLSnv0dxn%nyz2UMDJ5nQSz4x&2jH zk%Lu*6f8LFb(~7x`h=X#Lt}63ZQDiC{(sWG1U`x?TmRmwUaPm-dZ}J(>F%UEODCP~ zkkBDr5QqzEkP!hTqJWN|PC#WCm#1-b6kJh6#Wio#85Kk%AOUok=b+-C13tlRoB{pg z@*Gk0kIRVZynCy<JDniR{C-dDy0vwZu6xe8-#O<yr(eXQwK#HkbTD~0exE)bR-JY_ z?-m_wI~PV9h!eD&karYE0*|yiZ!eBMoVRo^Tsw54ja|ljKh4*~attt!A9)*qp#c&> z)|??QNfXCaSi^-&zg)JnuoGr?F8gBHv@c$G_6RgT{=yeT=M#kw`ru6Hgf2LvukhiM zufxv5tM7kScpHD&C;|GBB{>^e5(U(OL#of<Hw4UK5a9xBBo@d9CIvRvP)W9GVCV~# zUhKcYPgGfwmKFY$5n?o+{b@g;u?$aZH7`K{;TY?R=A%S3>O;;#BIZH>*q^FH5Rn$@ zza0)#mBJ%9I)Z)fZlGy+R7KA|s#;xWV{_&4gDKWy{ript<`Lom$T6Jpk^*al!dNjj zs7P?#XfGTgj!&Qd>j~+}Q^uZI_$Rb?KRWrTUl;bm{e{a%YV>Q%PXBeR#m}AbvtPB( zeHdHt%}A$tq|+0@U)AKerc(l4P2EjPJU4o7@-GYA+PZ22b&}XQp13pe+sKpSpO~=M z`?2>MuQ`Ckcs=K9#+0j>HELp9&hK*>c>u>a(+vt)pTTiK#wNtu+A>V6!*+|I{+6mt zOzI#FXyPO-JUAvcJKPf{!v0P^rZ&cvxH`Tkac$y`#3PAk62^ou>7gw!Qo+MHa1fbV zy}Cq?8J2>EgN#NW)af`n0n4kGsA2X3)XE%2#RK*9a+tuuregB2L?kI@ri%=ks(6`? zMXu0oA?t<4M{l_0vHDZay<qkD=`%n6(_gR0Pg%dR_2Gv%bxvxy?~Pfr-h6tUp*@Ia z=dCaf5#D&mdFiQ55hfU_y7`>tJC`-!OP}KC;jDWfzIejV!*0KF;)%bx;SYFT?m+s` zrs>1&YSLx3XK`Rk4n~?4B@`qq#w?CSae}8A;b1{w(b7#IDHaA`&vP`*gwc;cyQ)YB zQ^9kCyMhK+Fdys+&JHdN-VuBzxG!i4{!a`;A{_TSTx9>{HSrx4EIKN5bkwpVmCGwi zJH+z$H2+t_|L+x^(AYRn<HtAB{Vn_ruSRf5VVO26xK#@J+<!oyy9UlwgJxj%HGorm zC)b=Cx{KZ&`ls)oHPjQ}i4bAeK!TH|o7^<byF+%jM^55XK@eXUCqSHzpBvvDH^k$K zns_`}6OwCyO-pR~ddv{lX7rd5-bfH;Gf9MO1e64P@uX0w$rlO<zL4bex)G`jqmPOt z#8-omt=GqUy*{re8JC5)#K-Mq+$Kws-EJfB_xaSons|e6if^6okk8=50Y96Uh^O4M z-P_!x8y)u#d7*a;ydHRn-Tk#%j%pqzYJA*%xLf1zbZawELYMeoDpkUmKarXmoqEzR z=5bGGR%cN+!VX0ehGt>(Y=i=ve(Ego_~OFM@m}8H;JvWb$2pvw_dnr{CU{++k4FbS z*rJcBq221X+uc@u`=f{atnwJk^b|C=y=ZPbh$eL<n}uVg7A4!E+Pgem_2XMkx6k%; z*Pq^Up8Xe|U(}!1@^Jm~mfy<*?0__o8R*!-?vQq5c67W0KF@raKiKgd_zHeS%RcmD z(~#|8*bar36<W$PrJ<C`bg(QNmNL8~Wzq`G(qWk9Axsl-h$O=mr?@y9m*QgFKOx=` z&&0FwTw^>P7YB%6sX-;4q%3|*jz|(;W?&}X(UEUy$ty~IeO1Q*tXA3lcq1K$&}g?C zLm|7z6N30O<1(g<d1IGxw$W(xPfEuXbarFa1tIjC@O7#yG&|H2B16K&tuU?y;N7}u z6HYzsLjr*54%og4rylUJCErBAbB8Z#=LB?6KG|I~f|_AGSh>MMgBPhVjYAML4nfd3 z1VPJeI8Qqr9<;IZCFa%4qI_wTE_P^7KY9<sDSP_S+q4nAlf_5@y;(a(@5kf%kw3zP z{?o)u`#DWRU#Xnan`c}I12aZ9-XNrbk%-EnQ<4u|?7$n^=i>FBkH$0_H=&VndVOUK z0(55B=mhDg6V2$v=!nJW6T~WbhrV`xjkh-z9xpt3qjr24hdZ0#&4r~AeEbnMNaw(b zaKbrw?_+#UB&H7zmNTk<C`{1zogNcG!cWSvi*ER6g`Ync$^3;#=F{*&9FF;<-y6Y| zGM}hfgu|Ybp;fV_1w}~DSLUZpXR+saW{1v_3>Imge7F3#Z1_(4ULj19RdGv#VkkkK zY!T}CMSScC)kvX`D24ozT+@io^wagQet>upIs5hXjp<NL8k9g$wg`#@4p&io@IB>} zeln`X(W`2ds;a0GN-DApX_*0}U`;DrW4tCBuStsWq+eoLEo+Y!93?&_4bua}wv9-^ z;|z`VRF@P7Y!`b6=Fc=$cu|;2i{a7X?t{gpMh~B9k=VAj(&}AdvA!8$zm9@amSY9U zegbP@4;oBfC;V*ky4dMw&FBX{##c-iF2X6PqgJ(lElVrPi<}U7uW&~iAAN#1KZ9do z)6}xuqzSq(u`D;w6ZK_Lse<oTMu7JMKo*d!2r#0yUO__kJnMPxb3F^GMYe?=(*XG? z@u`cn5a{KKkX~0cks@1gyFBt*a*6Ag^fF>8>9U)&iMF0;v|3HZkX@&4BoR)~r<ryU zBx5j!oeqLUFacUzs+e`DA@mZ08CTqZePKm#fi5r`^Z*0!2bj2hya-_z?19(9L(l*P zKbloNYKl-9HdzQGAH<4UYDs{(yOmVk(Y)Qs>)hpZu50M)X9;I1zX7qUMB?Hz<RX38 zUmQ1ioq2+EMcQ;r&@D;XVeT&@xuLrhrXveKzD+ze_y!Ki5qk&EByPY@_e$~w^LHA? zn7ri2304@x`v4N-3WMZI!zX|Noobx1Ill%VZA0klYqVBaY!q!_0gPH{s)3q9k(9um z|72w%A^%hH!jc>f7ni=K8JPV#XgA#T!#4aE89&o#_yEGT!XR<C_BXVv;^@DDwy{<! z3iBFMPXFycmVW!_-)$^=4W(Emk>6RFfq2F^9;fGi&=44IMK`$1@OnW({=8#@`D|!2 zq*8hn=14x<$|H|ze|dLA5C(TuFxQqN-{DNM7gU30I7dDGDf45Ir|QYLITpzoF6Wl` ze;MfIf8)Q4U+G_M?&BZxuT5<<Kks~&-{9XI-swEt=%%0mlaRchx!X@%Rey8+1NBci zSJ%JPxVQ16MoYCkK&(~$v6K{x$&y^nhB$AcSpv-oNH*E6wao)?zj_v2S`DZsiL_ZI zoNHZJOV%cGc6&AdAT5Q=_<{q7qNJiV%O$~-l$W}s+0rA@GtxF`pJb8zE#5mCBon^g zV|v82&9u*CFbQLlTZhdStT}b?<I{8kk^bmQg#fAUgE$YU@vh6hM=R4hx=K&CJ6PPe z0rSxJATx9bWYJ3)I^54%>Mg|tALw3GObYVo)~z6nZsCUhh_4_Qrd!IE*lWl^sVEG= zWqx{yx+r^OT)S3ctIgQ7``)Mazdd$oS8wl}XGJURrJQpgobt%}g;)z-%H43%rk|g- z<kCyF&b{LPRXtZe=c1QRx}cTvu?*$%Cm)(SxJL`b|CXV<a#K&aaQbZQuh*fupN^z9 z2&!T9SqF#b%0{Pnn&x=f5%l0=PDr^0!Q+;LVKWJBV%*+s8-Q~+#wDvLA<Q&aO_D)m z^UPLTNOGYkPni5k<qTjK-8?3Nx%eJ_ACHVd;+)$nrvp#Ifs#v}$5rtM5JWnNAku+i z_Vsurlatrki<6<AvA_x&Yz@&9s?V&RSN){?cytroY<oWZT-A2tPRky{`<4U7&n%3` z&<NAUakdWFWjiT+CY)yMHh0_R!3&HR+ZGd7QCEeph%5_liM$|hjCl~kIketJR}Tz* z_H5Xr*9vySMKd9T<_NfXfPGD6l%EeP`0Oxw-`fMwRQPV=`zu}=_VCGv-@EIs_wdW` z$>5tW7ruFMd*RT_k89<d?OFn2$0L9H+au_OYdF#DOh%fS1cx?Cl+A^MLf@*jXy+C8 z`>}Vc_DA+h|A>87WsbV5JQKxJW2aV46T4$)RV{EW5a!3033d+-30=nVGr2R}7sW29 z`qpnW`32hTPtXZA=D(SKfWF7K(*L;oadfW|XBn5k2Q+4o5cKNaKUm603A3%=U<&@$ zD=9W-&N8zv0+&br7$GA5T3(9dN$!h7oG4r#C*wlR_KJB%+NNdP(IRtLuiZrd4ixk3 z!{i{{(Z_W%X#K#Ink84?RO#w_Dmg!j46+%3Jo=ZgIfNSD$MnqITVH(ZsX05Rx@pFH z{-Zl~7LGvM&i^7EL98Wzi1@vM6M8?p_t8BkPT{>w&4h~}`N~dc$GUJ0dfKaTcRlpH zKX~q><b_EB<E^!Nnlz<BF4+?H;Zt-V<qZUUUO7y8<Z5d-h18(GT0+kose>p>d>Ghm zycxF&^+v2>FYY@Bp}#gJ_0o_YfVcM7BzsHj#zn>FGuWn+Lh{&iJb?Z`jP>By0p-Sq z$?H5tCFplrSPM2W!+Nn9B!@m<FY;BmIzEmtt73@?WgAsq;*_kZ>@cRiB~h*{%`gzU ziMi{8OW(NSiZ?EM{~qml;X5nudFP#bR=#8S<j5u1w)}p_75kU`YTuPR;Cs3x_r3pq zAC_c7<A<b>Bnv<UyVd!WXO){s6BCH3#9ZQK;$`m7!h7s{!ux^$=ldw~gU2BRlfewp z5<WR_N@P~xtVmDb;>b0DTLY_ttHPU%uEm}$!R_RB_SN94VUy)0#xII!1!h8$*KCj& zoBa%bt`ES405|9ONcGBM4(9rJ*u!t*cOg?`-~}nUrb0wdJ*W{&4<0Dh+-M}i5k_Xc zhc_XUupz)l!o<MP=VeompeK|(o>62pT{3}LCvq6-etg37(Ua%=WjyDkeRRV&*S%BN z2VFb<0;%c3-W4nM_~Ap3zS7?05*UU~Plth5HzCXM|F64c?V8&#qI?^9A7>%S%z&M0 zOtnuj_8PCZU)R`YUvJ+~^J2}O8p>;NS?xP$TDE5DK_f)&gW)*<<az`^2B50?A(Gr^ zwG3k22`K~sD+={>K9ki#$w(Gesu|Qm(Z5R*&6TPn<yPGb-Mifew~$@D8NODeFr9iB zQ*GPmk2T!ihC$+>Rzx?7W7$25Z0Sta1ki-mMnFv<5rH_wa@}>u<SwC|ViC!3HJr)q zF5$2g)a>YB58m#44sV}ZbNiB;n%q9#!rgn}FP6Y%nxS<Jo=`&T#AYmy*DiR_WAU)8 zm-Jpd=~^AP5#T=x*BGurl34|sU|4OO#4qHD_oX*upGyZ~N2J41(?y9(>gJ~AHeKns zI<ctf)<kd9Ly0?^Rww$JwuGI81zUqTnt`wyjTWm+fN)KtPo%vfnoDPRMWZBAH4<16 zH(PRq37TMaNQ5Fq(bhieIxFe2c3EdzpRw+;8m<0pz0|8LSNfE7iea0wOWCg+QVfca zNuD=CST$>bv)*VjFo4V-z$P_c;=Q(xG7=S1ycGn74g>$t;q^%i^3lIvAGUx2bX03; zz(c~`giqFaQfS$$Y&oGL7nm()Cwa4zP=;%<$24cL6(O=2wkbWLs_Qy^?Th*r&N@}2 zi+y$Sk}A(ld!IgX<mtUP?Y!-_KmYl*+jbH=?$<2F<})VLo>Q&ykWM)%IsV7Z5N_NE zL1FUUuf4wF?$=*Ox-bpt!X-!-THvK>-75bPkuX3voM&2WS`P0f`ru>4I@nK8kDGpH z-eBBle%btvd7t0xw=iDKZoBvhPw=yRJn!|%Od_QLp4wRrwY8}RIYCppy>~#zEUUvo zS!G(sueR8%B7SX2<6|Y8YRqQSjdBab6i-8<x*AP)3ow{z%3>9TeLjfRiAPo2SRjdw z+ZuK?5Df$HAN{Q-oLA<w>rQmrV9Dfb0Ym1P2LHI}#F3Xuyb(C`M_l0xF>i$N7kMK{ zA!&cWXg0+HMj-<I=Af>UxQ==9I<~xcn1&8-6zvgSM?W+50K8t|Jd9Dxs#`3?I94(f zPMxyi>^aM3or9c@Na0H@EOY(hS>sa|S277T%|^KB$n+B?-O)ApU0Hw0v#+cZmkfSh z?sU<vS3iRnkTiIV3?LDLy;e=iLRwITslr_0a^VKS%sJ>8Ji@UiyLE=qDBC?jVWk`4 zSn?%e0N(vv(B!aF0B(h|(fbMHhByrdqv-D9AuohZzjoM1qzAQGYRi9naFnYED!G_$ zCCeSfDJwnzV)@nA!jtjm9`tF>+{xeIJiU>5_uazjKYm?dsSuXIc4<T58nQ+EWFhc~ zT0`STBLq#J?V1@x=q`A<s~7abUZR&=>2jWCxx?~^Wp!{%&=|A?wjdP`B5gL>ECcZA z=L`nfrhj17X*2oH5JZ-9dRBySYGJm@5ClnvBX)-v3UwKvK?rYw8{r$E^x=y&7Uk5! z;DP+NgXIqma78Iv0P!a;f8t8guQA=6CH7r?UBQ9FE5r#iW{f+d@QwBWtQXyYKmFj3 zn&!{FXn9>kQ~X<hj<kFmn%5Ob%d^D5W{^N)>~Z81xLS(0Yopr5+VVf=e#a5pGcd^~ zWA%w-raIdi&Bw+i@|gwv0>yR#2NkZFBWn1r#JjO~GoQyk&m4&z$ymn5#%2~o7i3rS zs})l;t0+J><F>L54`QX?03t9F!N1f_=ObE~3PRqISxO`#D{@c)bxoSJXlUrnG&D42 z<ho3jv1vcZnWCId8znQCje|TWor>dIrEziO0MFIN@%a-HiCM8kA|8`#W6@YNDrPf$ zHk(m+j^#w4@Bk=)%SL&l0_9vV=*|U9@my_FuCA`Omayem23T^Cpm^*;TYD6!+#ich z%Wi>vAcoF37G`=ggqUf_oSPvt*cye#aA@sEtItAfua%&!qO}3-;C0Ak6`HrghX8Jo zFt3tIhubS6WTaOn<Dwf(l_;h*N(6In>rIAwJ?_j6?dcD<;biun{@@sW6w><Wt<%Q! z!z4P0S#(-=Go#j+;&@q+V@C}~--}GyQMZqv({V%l`~A@juVv^NT#dJXJsPz}Mp{&B z7(putLGzXvZYq@-`nHn4i|#;oO)1{>eSb{Ih~>%!9P%#HH->RdIT|UIqmf4i!=JBk z7GHwr*J!%pz=q?z!T@~aJdOTw2%pUr?uEZB++5*0{s3#S`Os<;zbMQs2P-c_8nqQ^ z6pu8@2fEeF9QS4J>)i-^*k@qOh*07Tj1XC$dnLojK7fEBfFeWFUGz4Zqy?eU8fs0A zj%@{xX#wvXY5%^)_OIkRR2X&ix4LnK9KvLsL{e>Yjd8U&TU}#aZLV=H)z#seWM$*_ zX8VS~`dUL3Y=*?N;2iUu;N|AagT`iaIylKZDLBn+Y_N<Or|IXuv2bi>``EGL+T}5B z7d{mhSvZB=&F*Ipu?E1>tjdyXr;}w}PT3ucXg~qTv`omIVOfrZ<ydorezJ*fBAPl= zO-&6cxw%utC(qy40XsVL9UW?3u1lH1@%p;zP|yU;$uVjUbefV9>6ffl(mbZQITmwM z4yWk#sF7@gr`JPxevF60VpSX;$9v;M{Ks~X67%gikOkVeweM;t+l3R7Px~rjCb&aq zTY1nKOl@U4bSeJMwt{1^(T;a?G%dBHH70C@H83$60Chl$zf=@ag;<^N36$Mnw8avJ zst7ci1j-wM)y8B5`t1IQUR8w)%e9sS-Q5Uo1cs^e)X*2efL`XI_t5Wp4}q6AOV|_Y zeG1I@FYvdU2J{jCCF{|sHz4cg+*(9U^J0eqio)n^f<_)!AeGTd`sqa%kDnv8TsHRX z<`c9El?P61s=r`-r?%VGSXVo)Lp%MU#<tRS$vM+5o7CAkDR;_QgB!6l6ZfiTOgew? zO>O_qj_IMqJpEwU89`EhF_QA>NXlE_P3oAvro9$oyJ@?Hc+|4qwBAB4GWVK^x#oG6 zc>(f)z~d(3sz^WFK#;-6f(QYifgr+2Uv*6Dj<^YTr{H$`1eqO;Y4s(^iQ89p7FQ)5 z)6yVD$B0qD){*Vhfo(e1VuD-XejviRDi@LrW`uEBmZ7Ya=-($m0WT=D25*-)^dWdF zU~D@KnTp6(7tX=MXtDUWn3De|T+0W7MvK{EvJj@A5eZzt64J44Qp2_-VOt;J(Odui zY=GCrYmrvs*WHZ}TyxR!JW4u7O3_j9cKVFlXP(>Da<(Q9A86#fUtjXGD;HIw+oG&o zJ9A<pe9K9LUk;<&nOAlEX7H;~0)jB$okRN!ZAe0Fzza`QTUd|5!+SmCtMFCZUgEFD zznS;iOc$BwGsOAC`G)zH`P2f(#mxEK1zw9=B3+V|v{}t|31EG333+XFdbLq?xU=g3 zq(K8X7eUMc;wII{N+uQEW>V2TJ*I7@U8en}LnfnX0Djo-Lnf%?x1h!C;9&P6>@t+P zB#tP9*$O-ef$~F#H_*J3_ih>b5Usc$_B+B%c-Wup)>3&myKVDeY9)_13=VH{u5jMQ zqm6|^8#CT8xW!5cAwDy2W6?#l@$ihdoyQxF$BE{Fq3tS*b|?ygH4ENoi6&U0yH&I% z!Li#?e5NwW)mAw8;`YK9klp?w<feVl*Y^Q_!Ds$hI0Tt(xV`70|9bfE`yP65|2`Z! zFI=N(FYY>1r{)_eS8Ek|W$R9d(}-@zJc#DRbdlq7cvbS!dfT5&f27_uziWN3>fOeV zO&?JffvhF3GT%zBBG-^6Pf$}?Ar%sYU`Y1ptCWr1F=9y?FQ<yD5p*O{uADoVLz3!D zNj54W!4(EGh~#3Xxa6`xi@&KBIK{9lq_Y(aAt7BEeAl2|DfE7@O$#9WRQ%xh%(u$$ zShc+Y`yF*?)@zV60r9Li4*l)fDrH3B6RzXdwG2mha1i~NDm5aOK6%aJtN;75!r%)Z z+^Xl{dMZNd550Ncsy%yF-MfdJv+C?wm+!iCV_|4h!KAaf5U$8+fN1`myLK<XbN4PB zjYM<z6q-8)q~IyI|IN4SU9AZ$d@Zilwcz)GwJ~xknC+hje&JsrT?Vf9|FZsiaGU?e z`c?4<YwxXpGQOtvclFF;3Va~3T3nqVb^pOx83xjAv(3GuXqI&|JQbVal5+t3Rdv1` zi-EkeP6|?193iTbzzW$Mg@RQOdnxFm_EU!_lJYkuC0wH47g-lE?27D<9Ey+;p`jE+ zu8a(6)Ocii(WK%Umwek#g@uk|Wk*h|UoX*3As`&%YjI<wYQAOw&1_=S%<575WAfMa zplEbdcxcT_S|nMECl?lKA-!8Ze7-OU$v^DBWzT*0?ZGeN)m3-~kGxcxQTW3q2sb`A zRG56{u3dNDxqG+X@6vD<xdd5zx5{7bgtgW#Y5{u%yNtcZ^bltb>S3J7j-vM#aBm^j zB4<ZctwpD-CWi0msy;1RT^)<cH8v-&eUY!x?0_8Loir7V<v@*z%F}2uM7|hy$pVzi ze8^0g{dIsBqb_BNq6hE}DJDgz9lYIFQJRa3RrFdFt%IfJSeLr^K&JILWx68{j=Kn= znPZAGw~^zW9yVA)P(`g9QDAti04zZ~_UNR^*9jcu<dlps=7DYSat*p)g1z{i8r__n zv*+$<=leOq%qjjEs|y)za#+SoJYU2&yN33W1*ByY;aBQXJ|7%Uu&02TVE)84;+ir4 z+436q>V&^@Z+YHo|LcT*a0fD<PWX{KocVqNYvW8FW4m=igmZh`?STom$SX5jUAF1m zSuOKh7UZsMxhA))Wm)cVemzg!p4%89PPfz~lz5{$t}WyDxtwOVy%l8A4T_<@+2yp8 z6d)NPH*TE7NFCGw%x)k>Oss+TsKI!%B!QfHTC3C*#xzzk?C)$mL&+uFl8RSJ4_Xh^ znLP=Z5GHk)NmHDXZ08hJPNQuV8&|^`+^VO{YQ=NhJxpnBtsu1)>q}X^Z&S;d39J~5 zaWQYZI|6cn)(9LUq76F%9eVP<2=Mya$BhlOAuQw1wY5Z=BY+>zXiyphD}7TWSZNri zH2WKJe1-}>KlBOkBJG`s)V7@;gS59__Ou0u<GLDgMyGnUpf%Qt+>RWNHZ6F?_0ev0 zgf<iL5<8Jci|Rz)=E?{0&p}TH-?Rw>3m$JOmRPj9|5V{VZfRFR)#XhURNdircUAFd zv9lC;weHR0yk5)Hn{GQT*V%C6GZW97{g+o>xz^%#Xk=Z%tE}pItnc)xg;$oIvS-Cw zvL=Kib$QtD5!$L+T5Gax)j=2MQ?5SoqTin{^G<*GX(Ybx`bb0m%893?Qex)9wu`UD zUgup1ZRKzk40u(I9tl84z#kwUqc&16Qg2cRDB~}kH#%23f9HJJ_Lj}$wcuWpYk>h? zs=6%(gV`cOnzy<c{6+1&QLrZl;G-%N&PAi<9E8ARmjoNX)Gz>_RQcLki&czEFM}W* z6oU(c+k!@f06yxk!;T*AFRrCo4wuT4aj}w~C_Sp0U(c`j1C-6?w?+UJut$KNU(wRl z-LRzL3_m(W70-^$w|LwL?rU{#g_gyOroB9dchEkE_}!uvYqg@I2k>N&bFgv`zH!o= zCeeX=4NIrqyqHMglUhd;{2b3l&v7O>2UH<TY^MwxJw&w!`YkT2W`XS~i`{Ou$SysR zY73lJOr%yx__z)?a_khNQAw1mpvT3FQVvv6USBQ}4!bPY9PKjk5@{1f0K6XTgIE(Z zBU*Nup&19*t49ae+uHPIUqzl;k=XR_E{7#^t5Q(K##S5=MrS$PV~sN~5x|;w{mJWU z$Q9M_1>i>N=RshI9s01CG1LekRTYn4o0~Dihb8{UjcayXrT$Eh1YLOA>#MbC_)>Et zu6nRz#$qC@O~!3g7d)@;>TzT|2RZy*acB+{I9qL84Og>kI8vlUn~00JouW%bo?8yK zuw%Ikh@Ug_`T5E-=%%MQR*gX1XK1bJb^r(MNI6KyX<C~hnPOOd5k;Ri0xQCxxYN*D z+-Yc*)@ew#5>O9&=6!nH^R#l<lOZ4!^>1F_6#ztz=Q)n&SO}<MfHOenC^AP`O-ha* zfD2R`N90mWo_U5LnJsVu;Gk7?s4Q$?d)Pj9H)~*DfX^VAi9tyZU1A{gvBt#Kdju8B zy7FzuC1H2}iv~bHajdfui!AIBLA|EYXNYyT7k+=H7WUG5jobn=F<7sEQ9&Edh)g3L zrKVzoC+PlPDHe7<n#l!dCOe3`)Rhq?!V+u?Go2v<*n5k}=fX?a9;rt;x8qOnPxN2d zzeuksuccqiyx8Hg03WzdCVz@pt&yokolLEftVNw<P2^zCl|xg&<=C8*6LbE?Tsjxc zDY@i?Tt_aO%j9xuiAY^lUtg7<Y0M13`VC^o{dpRPp#zvuElD1`-3UAoldA7`8GDQb zrc$Hp{mT7StahJtf7MJ^C{=V&j3HqnMfs_uDQEh43pAITO_!F~1LZDq72N7>OrpjF zYmG=P&<Fenee{76v${C?fo~MATH6?JsxMKc|2&E+y{1T&{<fc0@c1G2n$h_8^?|nb zqsZ2(LN{Z2c5RuSO`*5ZVa$mRV~)05epi`bts9k%jL+f9Gz|=Wx*m<is%|a1T;yJV zs9KTJ%Y>1?+l1Tko{V-F%HwTkkTSM+j1RMUh<$f=nLbO~;r3jrP!{1CuWy-bhqP zY|psRCd~_hb{enfX}pA^ku8oL$basqc^p&Qt~$_;(uOt?-W;=p3@`IguP`_snY-90 z@)!hMlS1^t>*Bl%;s38O#=NDlxv*7Jjl!2<zl)2*>k3arIduIatSR$g0EXt_(D6t3 zY81XyxWnvm6a(F@g;(?_io;_@koQE3b_IKXUqVLLD!a#mv}z^t0PjOum4?qFGX;FC zPp)xD-Ym>AT@KZIg!`v#vvQNUljRHHh0L$GU&%|krSfLx1#XM{vi!E}M5@WAStiZt z)-vpHq{?P8AcuRyFuY0*BY!<0E11o_c0+xGhC01PI=5Vt=Bzrs$Y@-plZ&hn;Idg{ zV!aJs=uK&*v$CH{V@~&4^^&Tplt${7lZwox)1o5tiXt;eeR2OrmIE-2F0c#)mavhv zVxt-e@HxL9X*7Y2YBZN@%+=H+ogh3VOe_rV4<EvqH#5Zufsr<f#)ZcH#zRJvQD{nT z(JZRo(zkmN@?I8|-IofpTI6uy){e$v@3nuC%K3LqZRwC6eYe>{w^`cs5*S$O(0@$v z8kJ#@h>HtX3Sqy)?a^4>i{NxPby2ZafadE5Kfhj+J+0sinvq>*9d4^;n7fE)brC|s zHSCLG8+{M}@(UzQUhqFE<;1}!XmL`+3q#)m$I$nH0tSq9%qgujTBbaj$V}u?E{>yJ zvd0MtmJl6I-r;aM?1U3~9E2S@T_W(J^;ERkDcEhuxu`tVgChZgr@IG#d5&*!h4X)E zkx6-=Ox|uC?qiNj9n?$;p{L^r90^3`N*j^ILgPE@k-aLJDBp2e-&!AG<YvQCUm>%U zh2;*;<XeNc5G`6JcMuSl4t}e{#>s=@v@he?F`0PrQoQpDfN*7DkQ{6H1T=#CHtuEj z%7hsi*-hcBM-IxFFs@4E(T*ZV>lv0NUB=q8)jWcS1B7oQ5G`k`F0`jgK=gyEJ@xiI z24fVVi9P;QeN>XfJ-|=<3BQp3VKe-XGJ{D=WNX_4^Z_8GQhs{S=RYW*p&O0m*1E`* z#@UKR@PFBR8n7yhtk3(-JHv&!pk5FV0bj3hLA%_GfM{l>W@ajCNG_?72q-85A>vPF zW@ct;Xl82GnwgnvW^TFWnw6RBn(Mk|uIsw4nd_SCw*6S^`YC>A&ieuvwZ3Y9+V6Q_ zo^$5RnVB;)XU;kA%;o;5@3CrO{cwr>cBD=%)CUUbn~gIwJGH3)W@GDHD21Mx=8Edo zu}w&5OsheiZtayG8yOj!(Q|T6bWCWlnbtE|``qJB>0Z0+`r9}Qc4F8{yQM%Y?%dyC zkrCmM%;?`)E6%$w+U0VFFy60o?b4gFP*;m<FS6@NS0D5U@8H&^y7#!xxY;_l7VAw+ zQC}r`utyjYac)Fy6pB*2i+M}+)y0_8H|w`WB3^Yc)R%jaYMb%+tjH`dgHXHbD{4u* z*A4HX^xPxP(yp!2n0h5+JVxbi(>Fu9_H*q$`-k}~y;|AT%EkPzbw50)6kPX(p4Z_m zv{LibX}11Lge|>WADtC--(E#;lP0z6OVeARqRrsYR;>nS+<J3*>!_&K8NDVCY1PUZ zQm1HdcdfWfKZ6B_x?Iuey$frXlA^;SNYS-RQPJTpXE5Wa^)WXMw0`Qevz->gpR|9} zC4I2|0-McF8WD!i$T8OO_r&0!wn66|PXzZ485y!u?sx7C4GO(0^sO+5O3mV$-_+v9 z7MEP_y50?cIHDq=qNTH?GxDh@7CpMvT``ZgzE!2z@Yu&<AB(#$?!NfH<I#LqTL-3F zFcq~eau>8qYxi-&lZly$Cq3Je-bqePez`+#hYjAgDQQ0N9rN!_UD)yCwE5|SGVrg{ zA3KZAtLR$)*QV5zno?70N=>OLHKnH1l$uggYD!J1DK(|0)RdZ1Q))_0sVOz3|7@cF zv2@k9gZd>a^*5HVqBV%5lA?78(^74k!7#16O&bAiI7DkpZCXIAw$Y}8U{`$`2c*Ip zn-0b{du=*YU#^{2-=9Q(os5|_t${RtX45(Z@fe$Ckiy&Av=PvTgOd-mX#rt;m`w*k zL46wsL>nL2bTGClw&_qUi&vv$&0si|Q@leoN4mLqpJ+k+kBAN;{@;jp5Pg~GU|WY4 zZRyaWEgf34r9+E00@_$Qv}j9*7H#R!qAeX-w53CfwsffIkbwD1HMgK<L^}icVTulF zLv(XBw;(^!;YhoJZX`M)pnXePqeVvs@LN&eK}5Hvu`HQ!0d3j@&<WK3E}}aSJ&x!U zqNga@5ioy8z*x=zzO!yEFM<hasF76Yf>aI^LlNd#P!44XRWJoAh;uWRDv?$=ANeKJ z!iP0Ip%jw|*~lA%{i|RCm5MMg!q(M@3$dk=FcHfo#5G|c=94flq4xO*RV2F*`QtIK zgmK6#htc0-UP@{iNwoUifu#~GshOBC1gU%~StFMr*H02ml3i@iuz+S<M)NA6);?O- z8041H46mF|*RNS+SJFZyN~oJ(CzRC@lL^Tvr3A;S#F`1T-YRGhL%*hdWBHc!!MLI< z)KOoon?&<ctL%?;RhUYt<(<^eB+X92d?M|Rr6FqvM$<@Dq!CrFpnl^?Z*`g*MSbhE zdJF1x0Perlw=$rnf>u+AqZE)tYd0p*SOti$J+4(&Z3}SL6Uh<^sckvpLaMJI%}=S{ zH*2gCTS9>?tBA0&PV=gjs}`k1C1bz#m@9i5RX^6X=2do;>~F872I++)X$<lz$(k&? zDyX;GYp=e+k{i$Kh5#L?l~`-3qVekdLCLq)T1d8`R$fj%cI}l~n$B;e)gs$3uJjJ2 z)hcW^k$S4xR?}*V>gA}GrP$&d_vl44Ej6`^nNwV3W|fzfS52uXGH))gtSGO{uPP}o z^O-$MOU>+(F~wCA%<Q5GMU~Y>g}$51CsvjeRhk2fCYdD@%zU$|GQY5Be17FPvwZZ| z$}&sJ%qpzAqpYN=sL&izm0wkaoy!XS<&|bR)>N7W<rB-QQ1k>}cF~xLrTLY0a=Hc# z*|oZ;a)OfA$=9)?nVeNpP+2~qd~{X&p#glmJvJXaBrB(H`K0{HLbHESRaI$G<(=gd z&GGqD%!w0<a6-6%(dA`TX8r`TqNs9wNtK%1s3|nnTkaUp6KgA}P*GW4II*BgEn`w~ zNkMTyU(8F&3Q8vyV%Ms2v#?}BMJWz|Yr|e8*q{Jg6_r)_OtWtA^0Lw?W^ze;vuOM% z)vG~PSzYUEPKlZqmXwV#D~l$et_qZD1BNFh+p=z;86=nBC{;z{)jm{~;HZV=lgdiV z^8*LPN#|QrMIF~~NBP96iiuTbVNrESL6K@xTvS?d#fmTpmXizSqp_8tv6m|c)I!m~ z#$x$n3ea`+R_IqwLt&CFXRoj~*qaEiv#o4>fGpLzq`v$i$u4R%R#78qB+rO9IvV|r zTa6nLUyrTx(J7R>Sr3U~ZKL)qp4U_m=!xws?Z-=g-I)>pYTIEXhx)Tz;2#5ZQc3{r zGM$x>qrU8|H=XVB5FeuN*ZM8i9oFZ8rq9=x0n?Z3%aMLce+uap`U<3<)}KN8$LeQD z_0RP4NdJRz(3oIBz?g$MkPc>e%3>kRiF7Dy0XlQBNaRGZDC9)57^GXX)=0;)Sft}v zCeoc*A8dIm>yMlP>|Ug&vHOreo!yW040aCbFWE(;FB!NVLo?LpznMDG86oO?WrX5M zi5Zbb6w=WKj$*VnVv&wB+991_c#uvq@T_H|8Xb{NGcu6wWMm@U*}!v`(cS2QbWh_p zr285Dkse?SM0$`h2<gGbk8s3XV>HrZj8de>8~0-EG~<4xXBf{Sy^1G+#*_JVz_?fR z1Woi3eSwMFL_ehaiy=toh#aKv5V=U-Dew#|O2k;u#W;cIF;OZ?ksdF`BV8t{k)9+b zVVlWfGIFMf8Av}MW+MMV@fgxI;z{H$b?m_t+k1|WfjQ2|P|#$UM4ihhiSv=kvIElB z$&N^;$#l?VhP)N&z7ppqZ<7O%&XRbNl!N79q;HqEBb_aWAe|%cM0%LBKc4&sII}=^ z4s^bZ)?(O}rXU2}<sh*9%KT9fQCu{t64FZZtID7|)@XNR_ckE{04-0qY?UY_LCH`h zO`TprACS}6gvjhcSti619~xn<f;5<fI}pwoKW_Xu7)E$h{oP4#M76+^y}(nv15fNB zAVK|BdKfgr@mhcj!f|FT$qN|G#>(Sy=6%owhoWzcMmMX5=`b4>z!G={*28w#3&-FT zd;(u-PR*-jXx+5l+5jy_8=)0yrIuE-Oq8Qxejdli+-c%0Fc0fy<;|`8l-7K$)viSk zQ18grToG6f!n}vYca60316CffmD(9mrBO4Y7Duh6l88PQ{dp_VDyEgMRWGYPW=G7S zm@_f8R(<P@t#`IQ-1=-R#70<h;uc$Z{0u8^GmKg~%nY-ynP*m+bIq0JW^*rbLld?o z>`yqEa6ZwQXeMSP_Dvj-Sdlm@acSauYu27Zg)yINN%JhS@}yELZ$H(_J8ZPtdAHm7 zF0us8TZ_4BoAy8H|NewyHKXVS6t^4{u|hCPg@dFB6lw^(ak|itlOdcuI0Ail5VRKA z=)orX?oe=xT=d`s^s|<bh+Z-jQe-arN-Ai<y@OY&I}%3KGyrcO1oSZ9KFqTba*;lW zImTUYAwo669E9xvsTc`;N06?t>$|ESda?oUw&}evpN6miVKKr?gyje;5!TrGdW1~~ zTTs?<%y%MSbnu<Rd_U%AQO;U~z6b*m@R^a0xApXqn2$y%Mc9DwD#BKTw-9#et-VfP za>_IQ(cT1~kD!CEhqr^j(%Z{d=%4JLp5pLb@E-GBNQv>~De#v1W_m{wEcTA{&+@+N z+pZub&G!jGm@m&i*J_*MK{(|*k#f-A%Nvif6-3*x0sAR%`MM%xq#Va~N3h*6>|cZ9 zxUh|@Za%&NIG;TKWM5&*I+VE$>r;Jw2>K#_36?XFRxl9DD;mvn4$gB`KzRW{CDNk_ z7I+UJO!uuPnB`lavKjNWIJdR-9N$9N<=bh)9)i6{D>#7k0pcAcIEM7GfbvPC6@2=C zz%k!x8}{J1d%Tm8R&WvN4J5<b2h?v$1g`HS&gmHH-QJfJ?-lwV>UX7#K&bM^r%c82 zGyYV9)xJG`l%KNBpXuG;-{8%$^p~<R5d6-%^{1Tj_f`9c`9Ru7%PwBUJ?TSm%$}Et z{SfN+*V@;v_4^p8&kYT7z1@6${96O|?aF;rdvERkSRD5)-1BUL9AAZh7nZMVe|7&{ zwCBCpzZ&}=K%LICVSx>e%MEt2oIsT;sk{<lO<;Sp*}(Q|sQp~D9R)SMO*U*Hm}|ol ztXo3$7Jr3rz5g(lS7E-w&W~Zf74@{$w!OD(-F*|(wX^-P-aZfe_9Gk$u-`)j4fcD8 zV3+R%!7*&Fpw52JpzWOru+y)|CQqm6NM9toZM^>{$tL=cO`<JcReuI)j42cwJXBA1 zTyM_~i$;4sM{s3ask8I$SU!nmr2S{G+#AcEs(L@9r1`%}3G+MsbNv^oZ5M>Pc!YGS zj^%#7yi|uO`$ekm7b!7*XNm`*iyu<;)G({PD%<S`V|(<wlu>?HY7F|-4D_o-ST4r0 ziRIZ?UW(;1EPJp#&mW)Kh5RrY{V*E+Fd=2Czk}s>sa~|-Y5rZQY3OU2-nIS>DVzP7 zDf=*A=kL}~kMWoISZ;_{%hB$Zs~AYI1IKFcTbF{XY-7W<A!YX!u+N4%pFfNF=M<9* z{WUn3x^}00J+M9p+YQ5fWXgHepMqKo0&Hu4BilNOWd(Jy4fhRg_8i5fF4jJ!9Zp-K z{DFL;?%A>r*R~n=!p^-N(me#d{L}qQFt%r6d{8hj-HSd{XvK{5G>TPA{L?XB4DhC6 zIS0$A)ATOB0qI@p%dcM5Ud5yuwBx#G(P&%u*NhSP44j+Z9iex6zx2VF53SexmCuNa zmhaU0RQf32X@U_*k7%g3>8pL~it@F5fuPP8lpl~Uq!;_=rkAD9@TU?~;doQ=8PNEd za3N)L`s|c_>9gzfl0MI$nZ77h=`=5WHNsLXKhsdY@)=Vfd#;Q@_WJ+LCo~<R^uOU9 z7Vz$gC6<mi&`9<G-Z5kFmUlZWFmmv&SHr#hIatis@E0{F-@tcj&G|0AOH1Org{CFr z1h_UzI7FycD4L5%ZLEkEG1@&MR>W#mB3^XXCW@}&Chal2<rQjAh|!{0dp6{rkbAV% zcrT0Bo|nVrZtW$!BW%>e8qSOENQ79>5}v`_jgXA=YV|eN2pI@?o^<CT;2F?^cZq~` zNcXVoLlBzVfM>_{F3blY;91g*XH7SrKiznabmRHbU2W%ho^<0m(me-dZNwbUm2SNE zC#bK^UWxfOlrtG28X+Db0igq)=~FS!MCgVv9bp#2T!b2gC3v^;pr*S*Z@fq4;_a*y zZ&5Q~E-c17)LPgC+h7;$2i<cq$&sWd;rf$8Jhe&9lMJMso^weq&jqA(&zYn!&!^b# zd{PM3Mk4iz=TMR>DH^Ghp1q!no&!i7@$A6fA=pEBws=l^wo~5?o->}Wu(sB-+H=se z4yg;C<(@;H6G(mKsqwt!S%TE(p4r%YA5x1^_IeNAtvz$G=LXMKq-J=EJxe`hNL73C zu=kpOyKORhodZNU-u@kQ=WdQR;?kz!P00yc;W~gepCjN5+SCG=cyBdv-%Z?e6Ya%B z8!>T@+nvBX)~aiRXa6>5Eilo(JfC2mjDR*`qV1SyJ0{wdiMC>9+d0~piFRY6-I!=6 zCfbXMwvvSR1<yHz3rOP?Hc23$o#Bo^(l7+PM<n4r0`Gp1R0-E5u1;K+xG`~a;<m&c ziMtc`B_2#Xl6XAvRN`60n-f3xRAY<tiM5HVJ%+*vwTT-&A)e-*NQ6C}X`Y#$Ii3Z$ zJIg)$arcgTPIykEo?758pdR#d`j?>Vf5#m$Xh#I?hy!=T1;Ml<A+#gSXh)jUj<moX z83@s|Be7yA?npfDg$vrq2;7kb+7S=!Nc;cbNE-S}G3{~(2tsY6Cz^P>Gx1hu;_c4F zo1KX_yF?EJCG1Mrn{XiEaKf>KlZi3vKeYN6`WHCIuk^1#W8r9xx)_93$I#yH0E6s} z%WxSE;ybtQi#K!gUvTRV)933?;HXdP%OIFuS9H?rTA_};j$cEV<2Q~2;Bp*t9D)eP zVaM;FrQ`RG-$Rt+L&t{@?KtW96SQ)icASRR^omw2y-w8z^|b+BC9S#CYbqEsv)pcX zvfJm*aCdbtcK2}iaSuS8?apnx+MVYvbdPmcxU1dM+U{$+&pos4M)#by8!^?om%DS_ z3*0NQWp>-um^NDAw*CSoHpnYfvXrC%Ig7DA7pX<aS=2bGS37i!Iw16w`WvW=xAk`+ zUjK!D3fhUOVk+FMo)FMmwvisVg<h*w-y-F*Uulc1?{8p#d@AT`^sT`4Z73^-`rwlT zV!%!MQ2)V&1Si61(9G%T6)}1R7iHiW%G!D~=*=7n;pQ+*2h76=$5cv~fvI1@;Dn(G zBN9d>6epA=R3%KMIV?rl!TJmO3pj_DbbN~GFY7O({7w2MVESwNYdFK7<E%KYZ8tb* zRUtG(iP3D1wws=K+0ep{PTwE2c6%VJ%}Pvb5Y`iAr9k>xWtBEv!QXU^HY#oT8vb`p z-!#W7=l6AUxz>EveD}HF4up^w0(qfEUZ|573i3h+d0{Ylp(HPKk{5=e7k&)QzO@x= zdLMle+OiYR05Je@7;^#ut^r@i|GKt;vh=pcDbI?VcU4-4sgB-=>FO5q;uc|=7q>a? z_%&;-v@Pxw;-#1x^LNDUtEYFzoeik@oH*ydL1y5r_QlmAK1leVPv5+1YrWQpM;gs! z-W6*MT-|qF*FT+9yr_SEJc+Sq89qfq9Pc^aL)+Z%*pIgPf#U<T&7+Rv_$>Lz@ezd6 zb0R`!$t;MHgXAEHre{X0?-YM?LH*jR24xh1qtve?z-m~4rEYdqj-qxu5%8=IM;h8` z&EW!;BI?_z2>cZK8lLj3@oBVp8cn@d$3Z>_<bwwJpdcR%A|DJU9}FQMl=LJF{TEA8 z+5pl9Cv7DDz><_+)&B}GI>ABGVKnj7JJ!_y9BLbQny~gsiw)q#(=KURMgT9<+9z#5 z056AjNz=yKJRRgeWoydHqQ7=;1W5vtq>&_@Br%fYAQ{15+uOjI&BvK7#QAA7GeP48 zeQgh>FVJi3wJ@5e@wI#OUD|&0Os>`A+pS!A*m9Uf`)PSjE82C-=QQ-bI-ZVazooRF zf$dgVy9rxt-oMVTzS(~RYp-7Yx2siaI%wOxwWb*2eGW&-<^y<I2%HPhk;TifZ9b4U zz_$57-dNk_>v;cOi~rZz>_6vE|E(6U!DiS?XK}SV5RG^3XuNB;+zwe0yZ&2~TC?MQ z$NRXt6OI$Ox<5PqjJ$7sDuhk2wc(x;j;FS$X^<6u2-8u8qjHF@&+VF{0i`QaL(7O> z76kOGuMd!SwX6V6#MZ`1`KaT!jw9c9g|1qHtjOt@W?`Bh?h1FQQutxQBMGNkxlLn= zoLg5`J*<`uZR*pk@V#{s8|2lsBRK&QBB#5~xz2@8Z=7g_2OX!r!}&<p66p55-i{=# zk;k-E+6v8!<)wjK-J$E6x&hB@#4Xc{wevu~1QEbJsPEJBusk%7%et}*U7fRfG~%vg z%UK63cL?C>2C$ld2-iAbZ7zM4{v59Dd3_B=-52#2(XZF*>+!C-QQwFw-=c4UAYA#| z;LvyC`h)df>-#Z29?;*1Q2hh_18Aln)(=B-{fK@9TIk31<0$hZUByIGnivz?$#&3E zCdx$G`EQCE|Jk{yoBMpi3xB||m;E4PFZ=<=Ui1Twz4!+l`-vZL>}3?4(o`JM>fWsu zOS}#kvo!d$5zkHchNF#mF`7C>?ry|$X-+J?+K3mTsdqQ6Y{b*yB9`U_^6)NrF5p}j zYoF`R2Au0G-WfO<aIUj>C+Pgwtr71C-HDPL@ea^ABBGwBBDsn<K<5yR&LKLTLl~Yz zj^SzeIG#p=8hJ>)#X62QvR;KB58zw$!3HZ+XPo+7pC3RkY@h?%*nOV}kZI9>Xk<NV zUCH1^9I4(JNGpqLXoss%?KXk++NcI0!12@{QeSTL6b?HH(5wq&$+G{}6mV1cmgfv@ zt@a7Mo?40P#^X6?VPW;4%2$HL*8^b073ER&v=&y3P)51Mb3j%|>JONX{h*_N@ANOb zV}0Ax=Ls#6?7k1+ZaaMl834f**9K>ZP3Ja%GZL~KeZGHk!avjd|4QHUUjMy(Drf^} zLDTC&m9K=x{E=6;al|yVMY;~^cv<4;e{nit!+%-&kNcE*zw?EFyM+4hoTIkl(#gQ| z9iF=CgrSj_s^{45%U$Z8YkEF!NjM&HA>j!;m1vFl$%w}iKUaMsS9cp(#7{z8!V3`h zF!B*^HU<#Cnd)oYj(CKTO|`1cc&Z(4ET&pTcQ%F-eNxdRKbu+(x7(}Q9c&%qRP`xe zJyq-=`ctCw6lMn%Ho6erNwqjz=2U#<G*&3g=Me_N>h;(iY^lP=NTM?cUnGu_u#KeU zs$SYTzFW~YXEI`s;voO1qG@yw_44pS!t)5L_vPoQS}jk_0r5`4)`$mbtS$;u%N@p7 zL{BD6Go;aXsJ?n{lHXhP)qB%k^rpVYsbvk(UK_6<zLHr(5?1q-h^Hy6&oUlFY!aTz zPar<epF_NnUqa1PaI_D7uF^9*D7*?QJtJMC_=<zIO7jj{^)|wDX>M~Zn&vi_G%#0R zOPU!;+MszVj#k4eXwEx{K1lRNqMd5~)W%EF?!MfSu(Gkr%hw~WzB~kR@nyB|*_U5L z{K@5~)Q&4l))!woqG*NTLalmT_5xY>ZlZVBs`K9xg>{$WYa0|_chzntd|K_P%~7+e zyo6S&g{fMtlG=yWRuJy4IK=l--&`6!m-^<a(X}1+985)1-#i-q0*$_n<kyg#9W;uU z+SFJrY0ejF*DF4)$Yo*G9%<z}M`%PBwTV_(_mG^tTGFAyaDg~AYF1i}qERMFfK#N6 zbtKI}ate7X(u`_(j&`J<tuZyj<Fr%fXa~=cb)6%-3bWR0SvalQOA_`{%YLMvbIJ~3 z9<4Xpl20C#t9(a`rrO=gZsDksi6gG3*&ZSO3gWL+ui+>@yh@h5kN*NCJjh=|++Nu& zuJj14lq^u$DyTp0@(RKm=?tGn^iHC!I~Lt!E|1kw!sX^fA66J|aEhKoxXS8v`R|B@ zYFSIKJZY;*f_0C&Ky3ynj5C0`dlTwTMT1=8d`b9C>RU<lON4(%oM}W`w?XS(_X6Qf zgnv!=0JW?ke4IE-2-Ce%izfOE;h!q3Td!}uVbgd!VYiTmcae8zTpo(OwkVAJ!NiYH zw6R;!!cCm*Dki8lu*<+(nI3y-7tsS$Uqzz?yxZy@id@1y6jnRSB2|QBruw`Y;#?(1 zwP#Be)(gcT!apV3+fDRpr7Mas1I0AO35uc!uOd%x5vFQ`a*4m6FwtT!#ly)&*N`-_ zE|SpO<{YJ3l6grzWeRJ@Azpq-#ntLdKT}VcOTVOAMc-x&p=VGnJ%e7NXOr^rg&d!s z`u&%mM(i`bB*`~Y-^WS*XjLnoR}zGhR!#Ud@ql{v5x<b=Y^7m6o4e`h_8XFagz#<} z@k_#Qs#^6f3B8)DnGYBJ3HL%AE`F~hh?eBD6cfl>SCT)bl7~J}+X8V9!h7jy6|Q0z z{FWlv4)vTutnPlFQcRdfa<-{Bj88g+9SXy4@~k}N(QtwMI!|dBY4w~6R~Ch%D*G2? z^L;I!vTw~P%HPR8^9b*tHYVAmhj4G=)9b6&t0owaRGS5arz(syQ1~R_Z6vv`k_>P; zl1AB17*7kA^J+g<nB?ps{5IiF0M8-VN6{~ngqsMjv*HA(&lJwq${_GFg?;HWg+uE< zQy5R53k(AFeIpKN1})T2Ob}0<(Sjft&s5F91rm7uCk=IaEurye4dVkoWvJl|!OFuR zyr5uw1ym89N_a+LX~`IvGrFWK9~KZ^TvAq21<MJqESXSV3Tp_j$A<Z^iSU-v@`6&> zPIxEbJ>!cCOJG0YLzPPAQNkx^?Rq`d=`)K!r$dE#01gVkMgW!pnAy4nI$<g-0<goz zVW<HQ_#pF|pL(?VRoHp8^*KJ6XPsKL5r~5^ueS3VD;Ec>Jj9FbF%R8k^$R;|fBJEQ z#cyGM8nK1_Il&gw)SV7A=RlHQrQS0LMvyZoG$<^n8U1hRA1b<QZ8VcUIk*F*M1vc= zIQt&Z4{~tE%1aF9Qt#9x>ehOyZ#{KeJ=L$C>Q9uw5hEZ5Ow@^&q<lsaKBwMaP|tJJ z>r3kKmHOrzw6bW_VgkdPgnphyQLh;46-n(|srKqt08ZAD<U~+k^<Tr!a8zJHEC_<= zotO@~buuwS+^>_xGV9BKLRbi$p`D}$Y{5Pj5$ti*LPUy4bb}ayH%j&XbJao{3Ts(B zGg$&lW?trFX)Ke?WV6_8Hiyk+3s?<X%$Bg_>>0L-tzqlfdbWXWWSiJ#wv}yXJJ>F^ zhwWnr*dca=9b+fhDRzdPWuLH5+2_XX#vMF``*}y6&O7nW{Ca*P@5yiBxAEI~7Qchv z$?xL%yoi_Z@w}Yh!zb{Gd=j6+@8$RL`}qU>LH-bbm_NcF<@5Pt{Biyye~SN@KgVC- zFY}-BpYfmbH~HKA9sVxg&40yz!$07^<A2~E@;~v9`Cs{G{7e21eo1J8i(nBdT8NgS zjc6;{iA0ek+KcN%itvk$qLb(>ZV)$$o5V1YCq{{487*UEtQ;Xn%0gKzOJ#+ul9S~$ zIYZ8pv*ld5KrWI?<Z}6pTqW1Yb#jB;Bsa^ga=Y9icS`ji&$TR$#o=zWVQp|X+Oc+^ zvm};;yKx=64y`DKr2uCgSw|486YGR~`T%<X9PB~%AOy3A*h3J)9%c`NWRI{%&>H5m z`4Gw;V~;@?dmMMO8GC{~0nOPmwhUUZr`glsV$ZT?A)GzWo`(qbB6|^9vY)V@KqPyK zy#!J0W%e>evsc(F(2BjrUV|9+I(r>jvp3iq5X;_XZ$lh=m*K6J{gV9>+OS`-UxCSf z!+ry8*$3<caI@dB-$6U}2lfZF;1Ah{kjVbT{sbQOG5Z*j*k9ORAesG@{T14?zp=kT z2lg5J46ZW<8-u}X<QO@S!oA!JK8^|eJQZ)LsXUFRK}Vj!Ga!v;@=QqQU3eGB;N5sP z=)`;Q9+1g<^WM;z_vL+|3m?D-!1a7Eo_xCU9G(L=@LZk?-S`MT0&e6Z`AF!_3-Kv= z6EEh)(1VxqQs~Lc@QK-rSMUnBnOE{k=*_Em72LwBc{TLmlku5&E1$}zLSH@&pW3(a z>3ll$<1_dS=+9^JnJ|FQ;<F%&&*rmXAfLnMz#u-C&xOH!9zIEL=L`4($mWaqA{fG# z@FkGLm-FRt2Y-e?14H>Lz6yTC*YGuv%Qx^1a3|lyH^DHznQw;Sd@J7yBlvbav)#qt z;%`A7-@$jl-FzqC2_w<2cSAnk%lE=4zMt=h0)CJmghGCpABG}+6wgSb`Eh<6#_*H; zBoy=0{4|vCv-~WK<)7k>ZyZ0z&p|0a&(Fhnevw~<GNA%{xiEwQ6~ZALaF1{bCsc~& zqB%?u5h4QA=ThQfqA-OC)xwRZ%1I(YB*0|h5gwQ#l0`C16&*wexL0`b>^DvLgb(f$ zsUj7oiwuzg_lr!C2{S}j(G?yL-9$H-DY}d9@SwO;+zGS9UE(fyNaTxrm@USLG4QaA zl2I^6wvw&j5g8}rV6Gf4hr^@tZh1G%lLfK>=F2g13@ni2<T!XtmdkRekrU(uSSTmS zNw7%XEANHJ<^A%0SS%lu55g1jA^8w2k&nnn;7K`O&WELPp<D>d<P-7<ST2{zW$=`I zT0RXc<g@Zwcv?O$pND7Ui}FSIv3yCs1S{n$@)dYiz9wITRq}QDIy@)ekZ-_h`L=u; zo|o^)cVLZtSH6qqejV=t<CvRySO=EMGT1pbk1b+L*$TFjt!8W4t85F~#@=E(*>1L% z?PmwsVRn=qXD8WdjF)HGIb(?NBYp$FiQmj`<^A~(K8XK_59fFD0zQV1;|uu{d>Mb5 zKg(a_ukhFS>--Ir;o-mF@9|&r_xW%6@A)73NBqzHFZ^%(3;uWhKm0N~EhKY`aM4Pn zi4kI?D3tLsPmYqK<ycuJD`mBuDyPdia-OV_i{(<eLavmn<yyI3Zj`UeEpnTDORD!^ zkE2Ki6v;G-WIDw#MlsBw7{)1935rrd6rUUvpMohqg;0Ew6rY?Fhe9b1g;5-8MscV) z#i14yhg=kg!YK|#P#kJWaVV1FP!z?XXo^FvC=SI?9BNH*D3)SR9L1h^ial*8u9y^8 z+EQF`Q(S3BaV3G`N+QJ-55<)viYv(!SK3ot=|FMiI*Kb^^7s_;cprJZpFBR5Jia6O zdK&q9I{A7A`Fbbv^-S{e&gA7?$jh%MFYiiTegk=VH}diu$;-Qwm)}HQ-h;fnCwX}< z^75O>%X^cT-$GvAhrIk&^76jq-?x!}_ap!APiKGu<f&QYiv!6Q2azuhCeOQ_JTIF( zZwPr_4td@k<atBM^L|90mrI^^Cwbm5^0wjRZ6nCr?jmo?BX7H#ylo_TTRwT)DDt)f z^0q?qwj%Pj(d2Do$lHp^+e*m8#-bITg$b-JOJwbtpQW=e*rRMAdy+lHe$1X@FR-7o zpRu2_H`zPv7wkRuYxX|-E&DzDBm0Q`Sy_dV&Au?QjiKyO-j#Rfy?7tqk7x6Nd?+8r z^Y|z}nvdl*d@*0jSMZe>wb$~E{8he%Z^J(CvqZj&@8SFS0e*-d;m7z1eu|&rpYYH5 zSNsC6Wq;;fMF?vvTq0Ve@m@#`7k7&Sen7UCcgcKNBunIYd5@eZr^x%{!}3x2n0#D5 zDW8%*me0u-<WJ<w@~84=^5^nR`3qd@g#TwAr=Iz7<ahDpcWub;OnR!fCGT^S_qF@q z>dpfyilp1)Jw1UO1VoUWWXL^37=|cOL^232f=kX}$bv{1Ne09Ks7Ml50l~0>fUpRn zhy+n^#Yj*Ls3;05A_}jkgc0|1-@bF+d!OfH4n4Q3t8e#o*Y97qs;6rJeX@W)IY8ek zK%YFIj|k{f0Q4yW`jh~D%78u<K%Xk0PYuwA0QyLPJ~E(B9kjO^fI&^bpcY_|0vOZ= z3{pXRs{=^X1tjVL67>Oz27p9EK;mjZq7fj`7?5ZJNHhf`ngJ5c0f}n>i57swwSYuR zK;k+;q7`UwtpSfVfJa-vqaEPU9`NV@+Du2#W;y{j*8?`40h=zMo!kHj{RI%}3JBc@ z2z3L5x&uNt0YZNTgn9r%JprL!fKYEhs1G327ZB<P2=xbq1^_|>0ii*F&|pAl2p}{R z5E=#u4F`nM0HG0p&`9v@YEHC=;{laH)lePO3Uxt$LPO9PGzoo1dn^n6A4m~G(4Lqc z7VYbxeT`{!nTDM~ms!|Zbh(?5iY~<ofe?&WAq1mKH9{!5B>lj{2jJl&@bC$E_zXPI zfrlXAAq02`10K*G93h-h0$4Pr6~VM3nN}3jie_3dOe=QL;<RE~*1$shZ>Z{wKoF`9 z6X;$i@ly~ERSC4$h$_V_#EKH$${3%(6hgv~He?K0p}lDjRN<o0zH}Dz+}(p7GakXh z2w=o9L<||DhcU<4fp5m)IEZM!@DQ*Rn3m$A1z$t0gTU%#TGyG@4W`uxEG+2V3&8!1 z6nqhaIc(rj)XoQGZZb>%$+T{Lx7`5Pt_@vg!<W!y9w>8rNf|--GQ%I-j`m{@qVIQ@ zp6)WOdra#-(|W+P2AS3n(;8-4Bfw&Tc+uJ+xiCth2X~@-D?<0z3HDk9cYx>Gy3kZH zn(hL*#V{J(pv#9$Uyp#rc=qw@_kBy@<7mkWxEf-IPr;`k9{3FWJH!juz_kz`Tn9Ho z0t++n3NU8%0nf@o;0`k5*}Eg?iYmAY^;wIS$HL8UGx**x4CjKok&Nf682xk>)CV4n zXUQzgs3r#HQWHmgv_KNz?xG>MyU6fw37(Q#1!;h>0$vU>+8&@a4*O!!A_#&Sp^m1e z&_4ViD94RWMq3Yb-Pd>Q3ovTH=vhLbkBC9H90ubhe9+fBm^k<udZdgId<<L)_KQc) z@!~iN7^i@{!Ds1VUiZh0Z>0e13DbJIXb}<^rT^P=vp5d5Fl(3yV?<E^<U%4D2wj9u zU{lPn$e8BBu)w8sktj4P9L8Ws90(f$uf&aoSK=YWlfbS-z~C@+3XH*(IwJOn@{%0U zGVv5qNDsVhAuli~Y6zIj)E6>fyb!4+&Ts-&NfpV$Fa4z>&OKURK6s+5hq5lHlrFdi zq2u@vI{c{=3u9oI2f7ID)YHpa)@Sg+dwh5`!o@sN#w^7MjiiJq5U}fU9Q@KI;k5Wj z#*~wiL~jL25|v7kWKQx3CX`eqi6f$43orkE&B9cZBq>CKu^!7W^liOEczCp=QA~6| zcw}I7JR-h=i%LOABm|)#=%4EfE;2$QtCJRzKjDbz80n>_1%rpMbPNxK=Ci|e3<j!% zn=jIy>Q35-5K9hh-h{j;tIU@B_2XQg)zSL7qB2Q?MEkPCWjP+?;67uY_}A63olf^A zUlwMF=9HxQ)wBmEc*zWi=?(E<_KoFVZc*_oC<s_}=!TAR3+K5Ft1g;9V>i&wSFR*d zE5_GuGagOjX(|X=?^#VxJmR4eXZ8G0t&eVjohXS_R-mNv*<K}~r}_uI1w1z3eM`hB z4w=*C6S?pek(({+&1$x%wCIdG<=UM3Ql1bRZF5?vC!dWd1-b0;2&6Qv<73ftp5Hk8 zn;$#t@%~h2mx(&vO@gU$xO*QioJz@?J9900pnPSdn_kx+Z&;5?BQ=Ed&Kk)${`6rO zi&p%jsTD}-F(kDNJ)2?}TxtQ5dLV^&;|<zGU}Uk3eUiXg>)rF+M<W0I*N^@WbsWpM zhIwNgt=Urtgfw3@U}W#aEt_)lAeR(#bQ|FJX61D1Je8V!<Fa4*T<MytUK5{h_vq@n zR%$r~&dG)vcJ`bY!Y2-rvh_=NX+ceMe6~V?t)Fk0j4pGPw0+^V<@5>Rt4b6(l?%Q{ z_;$$gcpsg15}lFi99TZ(P#tDMX8A&2@$rd&2$%hb=C=+V&Cf0)pCw6bSz>t#E3I#d z!N=aFj9_awzWaUfs>^HNwH*#lb+uR`-~66|H>^2H4F}q*D9Vo$9#_PT#+E`if($SA zYwZ{@;;YaM5(&Dm`S4Fs+~W!}+*Ma~?J#RmF0Xp_vRyZCIT@N?6J39tcArltbAL=p zd4DOY3LXd@YxPwX*j1~RJ+Pa1E9!1t)D*FwB?c(>+GO+(RRA(71|%|?)LayUc%Y!D z69PZH-jT$QEMp{C`Pp4OqXGiM{G-v`@FLudOcs6?2VbAi@Gzgn17rWY1Cv3dz8=`h zrR#lsB^?9(!x&S%+L;*rqbk(LZyj*2F{4&!RFm$_$Z4*PYn_!S?l6m(=rbStbJwL{ zD+jN4hu}-rch-ie$r|{!^vcw8Skx!S44O5c$l<nYms6T7ea0mt(Pt$4$?MQ{VY6fV zEhP?Jt5K7_WT}!Ees{UJ?k*}Xb+B3Cou94>hCDwfZ*lxw2qv>|w(+cYGJVFaG&L=K z_nFCt+@sgEkK3iMkk7OkL_R?J@2<?~r(Vc-6+$gn)%Z}WdYXN!*WS&3g$JX!GEPrk zo{~Io%a`rlt$dekCj7d|GGEuuQK;9?KK{hX%&X1@C3L&2F#PYD7q`eZJNW4zvguJu zQV&a8L+C5MVVMDkWkA2RW)3?psKO^CbsFJkh=LrB6JaN?q751z&w|DNXGjGP;~4od zn0Xu?!J==77$bulCx{d15$lbGXd6$zy?5EBz}{5#sHyiGgoCk~2Zuv3%2<L9(3mY% zr;;pJP4@m_6J54JK3XxRCgV$$RqkfU`gzw&p$CEO++~SVu*sFK%$|>qJ#8h;&f#yo zO)E{I*ZEfqZizN<ln8U>-o7V(Qeo@FtK(7CIYZRl`Uivl&<^d-IxX{M`1wE}+up3^ zxrb1b#?*A;3@@K5{-r|xe&b+bM7?&-2n$!Id%(5k6r*6jil+Le-5On!Sl+~h_x&Tr z!&~MaKCGVmFno)vhBmNo)V5B$EK%i8{regmUKF?_HArUr2RHAWGp<e4+a9~tr>#_f zuY0hR&RO>B&Kl+VBgeX{?n&0QAj0XA0$hrJIJ`3&*@TSlBL-$(q&=D{uj)-Pj*R6- zH6{Vo7_SA5@g&Hnf(VIqDMxrzXMQ5p48hSxm4-|vku@|m8G?hL;Rl*jXC#r-ZT~OF z#sw-4T6J;OwssDS#j$@={2#TaIkI;9GtrXtj_3vtH>{R^;g>@R1q$ZUXUa1jU%fWh z>DY+paH**8!uQ;?id#cVuX)lv?EmcOmuUI@{w23}U`>%L)18f-I%2HOrnW0sxn^pG z15U__&f;CtpSRnvNKwjP_A0B@8DEpamk&I>Np$HDN$6G3V!2klzNhJ}^vepF-?$Xo zW^Y__HSpH&P+rTiB|iO4)<i_JiR<Xm8m_7JvvMPkByT<|*pz!rU4@wJBC<Y+lWaQS z7ZUzPyKn+NS#V_VAPX<Io>1VUcpGzpk@LH5#Do@BLxn2F@9i60-)%PA_FOelsmcAC zuqVZxd0bE1{{K11Q8FcEs?1UJ+4J5cCndu%W~gJVs5sI<=FF0ka?IkG$73pE2uCDS z$dH-JEEG}6^m}jj+<U)1>viw_{vN;kc>K;k$7l6kd#%?R_H)12UhBQz4BJJ~$QQi% zq`lqtpytM?^69~?hF|K~`2FYj{ZH$r@l$%m^vl@WW1~xlxwif9AM|_j_D%ilx6yA5 zTRXZ2bS`_iLDN|l?aTL`8hf<)hUw+I+h%syx@oazM&<X@pAAolOGp?$Z0@hma-}}+ zt5of~p+ZG|^z~YsTgH0|VeSsATO>q!JK8j;v+P-e)^m&e>dX)pTh%+AmiGC~x{yaT zdSp&3Yq~W)I(2ORlLeVuFaI1B95p)N`QW6vT^8i^o$7web7QY7j#nr9mc$MCw8v-a z<j%3hAI^-(%5)g;%CbWAw4%0cc1##Fcl(-le!EkX#}r=psm-$6BZe&LIZ~+b^o%&* z<QF@x(e85-4&DoCojWf4r2F;taqTxXdun;hB)zKhq=gHPMl0vvoLL(+>h6gj<74Ju zJF09iX<Ts0X+_`rL3`UxJDhVOuzj6(txBJL{$P{jS=;&i(1{rb%1xf#<8s?a=>b<4 zpZXYj@5t_}hl0JlSMG>=Zd)gI<;|R07ZyEV)ccP21MkQAjs3@^^4Tk{ZvOp;;4drF zi<5mP7VoKbwu_B*-8oA$TLfP8xbmV$+g}~3&+hfUdHd_lK5s8AFbS)-XH?{)KbGE8 z7TsKsJ*3FXyi`kytJS{Ahz5<_-DagOuxXL-sZvs0Z=bCpef9;~znWGj&w1_ajMc|} z4XWKBeE*HqKa<|~Uh>lh{!sL#teh7Iyi8t<zp=2WdR|d!Y^R%>qysziem*^I)!ajg zdpG1}ZTl(VLBPc0Nry|L-xb~%yrv|zxNf@B71LjDcs&?<I{MUVv-g$uhaYZNGH&ap zVFNmz3*BSc_3V@f{V%+5v`Kt&`(Bo}vVZ5;(aHUv&UamZzp#1qq}?Gok9KSe%XEA_ zDtJ6^e~$b8uG6V)LD5NLIyCUD)aap!Rxzeg^0dDDEZ@GhvnmeR+iT%CGs7Ki<I>Y3 z$B%n*_uR_`H%3Q&Xg99#e)p$SJI2qya(Lmgo>>oFt<%?>?YaBw@*`Y^{V2Cd!8dDH z@}IZ5p#7rX)+Rmbdt}z}7v}Zd+%L_28DBH%eY-}tbDAW!j8z=d4ehOmNB5i)f6LlN z-Q8<{t42@bQ?0Ha_Gs!AY?pe$yu44nEoz%bKc@XOctNFM@1`_<=j3~>YWWs7Ce_~7 zGIQ66Tdy0fcC>yyNZk7}+I~xbo1AhkV%E{2ho3pTxL>;AVm-GbFTy*N25djyCU4ro zWi=`Vns+rly|nYn<EGopyDbhj9A6<X$rv-kKPoG2S?5b5UI#S!SUP!9#qkGSf_kMa zRqs!XiEt>4I9Tkz)1|?-r8gVgn_1_#t$y2fwAsHuqWh8imIprcuT{;<a?;D}%vagP z_kuFRKR=S|-w_7aowMNSrEPv2?ljBq)jP0c)3^^CCs>4jSX3b~`gX0t9j7Oj?8=XQ ze7SAVyDxPjtOI*wmRldVKJAWW<oS*Jd^0cn+J3Ujp`5cX9O6ndmfVRt{mK4T{>DPH z$rn#)xAH2xC#+ubVY=zHN`2NAaVIwnw5(>6^f{&A*^t>~W_SECaz}I*ixuU?E}us( zJk_b;HtB0zK_{EvJ|@(xDpcCYO|5?NT4vWP7cxDf{5E#$mw6>i_FR|H`)p&){YhS6 zjn7|%Z7T1wc;kkU#t*H;FTL)+^}N+&e&kDw*H4bN{`A;2;DO`#DqrVW)NDB9<*NOI z`o1ii_Iad7i{H!TG&|He>v{2_Mos<Je(ct?!QPzf)k7AS)+m1eWS4#GEB965ck$VW zo)xM)4ct^?WXUz>X~o;x+-W|3Qq#@5LQ>voKEtjwds=X_$*~n1tgg6JefcsiPZ{d> z>QR#I)fW|nJ#AYhJJ{z9YFG4l?e@*fclvBEsvp+FZOYC%fioV5O+1{kX07ni_E7IX z9<5AS(z3kgjrch!Tl<_le=)avYt#Dk7Wr#iJDrs6&%JJL{j1ZW!8iQgn>D!D{K})) z8JDuZh*{=i$6OL_>=|+WT121SUH7z@*Q4pz^?weEc>Q_q;G~@7L$9xdzF28jt#D6& zpL@%SN7p@=P#E!I>asrKgW^FO-?^ogJaDI&C1S{>uZud3$n5<tKCSdfN&Mx~M*C+D z_L?^J+M35VHW^+_`clWeNB^9xRv*oV^iB&ecy-~>%hzL)YBaoJyV-W!_0>x1j*YAK zt$lRW<^9%W7UQMRYaI$L@<#gEwAj=3_J}qSmkWM6YBJ=7*?rffit}A=jCvWqb6iAq zo5gL$I<zZHJAA&!{R`GRL(@~j&)%-HvY>H9tKNGiP0QIebLkMTrL8&+>v(RVb8$>_ z`+@zBbW9(1r|5>;!2{;ETa0|+BJioJrmI@hidix5>I8;p!ls3<b`=z~ANThD<D~sI zdw+P_EcHXm{OG#j<DR`9_&NF5(ZDtHwjLT2+P&CiWT5l4_tk$H6(BgSy8dZ(aYptz z-}MuAejaxB%paLe5A-=!F}JmHp;P$X&V7<v_*ORQobf4o(1HBc3m=&L`E&1lyB{uO zMbB-J<ntzbX~hj0{gammdDnP)g&Y5F__0lDr@Lpa>_6YDrEl=uM(fIycUQaJu5!q# zntO%Hvx}<jjVbB=q~YM7<($S^gDRU&E$%z*qeIAp&%w8U>)U+Kv;pHcJRFhp<+s)Q zrcXF~e7I#?+>FXif7wN!FghF9@zvwaPDevaukC*j7Js$!{&hc|{IadX$7MBqBOfJi zn=-y~7e|ZaOYQn5zrE|?;qq|FimvbCCdjp)FP=K7_vBVXx}UJ!GxCS-V+*Ff`<nQ5 zN527Xo?R|1x?1#dX7Uy#qi)Poiwomd#`WFTdP<G(vu42y=iM9i`<4VV%U!ocJKMwk zreq}DwI6rB&7~?A({7HAY24K!fAhyG%OmVYjU99J!_+#>TAp_~m@w`W|Dl7`iH3Xq zRvqsWUlf*?d1swX^%{Fe&l$DuanTQL+{}A81pm_4Yvh_OL*;co-0xqvX4t&=<k`N* zhFe*~dYldMzIr$><#L-wZX5PEmCKr0c4^gaPY=nfSG8^*)udW$$G5Lct9J@tZjs^l z`JmV3<8s0S>9M1k<-Tk6tM~6;RXcXiE_Ln4VY^N&nsB-4vUADhW_}qtV))@NKTCH* z&tx8Nko!|nX~hO_&BGRt-oF3gvajpCV_W2opWUQwPH1|5{^(A>W@X-)H>C8Yyt=Jp zt$q1pCU}MTgghu{dr331`ua=r-C4fRmqa8Fc{RSjNAC)|vs<+}|LYy=(q13N%)hw5 z$RY4ay9MWujHuqPCvP$J<ps-m^}9sw5ey${+}M|RDDUU(#gij?+z5K~pvSumn|rM< z`rTc=&2q}~sr5zIdp6R0Z#notob||}#&wT<^!VN3Sk!@E3Q7m=Jh{D>T)ZS{^!z1n zQtuwznRhnz&BVkb?+dK%wDf&fFes>lqhF2a4JlUnZ`0;%>5|;=R*}5y$le2vAuHNN z-<q5wd_3LkjYrc}-i7yHZ;jqEQV9=we{PXkwWWuwlbdRPewyMl{M4O4&ZjqccDziv zll3c^oB9V28xua--*?ove}?$|YHrF&2F1=`_wC=#&Q5(MhWa~sd-?}B^&T<F-%kIl zlh*({&Q7%B2iZ~JijZ*nVX*Ub>Kq&pV#gVTzx{9@;H<P)-4)jku0jVz@^BU1T|Fe# zP3ASl!<92Avccs)TTlreBZ9*HM>}~0`G)(u`wtBn=I_+iKR7UaxSe1SB^MWS)4wa2 zuu8f;Hl>!o&FP#mm-=sC>*H6k;Q=430}Wd|xlLawH?4IuGV=G0BmMTo+?&0pg`E4x zks2{EEloyRwQ;`jr|rNsGsdX-&ccP_&lxE#TfX1DLg@YV{((*YwF0fKZ0Tv<d|$#Z z!>4rg{qnP!Sx}$hSF2a`i&!^mh;wi6&>-J+z0J&Q2Y3&w-L<9Tq;9@RUn0kO)x3T1 z#K}m@-A>`w{hqz+wytnZWVay>;VTB-3~s+JPm6pN?-1T5De-B?$fE%@<J4*vZ^o>P zx^ZQw=ejLzTaWIt?$WZzW5;Wi&Uaij%`<1_;7GHbSEd&hsGF@!`e)6!VQDg|%n+@l zB(>UkA?RT0t9xdRJ~<S}w{mW~%P`v3JFnL(-;j>BeXSohnSW<v!TL4IiA$3UAElnM zHC^Q55b-X^_x9G*cloA6dN_P4@yyv$HSo8kgG_HF8S=Tv4<=T(mxP?jon`v-;teaB z<hO9_JJ^#VlkE_zp0nBX@R!IX=jUDOA7$BkNs}|BYii2&>GDc*ry!Ta%R9&VMm;ud zGpgU3<d!YRygT<rEmP6&c*4^AEiDsvJ8%7R?Dc@fJ4>t1I_^{DLi8bn^5n!2&Z*Yv zh~>6BFV`{iaoy)Sz;SkmMEhE9Z5-p8BsN}}dd1u1yr1S6Z+Y3qVSTxN?K|#>?VH%5 z-^mx=<wo{DGi%h&$nMW#_a{}!N}J?uTi3@eX!iW1N^%FQpg9>y6%L&0ceBnNp8-Kp zyKdUtODs3;RQG3bzbBcEOAEePf3kP9ThM3o$$m~R=TAv=O0XC+t={x<Vbv0@kNWc5 zEzG(~di7^BR;x8S<_!N-KRw&KUew@c^B;!&(EU_rwf2;k;e`uJb8D`Oxf<H~;-4#2 zv%rV-R?RECT=nV09|q2y7s{1BtT8a=e5khT&n3yGUJvUGoR=5c*2Kro#Mdy#$38gG zF5|?9iovJ4CD%Tf-S6%k-{kt^v%BAoJQ7xQ&cijyR>i*MU#FLwP_1f?uk*}~Z>(+7 zEhg0HkuxIplzr@JYv);kT-ISRFz<Llz18Vv)=^e(Y79Q@Fu`(n&e+)Wy3404Z$eTc z55B4LW!Bf+L0wNZ?s~drN>njtX`AhK<QBbC`|)Z4=W=38N#!*U%_5?A8|n{vST|x` zzM<ULlf@-v+vPU<6g#BAVd}~Jl5*4h0vgn)9UU9<#HlE&L$jH+PsI9o7#c0Fe&NS} z#k~HPV2|dFe*5jrGx|BH?*I5}dEq<b+jqKIU4Ir3E*!3XkMbxRR%T}CKS#Fz>uN^! z|N7_i0M|!NjIMHcMO(XXb^4Yq=>FLbe_ge3+{O`M6i_VT?!cJ|U)S%wbnnScd2-|B z+U;O@fbm82nr*K7uS?cN|NFn1^mom7UjLUg<){B!X}EwDNj=Zm`>#H@I%AvtKSlnt zAO3xn$_uvbn{Qa$i!QO4?^1hHtf$BKKLh$T-+tde*xAQp#n%>vL;T%$#Lig4B@TW& zG$`XA)AWg(!@kp>yvvNbT+7U_fn)6ddYbyR3~wK}WB%C0R#_)YZ<eX+*T`Yoj-CJO zX__5!(_*r3$jez%l5C68%c|8X=J?c`$xKl1M-PLfk@te$w-2coZxPzCd+OO|vyQ11 zw&aSd;)Kwq7gKMk6`$rhzdQLMxr|kA!-271lFKj4<p;(&gf`igdOg|XMsDkY@nx;& zx?0CJu#O3+9MrGCHo3Zz6L5FtfUvrAa>m`A(I(95_35_Oano`K-;JuCOj}!Boo7eA z`OzkA=!AMbvO7CRZsBTdFw_}ZP<eHl_b0PUITKT+hfS#Nl;fW=)9X#0!RZrHW>lJR zHEekIoM{hRrpzB-VEf4`->+d)Uw(6T+m!fiC1q@L8+ARIUQ&Kdt`HIDRM6yDYIwx_ zkb;)SPF5ECeza+q-SN}xHE+zOriGN$pO)R@f}?vwefD)4R{K+nSws8_wpX6I<iu{5 zGOcX%#KzxdsJq8sHvgrce=mhE>1%TQT(*~OnPsp3`(*{)FO~A$5<F$Eq9>{R$9KWC zeyO`*e&%U$e3zBS7yUQHIa&<y&)wcNVoCIF{!QPe$IhMdT2a#CUnEW`ldz%Tx0e2Y zZpHsu?)APNN6&roTJiNoWYEQtn_??_)YWgU_Wr{Rx2^TNY4b+2GEeKboi22*{k|t1 zXFaI5x`WNfp7YYDQ=e?h-W4E}keGm07tH%QSPaQXq0?)Z>l6+xtCMwZWTK(giS^!< zUnQzb|6J&8`t#7*j`JQTI`^A?X9cyx^XW@2S9cg{xg+L!V(YBwPp9c=voCtr&GQ+w zBkKL{?z>{BkXzMEj`MG>2hHr3S>ca<O^+qCOl)!>HS4Cy9lti=X+@!J_I8bs+W0jK zPrrDx!Vy2^WtB@`sa^LrD@wh8v*Jg;b`$#F%N;Rx-j?fhdCfX1yJx*QC&S85TH7q{ zRIgB5J$KV%{EO?~@it>d-n`zSExMn4u9geTbxc3{;n?0Va!w{biz*B&+v-$@Wb4mi zm0G3wC)e}J?lLfPdzksIw6V!H<+5D@R+Ri|GW5qesi(X=jwaL%vj{%jGTHK=uXS*G z{bY;rIl*^l<t*4s1^&kw9ocNE|F!KCFNTG5uUX8UKjkG<amsCy66;maV(`g4>v+Xb z_FK(Ubn=$p5j#oxerB&OS<-8FKpmIU%}Q#n$r%$d!|9FX=7%FAW`(?|AF%fM&Ek@> zM&#W*^jd`MQL|CZUfcK5c()GRdh1@R+P;YPbEkiK%^5y)A9ve&RIKdrZC?DlpLBr{ ztaV1<_i5s&nrU<W5{|5+a$@a0Y6iwn`s-hfVye?$^kRFh`W)MXs`QWFWLR$f{1Gny zti$ptc}l?NBTI_|m(}Z&yra<Zk0ZzJ>D54)?XL$N4t)?4S-s;Wzqo$&O?Rf(Y-;Pd z{L1cv`+XyeC)e7%^itJ}+SZ6iAr~9ewVG4K{;uJGVXFOL`>x*GH$DDpGBKzS`YaPh z`v;ht8g%bOrT_o!Kh7Z9$&w^UcKYA`o=Cop{-0g&Khii}X3_+O+!!M}S(c2`1c7I+ zCx{x8S5SDK$*XEiUXi2P8kH;ZY+Xb_ceB2)pC~E@CQTAWCQUUkbrCg{v6FaSHO?!E z2BxhfnOf7RE|Q`!+GGRIlp*sfqnDb6DMRA~&A1FrkeTagGShw>FEM?@@rq`wjgus% ze>q7NjO)Uw9B*6~PG$RpQzeo7;_v#1Q`xrXIZZWgE1u^i<NEQE%#16t;#fOXWYVaM zjO)V72F1ATd0F6$wehl~8m9>cj;XWmj2o9L2%^lU$&zth1VLlQq#*K~@fa6Wb}k4i zI|nIEWy(+`&bXZg>LWHy;n=(iGfwp?8;?Ih<C(E5a;m|&{Y2g%8<#=Tml>y`sA<M? zOH>UClUL<A<8dmgyvU}BO#g~1d%qG@g}HBtnt_@75@%rULlR9m<8dVkvS8eolAtne zMYj@(v7-eeV;wXt4NMuTBpLUmY@i#5(HxXHPBOk84SVK(B@66$mL-`pE|;c<%#^G0 zOuNXcL_GTbexPug!FYZsyn&fp3NJA2r|@iD6kg?+G9-g+JpL5AB^on8kwn?JtrSTX zjrA%L-NcM_D6(wari!95_Z&r&nDI<^V&1q6m6H_XcA+~RqfHfg!MN>Jkw&0V{ix|B z<94AtB8?&A=L3$$IGd(`G!>+2Y#L_(X&gx7L7D*4*k>9V(7+Dpp!*-AjrhT)0UbQh z!2=!ioWop?2Ri89$=U%O^lZl30Uh+L!rB2H0?;7<9RkonbC4-R06ORygtY@YXza3f zKnFehFm@u)LC+hk9nc{H9dy5E^8y{j6xI&tpl1-)4(O184thRd@=8Dlv4XV&I*3QC z9neAiVC{eo3Fwf44q`lWJsIer`z~t-bkOrDYX@`?k61gPgSf!hkq^P90Ug8-)(+@U zfDU@@Wb*<Y#AMbE=um(TVic2?o(b7BphE>Z$UkE90v#&QK|E*k0v+_6&Daqy*)*U- z13JiGVDkbU8qh({Tx?#TgZwDgj@7}Fk7#Vi)AIqF#_G_YrC2*w2M>5o585CvtAif8 zfE~~Qc+Qi*z|@bPLD)2)gPv(vJGMXc=X=%;=m0z?50lLcc+LZ!lP3!D0v&+o<ivu! zKnM9fj5fe?p8Rgc4)B}@Jm&$=>7g225A+A%IZx{XY+Zm30gNlaa~|-V2R!FR&>w*3 zJm5J`&+<&20nd5ziCH_KLj?T+c+LZ!)1nMp2H-hQ&+SZI0MBW41lR!`v_`>R59k0q zCx?s83wTbeD8LTr06gc(k7DWvc+S(h3Tp>+0G{)-e!%1fJlEG+SUaEt@LXR9Ve^9i zAU}__13CcD$=PM|s$g6Jp7Vg``dTDY7r=8K@SInH4#0CB@SN9x4#0CB@SN8`e*m8A zYbcC1T7PEKfDVoA4*~F;Rt1^s3AC<fT!y|@%BHb8^feyVj@2R1ekIn9)gjP29AgJ~ zE&!ejfae0OEwR@FI)HyJ0G`t#6u2JH0eCI|o(q8I0^qp-{Br^DTmU>5fPb#9$1?2# zcrE~*3xMYW;5of`VaotKrxj>m2gViPxd8lg0q~qwuh}vH&jrA9TIB|L!MFlErv*xo z7t9a9a{>70^x}%W9^knEcrE~*3xMYW;JE;JE&!ejz&{rN&jsM03xMYW;JE;JPK(!U zyU@EQW{d-#3xMYW;JE;JE&%^r06Z4}&*_CDTR*^a0r=+v;JE;JE&%^r06Z6fe=Y!? z>+fusHU&JVw>!WN^atR%0C-L>BEa>)eHZYY-U6|C0nh2p5U>L}0M7-$a{=&N06Z6f ze=Y!?i-6}M;JFBRE&`s5;N80jc&@)sHtur~@LUA`xd?bJ0-lS2=OW-ay?kfu0{n9k z@LU8u7Xi=dZ6GLvz3<W+Le>uOTm(F)mm(l9J3mCga}n^IHXwlO0Udznv{8Z03wSO9 zo{NCzBH+0Q{BsfTTm(E90nbIia}n@d1Uwf3&qd&$(`U)qb^$yWfqzbKia}n`AAsi~ z;5of8W3LBzE&`s5fafCMxd?bJ0-o#dT$%d;;JFBRE&`s5fam&qPNodNa}n@d1Uwf3 z&-Hx|Y#Csl1D=b3=d?M1y&mAX2zV|6o{NCzBH+0QcrF5-)2;-zet_q+D*@Pn{s8{D z2zV|6p409HPzLA^z;oK=z~%)!7Xi=peH2We1D=b3=OW;_2zX8#wLlr{xRL<R=`-?7 zUJ3AA0zB9EE*NX0m+Bym<+*;Ih|SCDkO0qVhY6b(@LYfA&y)dpE&-lPfaen6xxRmh zEd%HP{<#ErE&-m?raQI_z;g-s=Mvz#1bD9RhhuaA|6Bq*mjKTtz;g-kTmn3o0MGRu zn@s%x&n3Wf+EoPdg82b>uJ6}l$^|@^0MGS(mTX?21MpnmgU03sIsnflz;g-kTmn3& zt+8ymfaen6Ic=5%d4UeVa|!UAc7Czf13Z@i&n3Wf+PDO+2l@l>Tmn3o0MBVdCR+yJ zxdeDF0iH{M=Mvz#1b8k1p3^2=P(LuP0M8}BbJ}dmUJvk`cIN>*&>w*3w3!a%1v<cb zyS`7AnMZ)<65zQ6crF2+OMvGR;JE~NE&-lPfaenM&-Fdl#@b}SbJ}DL?AZR00ncgk zCCJP62W=b%cI>#K-IuH#;5qHc1a?3N;JFNVuJ4Ov+6wSo20WL6e=Y-_%Yf%H;JFNV zE(4y+fafycxeRzN1D?~ydbSM!&t<@K+6~L*1w7aH^fK)Xc&_isXYIha0z8)i&t>4B z%Yf%H;JFNVE(4y+fam&NSVjlnxeRzNgY|Y9@LUEw*Z0da<pQ3|fafycIb91}5A+A{ z&uO<a$P4B<;JFNVE(4y+fafycxqcppX&1nA8Sq>NJeL8_Wx#V8@LUEwmjTaZz;hY! zTn0Rs0ncUNpUZ&fGT^xkcrF8;%Yf%H@Xu+7JKG<C=Q8lmWx#V8@LUEwmjTaZz;pfl z3^QH;&t<@K8Sq>NJeL8_Wx#U<@LT~rR{+ly;GZji=L+Dt0@m9Vz;gwxw=00>3gEeZ ze#W?+72uyMfaeO}xdM2u0G=y==L+CCow{J_2Y9Xkp6loM7;S*(3gEc{cuuD{!1dVY zD>~T$?0^oya|Q5R0X$a#&lSLP1@K$}{<#8pt^l4ZfaeO}xdM2u0G=y==lXdjrr!Y1 z6~J=^@LT~rR{+lyz;gxgoKEDh^#eSoQ#!zoz3<Y=9bgB>72vr7{Bw%d!(I>YTmd{+ z0M8Y`a|Q664i<rOfeyfP1@K$}JXZkE6~J=^@LT~rR{+lyz;peKEHfqn&*>x;YX^9) z0G=y==L+Dt0(h>Ud1UGbc&-4RD}d(;;5i)<W6J<MR{+lyz;gxgoKBsAGQhY3JlD?& zGi?BPt^%H`fam)8U*qekfafaUxe9o$0-n<WQBVe}LqC_w)CKTd1w5xi&>%1Se5Ie+ zW6NOsLj^on0nhdG&g}Jo4#0CdB+KRnJXZnF=`bzG3v>XU)1hUM7w7=~IURIm^8%jJ zA!uL+`UCJ>1w7Z!y)*3$cuohcfgR`%z;hMwoKAGI*8@CP0nh2=C&&wQ0G{h-<{7<! z=X8>kwF5j?0nb&yb2@+yt_O4go~yt=R{_sez;hMwTm?K=0nb&ya~1Gh1w2;)&-L@u zOxpvVtAOV!;JFHTt^%H`fai4ZovjPtxqfz?sWafY3V5ypp6h3-nd<?btAOV!;JFHT zt^%H`fafaUxe9o$0-mdY=PKa23V5ypo~wZ8D&V;a{Bu3N3e%>5=PKYi1v_B!>gU;w zucybYVAI(9t_FCn0iJ7s=NjO-9yfq3m%Z<5fae<ExdwQy$4+3%06f=#f35+ZYk=n( z;JF6;a}DrZ13cFN&o#hv4e(q8{<#KtPC-7{b^-pm26(Oko@;>T8sNDG{BsTPTmw9( zU^#4^0natSa}D_C8sNDGc&-7SYk=n(;JF5Pt^xmC13cFN&o#hv4e(q8Jl6ovHNbNX z@LU7y?Hb^@26(Oko>LGFwl4wCHNbNX@SK7sf$Omx)Bw*lz;g}oTmwAU0M9kRa}DrZ z13cFN&o#hv4e(r#ImO)T0M9kRa}DrZ13cFN&nfr`TQ1<a9-oV;AK<wLc&^8nV)Fui z0G{jdhnT#8=NjO-26(Oko@;>T8sNDGc&-7SYb?(xP7$Mn(iomo8q*)&VjLN@0i`kh zL21l$JEbw>iqe?=pfsjGD2<ut90jd0?hi@>I#`~Q9W&1<4d`HbPIf>C%X6{=I#`}_ z2A1cP26V7ICp(~n<vH1b{$P1dcA!64o|7Hu50>W?0UhXIc}{jf2g`G^13FlqlO52( z@|^5|4wmN>J`w0(c}{jf2g`G^13FlqlO52(@|^5|4wmN><_YLvc}{jf2g`G^13Flq zlO52(@|^5|4wmN>nhNM(c}{jf2kW1c9nit@oa}%Omgi&#bg(?9(EmUO%X6{=I#`~Q z9nit@oa}%Omgi&#bg(?<3@pzn4e*2IIoW~xF3WSW1NU8)=VS-&yDZN+1Iu$t1O37B zoa{h<uskO_&>t+%$qw`f%X6}0`-9-faFE~w(%Al>8z8V_`-3JXuw(m!1`M!c`-6nA zc7W#`;5i3)&H<itfaf4S92Eg{0G@Mz=N#ZU2YAi_o^ycb9N;+zcus*O+4ciGr|7Q0 z4)h1$IR|*o0iJV!=N#ZU2Y9Z>_%(i><N(h(z;h1pT#t>*To3S^13c#d&pE(z4)B}< zJm&z<Ilyxc@SFoYr-06^Ho$WZ@SFoY=K#+s@-HX@%n!hGiVzI)g8l$J=K#++z;h1p zoC7@P0M9wVa}MyF13c#d&pE(z4)B}<Jm&z<Ilyxc@SFoY*JHLa;~wyw13agoylh^; za}MyFqCJDWfFFS89N@VgOPSFDc+LTyQvg{uFW@-`c+LTybAaa@;5i3)&H<iNaBEOM zc7A~PaD)_==REMwL3}vM%k~F|4@Y+FJm&$=L3}vM3v>XUgZOZSM)tWxk9Tc64tT(G z9{A@VJ{*<7jw>GU9K?qsOta$(#D^n0pabxn2RsMy;plpxKLF45*z`<W0iN@K=O8{D zJ%Ruofag5mIS+Ua;=@rHpg#c5dBAfJAC4Z8!2AF_=K;?_d^oxu%RxPcIMdF6=RDv! z4|vW4o`d*sdeDBhT)=Y>AMRWHai-3|Kj#6@^|<?NUNFxA&p~`R`m_Yl0eH>>o>Sy~ zwl09@Jm5Kq4@Y$YIsnf>d^mcf208%GdBAfX@EpX4qcXt!06eFUH?Zvjcn;#jaXjET z4|opZ!%<$)AAsi|J{;u*;|lN`#D}BLO@Mh0cn;#jQC`47z;h5Ej`D*306gb`e-7fq zk!!{30P*3-j^!YIU4rRz5Fd{6viB<xACBzU{s8ge$n|462;#$$9Xmfjd^oZLIsnf> zd^pO>_J;s?u7AVB_#Ou0!;uRM`UCJB#D}B2KnL*8L3}vM3v>XUgZOadVuStw{yB&b zM|r`x0z4N0&jsM0gZOY%1{ha>=K}E0L3}t`J^<qi@LT}?IfxHO*8}qd@EpX4qr6~T z0iJ{SaJ1wBbO4@%_;8e$z3+nfaAXI@72r9D4@b){U|a$J9K?sCykJ}bo(q8IAU+&j z59k2?IfxHOOGZEk@XtYfILZrj0G@;RaFiE}E5LIQACB^ZaRqn|;=|E$7#LT8=K@%7 zr?3C8_esEW5Fd`p1@j#69K?sC<vMWR1w0pke=Y!?gZOY%2IvpKa}Xbn^0NH_;=^$u zJ{+a7{Q=^`ksZqq5Fd{0SREif9NDq`0pi2a5-2-AKzul|13G|zE&`r|_;7SRpabw6 z#D}B2pg(|rP9Mx-#xsZyM@zo!JQo4aL3}vM3v>XUi-6}M@XtYfI9h%NI)Hx;;=@s1 zFs=a4L3}vM%iecEd^oZL{Q-Cm;=|E0Iv7`g=O8{D<z??zAU+(~0Uf|Ur>~2#;|1^> z#D}A$f1m^K9K?sCyg&!=&p~`R$_wT>cz+J!!_lh=Fs^`q4&uX6UNEiz&p~`R$_x4f z@LUA`x&BQ@<7asgAC6wJfc^kH2l3%3FX#`za}Xbn@`C;VJO}aN=oJv?55RK~@SMI{ zXWTB|zO?vVThU8m{a*LoH`gdlKT~a#Mz2GSzL7>RCUjrzdpkM_O5?>SP14`{8K>#| zHBQsd6MvUR3p_l{8RIlP{=s)?<mBn`k&M&yvnWPsw6)tv2RVa!3~XaN{oL&LX%u0B z`olO)-;ZvTM#q?q>qij`=)Kzab}DU!FwRS9G@gy@XkFB(T!N7v2k0Mm;iG*=1o@9P zH+6P)>OEqT|F_S)I(deKgxgV0J5Q(1!2uz5`fL4fKimg6EA3Tx#kGU0&_R(rTt#<R z4@q^S4+$zBuJpEEHn{v}i$QiSF6O3V!hJ`F|LyCt6b6+}JDHm{Y0{yGhq>wBKRIhK oH~s%qKc}9f{m0q;ty)grp8f&7!$;9iz3q&vPNAD*?ysu<A1ve3wg3PC diff --git a/doc/ChoosingSpecificDevicesForExecution.md b/doc/ChoosingSpecificDevicesForExecution.md deleted file mode 100644 index 62b4ce08..00000000 --- a/doc/ChoosingSpecificDevicesForExecution.md +++ /dev/null @@ -1,58 +0,0 @@ -#ChoosingSpecificDevicesForExecution -*Using the new Device API's to choose Kernel execution on a specific device. Updated Sep 18, 2012 by frost.g...@gmail.com* - -Previously Aparapi chose the first GPU device when Kernel.execute() was called. This make it easy to execute simple Kernels, but was problematic when users wished finer control over which device should be chosen. Especially when the first device may be unsuitable. We recently added new classes and API's to allow the developer to specify exactly which device we intend to target. - -A new Device class has been added. This allows the user to select a specific device; either by calling a helper method Device.firstGPU() or Device.best(). Or by allowing the user to iterate through all devices and choose one based on some other criteria (capabilities? vendor name?). - -So selecting the 'best' (most performant) device could be achieved using. - - Device device = Device.best(); - -Alternatively if I wanted the first AMD GPU device I might use:- - - Device chosen=null; - for (Device device: devices.getAll()){ - if (device.getVendor().contains("AMD") && device.isGPU()){ - chosen = device; - break; - } - } - -A Device can be queried `(isGPU(), isOpenCL(), isGroup(), isJava(), getOpenCLPlatform(), getMaxMemory(), getLocalSizes())` to yield it's characteristics. - -To execute on a specific device we must use the device to create our range. - - Range range = device.createRange2D(width, height); - -This allows the Range to be created with knowledge of the underlying device. So for example device.createRange3D(1024, 1024, 1024, 16, 16, 16) will fail if the device does not allow a local size of (16x16x16). - -A range created using a device method captures the device which created it. The range instance has a device field which is set by the device which creates it. - -It's as if we had this code - - Range range = Range.create(width, height); - range.setDevice(device); - -So the Range locks the device that it can be used with. - -Now when we have a Kernel. - - Kernel kernel = new Kernel(){ - @Override public void run(){ - ... - } - } - -And we then use a device created range. - - Device device = Device.firstGPU(); - Kernel kernel = new Kernel(){ - @Override public void run(){ - // uses input[]; - } - }; - range = device.createRange2D(1024, 1024); - kernel.execute(range); - -We have forced execution on the first GPU. diff --git a/doc/ContributionGuide.md b/doc/ContributionGuide.md deleted file mode 100644 index c3f8d219..00000000 --- a/doc/ContributionGuide.md +++ /dev/null @@ -1,48 +0,0 @@ -#ContributionGuide -*How to contribute (bug fix or features). Updated Sep 13, 2011 by frost.g...@gmail.com* -##Contribution Guide -We welcome all contributions to add new features to Aparapi and make Aparapi more useful and high performing. These guidelines are intended to describe and streamline the contribution process. - -A patch can be a bug fix, a new feature, a new JUnit test case or a documentation change. - -Only members of the commit team are able to commit changes to the SVN repository. - -Only patches submitted through the process described below will be committed to SVN. - -The commit team will only applying patches which are submitted via the Aparapi project’s issue list. - -http://code.google.com/p/aparapi/issues/list -The current commit team members are: -* Eric Caspole (AMD) -* Tom Deneau (AMD) -* Gary Frost (AMD) - -If you would like to be considered for inclusion in the commit team, please send an email to anyone on the team and let them know. - -##Submitting a patch -If the bug or enhancement does not yet appear in the issues list, please take the time add a new issue. - -Be sure to include sufficient detail to explain and recreate the bug or to justify the proposed enhancement. - -Ensure that your patch/fix does not regress any of existing JUnit tests. The UnitTestGuide wiki page describes how to run the various Aparapi unit tests. - -Ensure that your patch does not break any sample or example. Create a patch file (using SVN’s diff command) against a recently updated trunk, do not submit patches against branches. Name your patch file using the following filename convention - - aparapi-<issue id>-<trunk revision id>.patch -The following shows the sequence for creating a patch for issue number 1234. - - $ cd aparapi-trunk - $ svn update - At revision 10339 - $ svn -diff > aparapi-1234-10339.patch - -Attach your patch file to the issue via Issue List. - -## Attribution of contributions -We want to correctly attribute all contributions and will maintain a CREDITS.txt file at the head of the trunk. We discourage including attribution as comments in the code, instead we intend to let the history feature of SVN be the primary method for tracking attributions. When patch is committed the commit team member will update the CREDITS.txt file and apply your patch, then will include your name (and email if you desire) as part of the SVN commit history. - -## Contributions made under a different license than the existing BSD derived license -We cannot accept contributions or patches which are subject to other licenses. - -Attribution - diff --git a/doc/ConvertingBytecodeToOpenCL.md b/doc/ConvertingBytecodeToOpenCL.md deleted file mode 100644 index e839c0d5..00000000 --- a/doc/ConvertingBytecodeToOpenCL.md +++ /dev/null @@ -1,282 +0,0 @@ -#ConvertingBytecodeToOpenCL - -*How Aparapi converts bytecode to OpenCL Updated Aug 23, 2012 by frost.g...@gmail.com* - -##Introduction - -[try this](ByteCode2OpenCL.pdf) - -One of the unique Aparapi features is it's ability to convert Java bytecode to OpenCL automatically. - -In this page we will try to describe the process used to perform this conversion. If you are unfamiliar with bytecode consider visiting this page WhatIsBytecode. - -The command - - javac Source.java - -Will compile the java source file Source.java to Source.class - -The classfile format is well documented here and we will not go into too much detail here, however it should be known that Aparapi must parse the classfile of each Kernel to extract the bytecode for the Kernel.run() and any method reachable from Kernel.run(). - -Lets start with a simple Kernel. - - import com.syncleus.aparapi.Kernel; - - public class Squarer extends Kernel{ - int[] in; - int[] out; - @Override public void run(){ - int gid = getGlobalId(0); - out[gid] = in[gid] * in[gid]; - } - } - -We will compile this - - javac -g -cp path/to/aparapi/aparapi.jar Squarer.java - -and then we can look at the bytecode using javap - - javap -c -classpath path/to/aparapi/aparapi.jar;. Squarer - -Compiled from "Squarer.java" - - public class Squarer extends com.syncleus.aparapi.Kernel - SourceFile: "Squarer.java" - minor version: 0 - major version: 50 - Constant pool: - const #1 = Method #6.#17; // com/amd/aparapi/Kernel."<init>":()V - const #2 = Method #5.#18; // Squarer.getGlobalId:(I)I - const #3 = Field #5.#19; // Squarer.out:[I - const #4 = Field #5.#20; // Squarer.in:[I - const #5 = class #21; // Squarer - const #6 = class #22; // com/amd/aparapi/Kernel - const #7 = Asciz in; - const #8 = Asciz [I; - const #9 = Asciz out; - const #10 = Asciz <init>; - const #11 = Asciz ()V; - const #12 = Asciz Code; - const #13 = Asciz LineNumberTable; - const #14 = Asciz run; - const #15 = Asciz SourceFile; - const #16 = Asciz Squarer.java; - const #17 = NameAndType #10:#11;// "<init>":()V - const #18 = NameAndType #23:#24;// getGlobalId:(I)I - const #19 = NameAndType #9:#8;// out:[I - const #20 = NameAndType #7:#8;// in:[I - const #21 = Asciz Squarer; - const #22 = Asciz com/amd/aparapi/Kernel; - const #23 = Asciz getGlobalId; - const #24 = Asciz (I)I; - - { - int[] in; - - int[] out; - - public Squarer(); - Code: - Stack=1, Locals=1, Args_size=1 - 0: aload_0 - 1: invokespecial #1; //Method com/amd/aparapi/Kernel."<init>":()V - 4: return - - - public void run(); - Code: - Stack=5, Locals=2, Args_size=1 - 0: aload_0 - 1: iconst_0 - 2: invokevirtual #2; //Method getGlobalId:(I)I - 5: istore_1 - 6: aload_0 - 7: getfield #3; //Field out:[I - 10: iload_1 - 11: aload_0 - 12: getfield #4; //Field in:[I - 15: iload_1 - 16: iaload - 17: aload_0 - 18: getfield #4; //Field in:[I - 21: iload_1 - 22: iaload - 23: imul - 24: iastore - 25: return - } - -Here we see constant pool of the class and the disassembled bytecode of the default constructor Squarer() and the Squarer.run() method. - -The constant pool is a table of constant values that can be accessed from the bytecode of any methods from within this class. Some of the constants are String literals defined within the source (or literals used to name classes, fields, methods, variables or signatures), other slots represent Classes, Methods, Fields or Type signatures. These later constant pool entries cross-reference other constant pool entries to describe higher level artifact. - -For example constant pool entry #1 is - - const #1 = Method #6.#17; // com/amd/aparapi/Kernel."<init>":()V - -So entry #1 defines a method. The class containing the method is defined in constant pool entry #6. So lets look at constant pool entry #6. - - const #1 = Method #6.#17; // com/amd/aparapi/Kernel."<init>":()V - - const #6 = class #22; // com/amd/aparapi/Kernel - -At constant pool entry #6 we find a class definition which refers to entry #22 - - const #1 = Method #6.#17; // com/amd/aparapi/Kernel."<init>":()V - - const #6 = class #22; // com/amd/aparapi/Kernel - - const #22 = Asciz com/amd/aparapi/Kernel; - -Which just contains the String (Ascii) name of the class. - -Looking back at entry #1 again, we note that the Method also references entry #17 which contains a NameAndType entry for determining the method name and the signature. - - const #1 = Method #6.#17; // com/amd/aparapi/Kernel."<init>":()V - - const #6 = class #22; // com/amd/aparapi/Kernel - - - const #17 = NameAndType #10:#11;// "<init>":()V - - const #22 = Asciz com/amd/aparapi/Kernel; - -Entry #17's "NameAndType" references #10 for the method name. - - const #1 = Method #6.#17; // com/amd/aparapi/Kernel."<init>":()V - - const #6 = class #22; // com/amd/aparapi/Kernel - - const #10 = Asciz <init>; - - const #17 = NameAndType #10:#11;// "<init>":()V - - const #22 = Asciz com/amd/aparapi/Kernel; - -And then references #11 to get the signature. - - const #1 = Method #6.#17; // com/amd/aparapi/Kernel."<init>":()V - - const #6 = class #22; // com/amd/aparapi/Kernel - - const #10 = Asciz <init>; - - const #11 = Asciz ()V; - - const #17 = NameAndType #10:#11;// "<init>":()V - - const #22 = Asciz com/amd/aparapi/Kernel; - -So from constant pool #1 we ended up using slots 1,6,10,11,17 and 22 to fully resolve the method. - -This looks like a lot of work, however by breaking method and field references up like this, allows the various slots to be reused by other field/method descriptions. - -So when we see disassembled bytecode which references a constantpool slot the actual slot # (2 in the example below) will appear after the bytecode for invokevirtual. - - 2: invokevirtual #2; Method getGlobalId:(I)I - -Bytecode is basically able to access three things - -1. Constant pool entries -2. Variable slots -3. Stack operands - -Instructions are able to pop operands from the stack, push operands to the stack, load values from variable slots (to the stack), store values (from the stack) to variable slots, store values from accessed fields (to the stack) and call methods (popping args from the stack). - -Some instructions can only handle specific types (int, float, double, and object instances - arrays are special forms of objects) and usually the first character of the instruction helps determine which type the instruction acts upon. So imul would be a multiply instruction that operates on integers, fmul would multiply two floats, dmul for doubles. Instructions that begin with 'a' operate on object instances. - -So lets look at the first instruction. - - 0: aload_0 - -This instruction loads an object (a is the first character) from variable slot 0 (we'll come back to the variable slots in a moment) and pushes it on the stack. - -Variables are held in 'slots' that are reserved at compiled time. - -Consider this static method. - - static int squareMe(int value){ - value += value; - return(value); - } - -This method requires one variable slot. At any one time there is only one variable that is live, it just happens to be an argument to the method. - -The following method also contains one slot. - - static int squareMe(){ - int value=4; - value += value; - return(value); - } - -Here we need two slots - - static int squareMe(int arg){ - int value=arg*arg; - return(value); - } - -Suprisingly the following also only requires two slots. - - static int squareMe(int arg){ - { - int temp = arg*arg; - } - int value=arg*arg; - return(value); - } - -Note that in the above example the temp variable loses scope before the local variable value is used. So only two slots are required. Both temp and value can share a slot. - -If we have an instance method we always require one extra slot (always slot 0) for the this reference. - -So - - int squareMe(int arg){ - int value=arg*arg; - return(value); - } - -Requires three slots. - -Anyway back to our bytecode - - 0: aload_0 - -This loads the object instance in slot 0 (this) and pushes it on the stack. - -Next we have - - 1: iconst_0 - -Which pushes the int constant 0 on the stack. So the stack contains {this,0} - -Next we have - - 2: invokevirtual #2; //Method getGlobalId:(I)I - -This is the bytecode for calling a method. Basically the instruction itself references the constant pool (we'll come back to this ;) ) and pulls the method description in `constantPool2` which happens to be the description for a method called `getGlobalId()` which takes an integer and returns an `int`. - -So the VM will pop the top value `(int - const 0)` as the method arg, and then will pop an object reference (this!) and will call the method `this.getGlobalId(0)` and will push the result (an int) back on the stack. - -So our stack which contains `{this,0}` now contains the result of this.getGlobalId(0), lets assume it is {0}. We describe this invoke instruction as consuming two operands from the stack and producing one. - -Before we start executing our stack is empty {}, the slots are initialized with 'this' (if an instance method) and any arguments passed to the method. - - 0 1 - slots=[this, ? ] stack={} - - 0 1 - 0: aload_0 slots=[this, ? ] stack={this} - 0 1 - 1: iconst_0 slots=[this, ? ] stack={this, 0} - 0 1 - 2: invokevirtual #2; Method getGlobalId:(I)I slots=[this, ? ] stack={result of this.getGlobalId(0) lets say 0} - - 5: istore_1 slots=[this, 0 ] stack={} - - 6: aload_0 slots=[this, 0 ] stack={this} - - 7: getfield #3; //Field out:[I diff --git a/doc/DevelopersGuide.md b/doc/DevelopersGuide.md deleted file mode 100644 index 350226f8..00000000 --- a/doc/DevelopersGuide.md +++ /dev/null @@ -1,29 +0,0 @@ -#DevelopersGuide -*Aparapi developers guide. Updated Sep 13, 2011 by frost.g...@gmail.com* -##Developer Guide -Although the vast majority of the Aparapi code is Java® we do include some to C++ code (accessed from Javaâ„¢ via JNI) to interface with existing OpenCLâ„¢ C/C++ headers and libraries. Therefore to build Aparapi for a given platform (Microsoft® Windows® 32- or 64- bit and or Linux® 32- or 64- bit) we do require developers to setup a build environment containing both Java® and C++ development tools. In this documentation we will describe the tools required to build Aparapi for the various supported platforms. - -##Supported Platforms -In general Aparapi can be used on any platform currently supported by AMD APP SDK v2.5 or later. Please check the AMD APP SDK site for details on supported platforms and installation help. - -[http://developer.amd.com/sdks/amdappsdk/downloads/pages/default.aspx](http://developer.amd.com/sdks/amdappsdk/downloads/pages/default.aspx) - -[http://developer.amd.com/sdks/AMDAPPSDK/assets/AMD_APP_SDK_Installation_Notes.pdf](http://developer.amd.com/sdks/amdappsdk/downloads/pages/default.aspx) - -* 32-bit Microsoft® Windows® 7 -* 32-bit Microsoft® Windows Vista® -* 64-bit Microsoft® Windows® 7 -* 64-bit Microsoft® Windows Vista® -* 32-bit Linux® -* 64-bit Linux® - -Clearly we will also depend on platform specific Oracle® Java® JDK 6 components and C++ compilers along with some platform neutral tools (such as SVN, ant and Junit) . - -## Platform Specific Developer Guides -We have broken the Developer Guide into two separate docs. One for Linux® (32- and 64- bit) and another for Microsoft® Windows® (32- and 64- bit). Please follow the appropriate link below. - -[DevelopersGuideLinux](DevelopersGuideLinux.md) - -[DevelopersGuideWindows](DevelopersGuideWindows.md) - -Attribution \ No newline at end of file diff --git a/doc/DevelopersGuideLinux.md b/doc/DevelopersGuideLinux.md deleted file mode 100644 index 3a8e7786..00000000 --- a/doc/DevelopersGuideLinux.md +++ /dev/null @@ -1,181 +0,0 @@ -#DevelopersGuideLinux - -*Developer guide for Linux. Updated Aug 23, 2012 by frost.g...@gmail.com* - -#Aparapi Developer Guide: Linux® 32- and 64-bit platforms - -##SVN Client - -To contribute to Aparapi you will need an SVN client to access the latest source code. This page lists a number of SVN client providers [http://subversion.apache.org/packages.html](http://subversion.apache.org/packages.html) Also you might want to consider one of the SVN-based plugins for Eclipse®. http://wiki.eclipse.org/SVN_Howto -OpenJDK or Oracle® Java JDK install (JDK1.6 or later) - -http://OpenJDK.java.net http://www.oracle.com/technetwork/java/javase/downloads/index.html - -Many Linux® distributions come with Java JDK pre-installed or available as an optional install component. Sometimes the version that comes pre-installed is GCJ (http://gcc.gnu.org/java/). For Aparapi you will need to ensure that you have a copy of the JDK from either the OpenJDK project or from Oracle®. - -The Oracle® J2SE JDK site contains downloads and documentation showing how to install for various Linux distributions. - -http://www.oracle.com/technetwork/java/javase/index-137561.html - -Here is an example for my Ubuntu system: - - $ sudo apt-get install sun-java6-jdk sun-java6-jre - -When the installation is complete, ensure that your JAVA_HOME environment variable is pointing to the install location (such as /usr/lib/jvm/java-6-sun-1.6.0.26). - - $ export JAVA_HOME=/usr/lib/jvm/java-6-sun-1.6.0.26 - -You should also add ${JAVA_HOME}/bin to your path. - - $ export PATH=$PATH}:${JAVA_HOME}/bin - -Double-check your path and ensure that there is not another JDK/JRE in your path. - - $ java -version - java version "1.6.0_26" - Java(TM) SE Runtime Environment (build 1.6.0_26-b03) - Java HotSpot(TM) Client VM (build 20.1-b02, mixed mode, sharing) - -##Apache Ant - -Apache Ant® can be downloaded from the apache project page http://ant.apache.org - -Aparapi has been tested using 1.7.1 version of Ant. It may work with earlier versions, but if you encounter issues we recommend updating to at least 1.7.1 before reporting issues. Here is an example for installing Ant on Ubuntu : - - $ apt-get install ant - -Ensure that ANT_HOME is set to the install dir. - - $ export ANT_HOME=/usr/local/ant - -Add `${ANT_HOME}/bin` to your path. - - $ export PATH=$PATH}:${ANT_HOME}/bin - -Double-check the installation and environment vars. - - ant -version - Apache Ant version 1.7.1 compiled ... - -##AMD APP SDK - -To compile Aparapi JNI code you need access to OpenCL headers and libraries. The instructions below assume that there is an available AMD APP SDK v2.5® (or later) installed and that your platform supports the required device drivers for your GPU card. Install the Catalyst driver first, and then install AMD APP SDK v2.5® or later. - -See http://developer.amd.com/sdks/AMDAPPSDK/pages/DriverCompatibility.aspx for help locating the appropriate driver for your AMD card. Make sure you install the catalyst driver that includes the OpenCLâ„¢ runtime components. - - The OpenCLâ„¢ runtime is required for executing Aparapi or OpenCLâ„¢ on your GPU or GPU, but it is not necessary for building/compiling Aparapi. - The AMD APP SDK v2.5 is necessary for compiling the Aparapi JNI code against OpenCLâ„¢ APIs. - -Once you have a suitable driver, download a copy of AMD APP SDK v2.5 or later from http://developer.amd.com/sdks/AMDAPPSDK/downloads/Pages/default.aspx. - -Download the installation guide for Microsoft® Windows® (and Linux®) from http://developer.amd.com/sdks/AMDAPPSDK/assets/AMD_APP_SDK_Installation_Notes.pdf. Note that if you updating from a previous version of AMD APP SDK (or its predecessor ATI STREAM SDK), first uninstall the previous version. - -Download the release notes from: http://developer.amd.com/sdks/AMDAPPSDK/assets/AMD_APP_SDK_Release_Notes_Developer.pdf -GCC compiler (G++) for your Linux 32-bit or 64-bit platform - -Aparapi has been tested with 32-bit and 64-bit Linux 4.1.2 or later GCC compilers. - -Ensure you have the g++ toolchain installed: - - $ g++ - no input files - -##JUnit - -The initial Open Source drop includes a suite of JUnit tests for validating bytecode to OpenCLâ„¢ code generation. These tests require JUnit 4. - -Download JUnit from http://www.junit.org/ and note the location of your JUnit installation; the location is needed to configure the test\codegen\build.xml file. Please see the UnitTestGuide page. - -##Eclipse - -Eclipse is not required to build Aparapi; however, the developers of Aparapi do use Eclipse and have made the Eclipse artifacts (.classpath and .project files) available so that projects can be imported into Eclipse. The com.syncleus.aparapi.jni subproject (containing C++ JNI source) should be imported as a resource project. We do not recommend importing com.syncleus.aparapi.jni as a CDT project, and we do not recommend trying to configure a CDT build, the existing build.xml files has been customized for multiplatform C++ compilations. - -##Building - -Check out the Aparapi SVN trunk: - - $ svn checkout http://aparapi.googlecode.com/svn/trunk aparapi - -Checkout provides the following: - - aparapi/ - com.syncleus.aparapi/ - src/java/com.syncleus.aparapi/*.java - build.xml - com.syncleus.aparapi.jni/ - src/cpp/*.cpp - src/cpp/*.h - build.xml - test/ - codegen/ - src/java/ - com.syncleus.aparapi/ - com.syncleus.aparapi.test/ - build.xml - runtime/ - src/java/ - com.syncleus.aparapi/ - com.syncleus.aparapi.test/ - build.xml - samples/ - mandel - src/java/com.syncleus.aparapi.samples.mandel/*.java - build.xml - mandel.sh - mandel.bat - squares/ - src/java/com.syncleus.aparapi.samples.squares/*.java - build.xml - squares.sh - squares.bat - convolution/ - src/java/com.syncleus.aparapi.samples.convolution/*.java - build.xml - conv.sh - conv.bat - examples/ - nbody/ - src/java/com.syncleus.aparapi.nbody/ - build.xml - nbody.sh - nbody.bat - build.xml - README.txt - LICENSE.txt - CREDITS.txt - -##Sub Directories - -The com.syncleus.aparapi and com.syncleus.aparapi.jni subdirectories contain the source for building and using Aparapi. - -The ant build.xml file, in each folder accept common 'clean' and 'build' targets. You can use the build.xml file at the root of the tree for two purposes: - - To initiate a build com.syncleus.aparapi of com.syncleus.aparapi.jni. - To create a binary ‘distribution’ directory and zip file. This zip file is same as those available from the download section of the code.google.com/p/aparapi site. - -##Preparing for your first build - -Edit com.syncleus.aparapi.jni\build.properties and ensure that the properties are valid for your platform. - -View the comments in the properties file for assistance. The build.xml ant file contains some simple checks to help diagnose simple configuration errors in case something gets messed up. - -For Linux you should not need to edit build.xml unless your APP SDK install location differs from the default. The default for Linux® is /opt/AMDAPP - - amd.app.sdk.dir=/opt/AMDAPP - -Perform a build from the root directory using the following command: - - $ ant clean build dist - -Once your build has completed you should see an additional subdirectory named dist_linux_x86 or dist_linux_x86_64 (depending on the bitness of your platform). - -The distribution directory contains: - - aparapi.jar containing Aparapi classes for all platforms. - the shared library for your platform (aparapi_x86.so or aparapi_x86_64.so). - an /api subdirectory containing the 'public' javadoc for Aparapi. - a samples directory containing the source and binaries for the mandel and squares sample projects. - -The root directory also contains either dist_linux_x86_64.zip or dist_linux_x86.zip containing a compressed archive of the distribution tree. - -[Attribution](Attribution.md) diff --git a/doc/DevelopersGuideWindows.md b/doc/DevelopersGuideWindows.md deleted file mode 100644 index d03e70f7..00000000 --- a/doc/DevelopersGuideWindows.md +++ /dev/null @@ -1,187 +0,0 @@ -#DevelopersGuideWindows -*Developers guide for Windows. Updated Aug 23, 2012 by frost.g...@gmail.com* - -##Aparapi Developer Guide: Microsoft® Windows® 32- and 64-bit platforms - -##SVN Client - -To contribute to Aparapi you will need an SVN client to access the latest source code. - -This page lists a number of SVN client providers http://subversion.apache.org/packages.html - -For Microsoft Windows® users TortoiseSVN incorporates SVN functionality directly into Windows Explorer view and is often preferred http://tortoisesvn.tigris.org/ - -Also you might want to consider one of the SVN-based plugins for Eclipse. http://wiki.eclipse.org/SVN_Howto -Oracle® Java JDK install (JDK1.6 or later) - -http://www.oracle.com/technetwork/java/javase/downloads/index.html - -The Oracle® J2SE JDK site contains downloads and documentation showing how to install for various platforms. http://www.oracle.com/technetwork/java/javase/index-137561.html - -When the installation is complete, ensure that your JAVA_HOME environment variable is pointing to the install location (such as c:\progra~1\java\jdk1.6.0_26)and that %JAVA_HOME%\bin is in your path. - - C:> set JAVA_HOME=c:\progra~1\java\jdk1.6.0_26 - C:> set PATH=%PATH%;%JAVA_HOME%\bin - -Note that we tend to use the 8.3 form of Microsoft® Windows® path variables this avoids us having to quote paths in scripts. - -Double check your path and ensure that there is not another JDK/JRE in your path. - - C:> java -version - java version "1.6.0_26" - Java(TM) SE Runtime Environment (build 1.6.0_26-b03) - Java HotSpot(TM) Client VM (build 20.1-b02, mixed mode, sharing) - -##Apache Ant - -Apache Antâ„¢ can be downloaded from the apache project page http://ant.apache.org - -Aparapi has been tested using 1.7.1 version of Ant, it may well work with earlier versions, but if you encounter issues we recommend updating to at least 1.7.1 before reporting issues. Installation is straightforward, just unzip the ant.zip file and ensure that your ANT_HOME}} environment variable is pointing to your ANT installation and that `{{{%ANT_HOME%\bin` is in your path. - - C:> set ANT_HOME=C:\progra~1\apache\apache-ant-1.8.1 - C:> set PATH=%PATH%;%ANT_HOME%\bin - -Double check the installation and environment vars. - - ant -version - Apache Ant version 1.7.1 compiled .. - -##AMD APP SDK - -To compile Aparapi JNI code you need access to OpenCL headers and libraries. The instructions below assume that there is an available AMD APP SDK v2.5 (or later) installed and that your platform supports the required device drivers for your GPU card. Install the Catalyst driver first, and then install AMD APP SDK v2.5. - -See http://developer.amd.com/sdks/AMDAPPSDK/pages/DriverCompatibility.aspx for help locating the appropriate driver for your AMD card. Be sure you obtain the catalyst driver that includes the OpenCLâ„¢ runtime components. - - The OpenCLâ„¢ runtime is required for executing Aparapi or OpenCLâ„¢ on your CPU or GPU, but it is not necessary for building/compiling Aparapi. - The AMD APP SDK v2.5 is necessary for compiling the Aparapi JNI code against OpenCLâ„¢ APIs. - -Once you have a suitable driver, download a copy of AMD APP SDK v2.5 from http://developer.amd.com/sdks/AMDAPPSDK/downloads/Pages/default.aspx. - -Download the installation guide for Microsoft® Windows® (and Linux®) from http://developer.amd.com/sdks/AMDAPPSDK/assets/AMD_APP_SDK_Installation_Notes.pdf. Note that if you updating from a previous version of AMD APP SDK (or its predecessor ATI STREAM SDK), first uninstall the previous version. The release notes are available here http://developer.amd.com/sdks/AMDAPPSDK/assets/AMD_APP_SDK_Release_Notes_Developer.pdf -##A C++ compiler - -For Microsoft® Windows® platforms the JNI build can support either Microsoft® Visual Studio® 2008, 2009 or 2010 compiler or MinGW (Minimal GNU for Windows) from GNU. Now that Visual Studio express is available for free, we would recommend using Visual studio. If you wish to use another compiler then you will have to tweak the com.syncleus.aparapi.jni/build.xml file to get your compiler to work. -Microsoft® Visual Studio® 2008/2010 for 32-bit or 64-bit platforms - -Aparapi has been tested with various versions of Microsoft® Visual Studio® 2008, 2009 and 2010 including Enterprise, Professional and Express editions, if you encounter any version specific issues please let us know so we can address it and/or update this documentation. - -If you already have Microsoft® Visual Studio® installed you will need to know the location of the compiler and the SDK. These can vary depending upon the platform and version you are using. Typically an install results in a Visual Studio install, such as. c:\Program Files\Microsoft Visual Studio 9.0 - -And an SDK, such as. c:\Program Files\Microsoft SDKs\Windows\v6.0A - -Note the location of both of these as this information will be needed to configure the com.syncleus.aparapi.jni\build.property file (later). -For Visual Studio Express 64 bit users - -Visual studio express does not include the 64 bit compiler or libraries. You will need to also install the SDK from Microsoft. this link should help -##MinGW – (MINimum Gnu for Windows) - -As an alternative to installing Microsoft® Visual Studio® we have included support for the MinGW tool chain and Aparapi has been (minimally) tested with this compiler. - -MingGW can be downloaded from http://www.mingw.org/ by following the instructions on their Getting Started page. We recommend installing the mingw-get-inst msi installer and just taking the defaults. - -Note the install location as this information will be needed to edit build.xml file and uncomment the line referencing the mingw instal dir. Typically the install location is - - C:\MinGW - -After a successful build, you will need to ensure that the bin sub directory is in your path before you attempting to run an Aparapi enabled application built using MinGW. MinGW apps require access to MingGW/GNU C++/C runtime at execution time. - - set PATH=%PATH%;C:\MinGW\bin - -This is one reason the binary distribution is ''not'' built using mingw. -##JUnit - -The initial Open Source drop includes a suite of JUnit tests for validating bytecode to OpenCL code generation. These tests require JUnit 4. - -Download JUnit from http://www.junit.org/ - -Note the location of your JUnit installation; the location is needed to configure the test\codegen\build.xml file. See the UnitTestGuide page for howto configure the JUnit build. -##Eclipse - -Eclipse is not required to build Aparapi, however the developers of Aparapi do use Eclipse and have made the Eclipse artifacts (.classpath and .project files) available so that projects can be imported into Eclipse. - -The com.syncleus.aparapi.jni subproject (containing C++ JNI source) should be imported as a resource project, we do not recommend importing com.syncleus.aparapi.jni as a CDT project, and we do not recommend trying to configure a CDT build, the existing build.xml files has been customized for multiplatform C++ compilations. -##Building - -Check out the Aparapi SVN trunk: - -svn checkout http://aparapi.googlecode.com/svn/trunk - -You will end up with the following files/directories - - aparapi/ - com.syncleus.aparapi/ - src/java/com.syncleus.aparapi/*.java - build.xml - com.syncleus.aparapi.jni/ - src/cpp/*.cpp - src/cpp/*.h - build.xml - test/ - codegen/ - src/java/ - com.syncleus.aparapi/ - com.syncleus.aparapi.test/ - build.xml - runtime/ - src/java/ - com.syncleus.aparapi/ - com.syncleus.aparapi.test/ - build.xml - samples/ - mandel - src/java/com.syncleus.aparapi.samples.mandel/*.java - build.xml - mandel.sh - mandel.bat - squares/ - src/java/com.syncleus.aparapi.samples.squares/*.java - build.xml - squares.sh - squares.bat - convolution/ - src/java/com.syncleus.aparapi.samples.convolution/*.java - build.xml - conv.sh - conv.bat - examples/ - nbody/ - src/java/com.syncleus.aparapi.nbody/ - build.xml - nbody.sh - nbody.bat - build.xml - README.txt - LICENSE.txt - CREDITS.txt - -##Sub Directories - -The com.syncleus.aparapi and com.syncleus.aparapi.jni subdirectories contain the source for building and using Aparapi. - -The ant build.xml file, in each folder accept 'clean' and 'build' targets. - -Use the build.xml file at the root of the tree for two purposes: - - To initiate a build of com.syncleus.aparapi and com.syncleus.aparapi.jni. - To create a binary distribution directory and zip file. This zip file is same as those available from the download section of the code.google.com/p/aparapi site. - -##Preparing for your first build - -You should only need to edit com.syncleus.aparapi.jni\build.xml file if you wish to use mingw or if you Visual Studio or gcc compiler is in an unusual place. - -Perform a build from the root directory using the following command: - - $ ant clean dist - -The jni build will perform some simple tests to check the configuration properties and hopefully also guide you to a possible solution. - -Once your build has completed you should see an additional subdirectory named dist_windows_x86 or dist_windows_x86_64 (depending upon your platform type). - - aparapi.jar containing Aparapi classes for all platforms. - the shared library for your platform (aparapi_x86.dll or aparapi_x86_64.dll). - an /api subdirectory containing the 'public' javadoc for Aparapi. - a samples directory containing the source and binaries for the mandel and squares sample projects. - -The root directory also contains either dist_windows_x86_64.zip or dist_windows_x86.zip containing a compressed archive of the distribution tree. - -[Attribution](Attribution.md) diff --git a/doc/DeviceProposal.md b/doc/DeviceProposal.md deleted file mode 100644 index cb91759b..00000000 --- a/doc/DeviceProposal.md +++ /dev/null @@ -1,65 +0,0 @@ -#DeviceProposal -*How we might use the extension mechanism devices for general Kernel execution. Updated May 9, 2012 by frost.g...@gmail.com* - -At present the first GPU or CPU device (depending on Kernel.ExecutionMode value) is chosen at execution time. This make it easy to execute simple Kernels, but is problematic when using some advanced feature (barriers, local memory) or for sizing buffers appropriate for the target device. I propose that we add API's to allow the developer to specify exactly which device we intend to target. - -In the extension proposal branch we needed to expose a Device class for binding arbitrary OpenCL to a Java interface. I suggest we also be use this to query device information useful for allocating suitable size global buffers/local buffers, and for dispatching Kernel's to specific devices. - -The general pattern would be that we ask Aparapi to give us a Device, probably via a Device factory method. - -Something like:- - - Device device = Device.best(); -We would also offer other useful factory methods `getBestGPU(), getFirstCPU() getJavaMultiThread(), getJavaSequential()` as well as a method to get all device so that the developer can filter themselves. - -Note that as well as real OpenCL devices we also expose 'pseudo' devices such as JavaMultiThread and Sequential. We might also allow pseudo devices to group multiple devices. So getAllGPUDevices() might return a pseudo device for executing across devices. - - Device chosen=null; - for (Device device: devices.getAll()){ - if (device.getVendor().contains("AMD") && device.isGPU()){ - chosen = device; - break; - } - } - -A Device can be queried `(isGPU(), isOpenCL(), isGroup(), isJava(), getOpenCLPlatform(), getMaxMemory(), getLocalSizes())` and may need to be cast to specific types. - -This would allow us to configure buffers. - - Device device = Device.best(); - if (device instanceof OpenCLDevice){ - OpenCLDevice openCLDevice = (OpenCLDevice)device; - char input[] = new char[openCLDevice.getMaxMemory()/4); - } -We can also use the Device as a factory for creating Ranges. - - Range range = device.createRange2D(width, height); -This allows the Range to be created with knowledge of the underlying device. So for example `device.createRange3D(1024, 1024, 1024, 16, 16, 16)` will fail if the device does not allow a local size of (16x16x16). - -A range created using `device.createRangeXX()` would also capture the device that created it. As if we had - - Range range = device.createRange2D(width, height); - // implied range.setDevice(device); - This basically means that the Range locks the device that it can be used with. - - So when we have a Kernel. - - Kernel kernel = new Kernel(){ - @Override public void run(){ - ... - } - } -And we then use - - Device device = Device.firstGPU(); - final char input[] = new char[((OpenCLDevice)device).getMaxMemory()/4); - Kernel kernel = new Kernel(){ - @Override public void run(){ - // uses input[]; - } - }; - range = device.createRange2D(1024, 1024); - kernel.execute(range); -We have forced execution on the first GPU. Java fallback would still be possible (should we forbid this?). - - kernel.execute( Device.firstGPU().getRange2D(width, height)); diff --git a/doc/EmulatingMultipleEntrypointsUsingCurrentAPI.md b/doc/EmulatingMultipleEntrypointsUsingCurrentAPI.md deleted file mode 100644 index b34051f5..00000000 --- a/doc/EmulatingMultipleEntrypointsUsingCurrentAPI.md +++ /dev/null @@ -1,226 +0,0 @@ -#EmulatingMultipleEntrypointsUsingCurrentAPI -*How to emulate multiple entrypoints using existing Aparapi APIs Updated Jul 30, 2012 by frost.g...@gmail.com* - -##Emulating Multiple Entrypoints Using Existing Aparapi APIs - -Until we have support for multiple entrypoints in Aparapi, there are some tricks for emulating this feature. - -Follow the proposal for adding multiple entrypoints on this page [MultipleEntryPointSupportProposal](MultipleEntryPointSupportProposal.md). - -Suppose we wanted to create a general VectorMath kernel which might expose unary square, squareroot methods and binary addition and subtraction functionality. With our current API limitations we can't easily do this, we can approximate having separate methods by passing a separate arg to dictate the 'function' that we wish to perform. - - class VectorKernel extends Kernel{ - float[] lhsOperand; - float[] rhsOperand; - float[] unaryOperand; - float[] result; - final static int FUNC_ADD =0; - final static int FUNC_SUB =1; - final static int FUNC_SQR =2; - final static int FUNC_SQRT =3; - // other functions - int function; - @Override public void run(){ - int gid = getGlobalId(0){ - if (function==FUNC_ADD){ - result[gid]=lhsOperand[gid]+rhsOperand[gid]; - }else if (function==FUNC_SUB){ - result[gid]=lhsOperand[gid]-rhsOperand[gid]; - }else if (function==FUNC_SQR){ - result[gid]=unaryOperand[gid]*unaryOperand[gid]; - }else if (function==FUNC_ADD){ - result[gid]=sqrt(unaryOperand[gid]); - }else if .... - } - } - -To use this for adding two vectors and then take the sqrt of the result we would use something like.... - - int SIZE=1024; - Range range = Range.create(SIZE); - VectorKernel vk = new VectorKernel(); - vk.lhsOperand = new float[SIZE]; - vk.rhsOperand = new float[SIZE]; - vk.unaryOperand = new float[SIZE]; - vk.result = new float[SIZE]; - - // fill lhsOperand ommitted - // fill rhsOperand ommitted - vk.function = VectorKernel.FUNC_ADD; - vk.execute(range); - System.arrayCopy(vk.result, 0, vk.unaryOperand, 0, SIZE); - vk.function = VectorKernel.FUNC_SQRT; - vk.execute(range); - -This approach is fairly common and I have used it successfully to perform various pipeline stages for calculating FFT's for example. Whilst this is functional it is not a great solution. First the API is clumsy. We have to mutate the state of the kernel instance and then re-arrange the arrays manually to chain math operations. We could of course hide all of this behind helper methods. One could imagine for example an implementation which exposes helper add(lhs, rhs)}}, or {{{sqrt() which hid all the nasty stuff. - - class VectorKernel extends Kernel{ - float[] lhsOperand; - float[] rhsOperand; - float[] unaryOperand; - float[] result; - final static int FUNC_ADD =0; - final static int FUNC_SUB =1; - final static int FUNC_SQR =2; - final static int FUNC_SQRT =3; - // other functions - int function; - @Override public void run(){ - int gid = getGlobalId(0){ - if (function==FUNC_ADD){ - result[gid]=lhsOperand[gid]+rhsOperand[gid]; - }else if (function==FUNC_SUB){ - result[gid]=lhsOperand[gid]-rhsOperand[gid]; - }else if (function==FUNC_SQR){ - result[gid]=unaryOperand[gid]*unaryOperand[gid]; - }else if (function==FUNC_ADD){ - result[gid]=sqrt(unaryOperand[gid]); - }else if .... - } - private void binary(int operator, float[] lhs, float[] rhs){ - lhsOperand = lhs; - rhsOperand = rhs; - function=operator; - execute(lhs.length()); - } - public void add(float[] lhs, float[] rhs){ - binary(FUNC_ADD, lhs, rhs); - } - - public void sub(float[] lhs, float[] rhs){ - binary(FUNC_SUB, lhs, rhs); - } - - private void binary(int operator, float[] rhs){ - System.arrayCopy(result, 0, lhsOperand, result.length); - rhsOperand = rhs; - function=operator; - execute(lhsOperand.legth()); - } - - public void add(float[] rhs){ - binary(FUNC_ADD, rhs); - } - - public void sub( float[] rhs){ - binary(FUNC_SUB, rhs); - } - - private void unary(int operator, float[] unary){ - unaryOperand = unary; - function=operator; - execute(unaryOperand.length()); - } - - public void sqrt(float[] unary){ - unary(FUNC_SQRT, unary); - } - - private void unary(int operator){ - System.array.copy(result, 0, unaryOperand, 0, result.length); - function=operator; - execute(unaryOperand.length()); - } - - public void sqrt(){ - unary(FUNC_SQRT); - } - - } - - VectorKernel vk = new VectorKernel(SIZE); - vk.add(copyLhs, copyRhs); // copies args to lhs and rhs operands - // sets function type - // and executes kernel - vk.sqrt(); // because we have no arg - // copies result to unary operand - // sets function type - // execute kernel - -However there is one more objection to this approach, namely that it by default will force unnecessarily buffer copies. - -When the bytecode for the above Kernel.run() method is analyzed Aparapi finds bytecode reading from lhsOperand, rhsOperand and unaryOperand arrays/buffers. Obviously at this bytecode analysis stage we can't predict which 'function type' will be used, so on every executions (Kernel.run()) Aparapi must copy all three buffers to the GPU. For binary operations this is one buffer copy wasted (the unaryOperand), for the unary operations we copy two buffers unnecessarily (lhsOperand and rhsOperand). We can of course use explicit buffer management to help us reduce these costs. Ideally we add this to our helper methods. - - class VectorKernel extends Kernel{ - float[] lhsOperand; - float[] rhsOperand; - float[] unaryOperand; - float[] result; - final static int FUNC_ADD =0; - final static int FUNC_SUB =1; - final static int FUNC_SQR =2; - final static int FUNC_SQRT =3; - // other functions - int function; - @Override public void run(){ - int gid = getGlobalId(0){ - if (function==FUNC_ADD){ - result[gid]=lhsOperand[gid]+rhsOperand[gid]; - }else if (function==FUNC_SUB){ - result[gid]=lhsOperand[gid]-rhsOperand[gid]; - }else if (function==FUNC_SQR){ - result[gid]=unaryOperand[gid]*unaryOperand[gid]; - }else if (function==FUNC_ADD){ - result[gid]=sqrt(unaryOperand[gid]); - }else if .... - } - private void binary(int operator, float[] lhs, float[] rhs){ - lhsOperand = lhs; - rhsOperand = rhs; - function=operator; - put(lhsOperand).put(rhsOperand); - execute(lhs.length()); - get(result); - } - public void add(float[] lhs, float[] rhs){ - binary(FUNC_ADD, lhs, rhs); - } - - public void sub(float[] lhs, float[] rhs){ - binary(FUNC_SUB, lhs, rhs); - } - - private void binary(int operator, float[] rhs){ - System.arrayCopy(result, 0, lhsOperand, result.length); - rhsOperand = rhs; - function=operator; - put(lhsOperand).put(rhsOperand); - execute(lhsOperand.legth()); - get(result); - } - - public void add(float[] rhs){ - binary(FUNC_ADD, rhs); - } - - public void sub( float[] rhs){ - binary(FUNC_SUB, rhs); - } - - private void unary(int operator, float[] unary){ - unaryOperand = unary; - function=operator; - put(unaryOperand); - execute(unaryOperand.length()); - get(result); - } - - public void sqrt(float[] unary){ - unary(FUNC_SQRT, unary); - } - - private void unary(int operator){ - System.array.copy(result, 0, unaryOperand, 0, result.length); - function=operator; - put(unaryOperand); - execute(unaryOperand.length()); - get(result); - - } - - public void sqrt(){ - unary(FUNC_SQRT); - } - - } - diff --git a/doc/ExplicitBufferHandling.md b/doc/ExplicitBufferHandling.md deleted file mode 100644 index 5f0e7011..00000000 --- a/doc/ExplicitBufferHandling.md +++ /dev/null @@ -1,220 +0,0 @@ -#ExplicitBufferHandling -*How to minimize buffer transfers Updated Jul 24, 2012 by frost.g...@gmail.com* -Aparapi is designed to shield the Java developer from dealing with the underlying movement of data between the OpenCL host and device. Aparapi can analyze a kernel's `run()` method and run-reachable methods to determine which primitive arrays to transfer to the GPU prior to execution, and which arrays to transfer back when the GPU execution is complete. - -Generally this strategy is both clean and performant. Aparapi will attempt to just do the right thing. - -However, occasionally the following code pattern is seen. - - final int[] hugeArray = new int[HUGE]; - Kernel kernel= new Kernel(){ - ... // reads/writes hugeArray - }; - for (int loop=0; loop <MAXLOOP; loop++){ - kernel.execute(HUGE); - } - -This is a common pattern which unfortunately exposes an issue with Aparapi's normal buffer handling. - -Although Aparapi does analyze the byte code of the `Kernel.run()` method (and any method reachable from `Kernel.run()`) Aparapi has no visibility to the call site. In the above code there is no way for Aparapi to detect that that hugeArray is not modified within the for loop body. Unfortunately, Aparapi must default to being 'safe' and copy the contents of hugeArray backwards and forwards to the GPU device. - -Here we add comments to indicate where the unnecessary buffer transfers take place. - - final int[] hugeArray = new int[HUGE]; - Kernel kernel= new Kernel(){ - ... // reads/writes hugeArray - }; - for (int loop=0; loop <MAXLOOP; loop++){ - // copy hugeArray to GPU - kernel.execute(HUGE); - // copy hugeArray back from the GPU - } - -In reality hugeArray only needs to be copied to the GPU once (prior to the loop) and then once again when the loop has terminated. - -Here we use comments to indicated the 'optimal' transfers. - - final int[] hugeArray = new int[HUGE]; - Kernel kernel= new Kernel(){ - ... // reads/writes hugeArray - }; - // Ideally transfer hugeArray to GPU here - for (int loop=0; loop <MAXLOOP; loop++){ - kernel.execute(HUGE); - } - // Ideally transfer hugeArray back from GPU here - -Consider another common pattern - - final int[] hugeArray = new int[HUGE]; - final int[] done = new int[]{0}; - Kernel kernel= new Kernel(){ - ... // reads/writes hugeArray and writes to done[0] when complete - }; - done[0]=0; - while (done[0] ==0)){ - kernel.execute(HUGE); - } - -This is a common pattern in reduce stages of map-reduce type problems. Essentially the developer wants to keep executing a kernel until some condition is met. For example, this may be seen in bitonic sort implementations and various financial applications. - -From the code it can be seen that the kernel reads and writes `hugeArray[]` array and uses the single item `done[]` array to indicate some form of convergence or completion. - -As we demonstrated above, by default Aparapi will transfer `done[]` and `hugeArray[]` to and from the GPU device each time `Kernel.execute(HUGE)` is executed. - -To demonstrate which buffers are being transfered, these copies are shown as comments in the following version of the code. - - final int[] hugeArray = new int[HUGE]; - final int[] done = new int[]{0}; - Kernel kernel= new Kernel(){ - ... // reads/writes hugeArray and writes to done[0] when complete - }; - done[0]=0; - while (done[0] ==0)){ - // Send done[] to GPU - // Send hugeArray[] to GPU - kernel.execute(HUGE); - // Fetch done[] from GPU - // Fetch hugeArray[] from GPU - } - -Further analysis of the code reveals that `hugeArray[]` is not accessed by the loop containing the kernel execution, so Aparapi is performing 999 unnecessary transfers to the device and 999 unnecessary transfers back. Only two transfers of `hugeArray[]` are needed; one to move the initial data to the GPU and one to move it back after the loop terminates. - -The `done[]` array is accessed during each iteration (although never written to within the loop), so it does need to be transferred back for each return from Kernel.execute(), however, it only needs to be sent once. - -Clearly it is better to avoid unnecessary transfers, especially of large buffers like `hugeArray[]`. - -Aparapi exposes a feature which allows the developer to control these situations and explicitly manage transfers. - -To use this feature first the developer needs to 'turn on' explicit mode, using the `kernel.setExplicit(true)` method. Then the developer can request buffer/array transfers using either `kernel.put()` or `kernel.get()`. `Kernel.put()` forces a transfer to the GPU device and Kernel.get() transfers data back. - -The following code illustrates the use of these new explicit buffer management APIs. - - final int[] hugeArray = new int[HUGE]; - final int[] done = new int[]{0}; - Kernel kernel= new Kernel(){ - ... // reads/writes hugeArray and writes to done[0] when complete - }; - kernel.setExplicit(true); - done[0]=0; - kernel.put(done); - kernel.put(hugeArray); - while (done[0] ==0)){ - kernel.execute(HUGE); - kernel.get(done); - } - kernel.get(hugeArray); - -Note that marking a kernel as explicit and failing to request the appropriate transfer is a programmer error. - -We deliberately made `Kernel.put(...)`, `Kernel.get(...)` and `Kernel.execute(range)` return an instance of the executing kernel to allow these calls be chained. Some may find this fluent style API more expressive. - - final int[] hugeArray = new int[HUGE]; - final int[] done = new int[]{0}; - Kernel kernel= new Kernel(){ - ... // reads/writes hugeArray and writes to done[0] when complete - }; - kernel.setExplicit(true); - done[0]=0; - kernel.put(done).put(hugeArray); // chained puts - while (done[0] ==0)){ - kernel.execute(HUGE).get(done); // chained execute and put - } - kernel.get(hugeArray); - -An alternate approach for loops containing a single `kernel.execute(range)` call. -One variant of code which would normally suggest the use of Explicit Buffer Management can be handled differently. For cases where `Kernel.execute(range)` is the sole statement inside a loop and where the iteration count is known prior to the first iteration we offer an alternate (hopefully more elegant) way of minimizing buffer transfers. - -So for cases like:- - - final int[] hugeArray = new int[HUGE]; - Kernel kernel= new Kernel(){ - ... // reads/writes hugeArray - }; - - for (int pass=0; pass<1000; pass++){ - kernel.execute(HUGE); - } - -The developer can request that Aparapi perform the outer loop rather than coding the loop. This is achieved explicitly by passing the iteration count as the second argument to `Kernel.execute(range, iterations)`. - -Now any form of code that looks like :- - - int range = 1024; - int loopCount = 64; - for (int passId = 0; passId < loopCount; passId++){ - kernel.execute(range); - } - -Can be replaced with - - int range = 1024; - int loopCount = 64; - - kernel.execute(range, loopCount); - -Not only does this make the code more compact and avoids the use of explicit buffer management APIs, it allows Aparapi visibility to the complete loop so that Aparapi can minimize the number of transfers. Aparapi will only transfer buffers to the GPU once and transfer them back once, resulting in improved performance. - -Sometimes kernel code using this loop-pattern needs to track the current iteration number as the code passed through the outer loop. Previously we would be forced to use explicit buffer management to allow the kernel to do this. - -The code for this would have looked something like - - int range = 1024; - int loopCount = 64; - final int[] hugeArray = new int[HUGE]; - final int[] passId = new int[0]; - Kernel kernel = new Kernel(){ - @Override public void run(){ - int id=getGlobalId(); - if (passId[0] == 0){ - // perform some initialization! - } - ... // reads/writes hugeArray - } - }; - Kernel.setExplicit(true); - kernel.put(hugeArray); - for (passId[0]=0; passId[0]<loopCount; passId[0]++){ - - kernel.put(passId).execute(range); - } -In the current version of Aparapi we added `Kernel.getPassId()` to allow a Kernel to determine the current ‘pass’ through the outer loop without having to use explicit buffer management. - -So the previous code can now be written without any explicit buffer management APIs:- - - final int[] hugeArray = new int[HUGE]; - final int[] pass[] = new int[]{0}; - Kernel kernel = new Kernel(){ - @Override public void run(){ - int id = getGlobalId(); - int pass = getPassId(); - if (pass == 0){ - // perform some initialization! - } - ... // reads/writes both hugeArray - } - }; - - kernel.execute(HUGE, 1000); -One common use for Kernel.getPassId() is to avoid flipping buffers in the outer loop. - -It is common for kernels to process data from one buffer to another, and in the next invocation process the data back the other way. Now these kernels can use the passId (odd or even) to determine the direction of data transfer. - - final int[] arr1 = new int[HUGE]; - final int[] arr2 = new int[HUGE]; - Kernel kernel = new Kernel(){ - int f(int v){ … } - - @Override public void run(){ - int id = getGlobalId(); - int pass = getPassId(); - if (pass % 2 == 0){ - arr1[id] = f(arr2[id]); - }else{ - arr2[id] = f(arr1[id]); - - } - } - }; - - kernel.execute(HUGE, 1000); \ No newline at end of file diff --git a/doc/FrequentlyAskedQuestions.md b/doc/FrequentlyAskedQuestions.md deleted file mode 100644 index fc0ba8cd..00000000 --- a/doc/FrequentlyAskedQuestions.md +++ /dev/null @@ -1,134 +0,0 @@ -#FrequentlyAskedQuestions -*Frequently Asked Questions Updated Oct 17, 2012 by frost.g...@gmail.com* - -##Frequently Asked Questions - -##Why is this project called Aparapi and how is it pronounced? - -Aparapi is just a contraction of A PAR{allel} API and is pronounced (ap-per-rap-ee). - -##Does Aparapi only work with AMD graphics cards? - -No. Aparapi has been tested with AMD's OpenCL enabled drivers and devices as well as a limited set of NVidia devices and drivers on Windows, Linux and Mac OSX platforms. The minimal requirement at runtime is OpenCL 1.1. If you have a compatible OpenCL 1.1 runtime and supported devices Aparapi should work. - -Although the build is currently configured for AMD APP SDK, OpenCL is an open standard and we look forward to contributions which will allow Aparapi to be built against other OpenCL SDK's. - -Note that dll's built using AMD APP SDK will work on other platforms at runtime. So the binary builds are expected to work on all OpenCL 1.1 platforms. - -Witold Bolt has kindly supplied the patches to allow Mac OS support. The Mac OS build will run against OpenCL 1.1 and 1.0 runtimes, but we won't fix any issues reported against the OpenCL 1.0, your code may run, or may not. - -Aparapi may be used in JTP (Java Thread Pool) mode on any platform supported by Oracle®’s JDK. - -## Does Aparapi only support AMD CPUs? - -No, there is nothing restricting Aparapi to AMD CPUs. The JNI code that we use may run on any x86/x64 machine provided there is a compatible Java Virtual Machine® JVM implementation for your platform. - -##Will there be an Aparapi-like translator for .NET? - -This is still an early technology and Aparapi is currently focused on Java® enablement. There are similar projects targeting .NET (See www.tidepowerd.com) - -##How can I profile the OpenCL kernels that Aparapi generates? Can I get details on the latency of my kernel request?How do I optimize my kernel? - -AMD offers the ‘AMD APP Profiler’ which can be used to profile the kernels. With Aparapi, we recommend using the command line mode of the profiler, which is described in the release notes. Using the ‘AMD APP Profiler’ you can see how much time is taken by each kernel execution and buffer transfer. Also, in each kernel, you can get more detailed information on things like memory reads and writes, and other useful data. - -##Can I have multiple threads all using the GPU compute capabilities? - -Yes. There might be a performance impact if the device becomes a bottleneck. However, OpenCL and your GPU driver are designed to coordinate the various threads of execution. - -##Can I make method calls from the run method? - -You can generally only make calls to other methods declared in the same class as the initial run() method. Aparapi will follow this call chain to try to determine whether it can create OpenCL. If, for example, Aparapi encounters System.out.println("Hello World") ( call to a method not in the users Kernel class) it will detect this and refuse to consider the call chain as an OpenCL candidate. - -One exception to this rule allows a kernel to access or mutate the state of objects held in simple arrays via their setters/getters. For example a kernel can include :- - - out[i].setValue(in[i].getValue()*5); - -##Does Aparapi support vectorized types? - -Due to Java's lack of vector types (float4 for example) Aparapi can't directly use them. Also, due to Java's lack of operator overloading, simulating these with Java abstracts could lead to very complex and unwieldy code. - -##Is there a way I can see the generated OpenCL? - -Yes, by using adding -Dcom.syncleus.aparapi.enableShowGeneratedOpenCL=true to your command line when you start your JVM. - -##Does Aparapi support sharing buffers with JOGL? Can I exploit the features of JOGAMP/glugen? - -Rather than only supporting display-oriented compute, we are pursuing general data parallel compute. Therefore, we have chosen not to bind Aparapi too closely with JOGL. - -##What is the performance delta from handcrafted OpenCL? - -This depends heavily on the application. Although we can currently show 20x performance improvement on some compute intensive Java applications compared with the same algorithm using a Java Thread Pool a developer who is prepared to handcraft and hand-tune OpenCL and write custom host code in C/C++ is likely to see better performance than Aparapi may achieve. - -We understand that some user may use Aparapi as a gateway technology to test their Java code before porting to hand-crafted/tuned OpenCL. - -##Are you working with Project Lambda for offloading/parallelizing suitable work? - -We are following the progress of Project Lambda (currently scheduled for inclusion in Java 8) and would like to be able to leverage Lambda expression format in Aparapi, but none exists now. - -##Can I select a specific GPU if I have more than one card? - -Under review. At present, Aparapi just looks for the first AMD GPU (or APU) device. If the community has feedback on its preference, let us know. - -##Can I get the demos/samples presented at JavaOne or ADFS? - -The Squares and Mandlebrot sample code is included in the binary download of Aparapi. The NBody source is not included in the binary (because of a dependency on JOGL). We have, however, included the NBody code as an example project in the Open Source tree (code.google.com/p/aparapi) and provide details and we provide details on how to install the appropriate JOGL components. - -##Can Mersenne twister be ported as a random number function inside the kernel class? - -You can elect to implement your own Mersenne twister and use it in our own derived Kernel. - -##Does Aparapi use JNI? - -Yes, we do ship a small JNI shim to handle the host OpenCL calls. - -##How can I confirm that my code is actually executing on the GPU? - -From within the Java code itself you can query the execution mode after Kernel.execute(n) has returned. - - Kernel kernel = new Kernel(){ - @Override public void run(){ - } - } ; - kernel.execute(1024); - System.out.priintln(“Execution mode = “+kernel.getExecutionMode()); - -The above code fragment will print either ‘GPU’ if the kernel executed on the GPU or JTP if Aparapi executed the Kernel in a Java Thread Pool. - -Alternatively, setting the property –Dcom.syncleus.aparapi.enableShowExecutionModes=true when you start your JVM will cause Aparapi to automatically report the execution mode of all kernels to stdout. - -##Why does Aparapi need me to compile my code with -g? - -Aparapi extracts most of the information required to create OpenCL from the bytecode of your Kernel.run() (and run-reachable) methods. We use the debug information to re-create the original variable name and to determine the local variable scope information. - -Of course only the derived Kernel class (or accessed Objects using new Arrays of Objects feature) need to be compiled using -g. - -##Why does the Aparapi documentation suggest I use Oracle's JDK/JRE? Why can't I use any JVM/JDK? - -The documentation suggests using Oracle's JDK/JRE for coverage reasons and not as a requirement. AMD focused its testing on Oracle's JVM/JDK. - -There are two parts to this. - -1. Our bytecode to OpenCL engine is somewhat tuned to the bytecode structures created by javac supplied by Oracle®. Specifically, there are some optimizations that other javac implementation might perform that Aparapi won't recognize. Eclipse (for example) does not presently use Oracle's javac, and so we do have some experience handling Eclipse specific bytecode patterns. -2. At runtime, we piggyback on the (aptly named) sun.misc.Unsafe class, which is included in rt.jar from Oracle®. This class is useful because it helps us avoid some JNI calls by providing low level routines for accessing object field addresses (in real memory) and useful routines for Atomic operations. All accesses to 'sun.misc.Unsafe' are handled by an Aparapi class called UnsafeWrapper with the intent that this could be refactored to avoid this dependency. - -##I am using a dynamic language (Clojure, Scala, Groovy, Beanshell, etc) will I be able to use Aparapi? - -No. - -To access the bytecode for a method Aparapi needs to parse the original class file. For Java code, Aparapi can use something like `YourClass.getClassLoader().loadAsResource(YourClass.getName()+".class"))` to reload the class file bytes and parse the constant pool, attributes, fields, methods and method bytecode. - -It is unlikely that this process would work with a dynamically created class based on the presumption that dynamic languages employ some form of custom classloader to make dynamically generated bytecode available to the JVM. Therefore, it is unlikely that these classloaders would yield the classfile bytes. However, we encourage contributors to investigate opportunities here. Even if the class bytes were loadable, Aparapi would also expect debug information to be available (see previous FAQ entry). Again, this is not impossible for a dynamic language to do, indeed it would probably even be desirable as it would allow the code to be debugged using JDB compatible debugger. - -Finally, Aparapi recognizes bytecode patterns created by the javac supplied by Oracle® and it is possible that the code generated by a particular dynamic language may not be compatible with Aparapi current code analyzer. - -Therefore, at present this is unlikely to work. However, these would be excellent contributions to Aparapi. It would be great to see Aparapi being adopted by other JVM based dynamic language. - -##Why does Aparapi seems to be copying data unnecessarily back and forth between host and GPU. Can I stop Aparapi from doing this? - -Aparapi ensures that required data is moved to the GPU prior to kernel execution and returned to the appropriate array before Java execution resumes. Generally, this is what the Java user will expect. However, for some code patterns where multiple Kernel.execute() calls are made in succession (or more likely in a tight loop) Aparapi's approach may not be optimal. - -In the NewFeatures page we discuss a couple of Aparapi enhancements which will developers to elect intervene to reduce unnecessary copies. - -##Do I have to refactor my code to use arrays of primitives? Why can’t Aparapi just work with Java Objects? - -Aparapi creates OpenCL from the bytecode. Generally, OpenCL constrains us to using parallel primitive arrays (OpenCL does indeed allow structs, but Java and OpenCL do not have comparable memory layouts for these structures). Therefore, you will probably need to refactor your code to use primitive arrays. In this initial contribution, we have included some limited support for Arrays of simple Objects and hope contributors extend them. Check the NewFeatures page which shows how you can use this feature. \ No newline at end of file diff --git a/doc/HSAEnablementOfLambdaBranch.md b/doc/HSAEnablementOfLambdaBranch.md deleted file mode 100644 index 15e7fe9c..00000000 --- a/doc/HSAEnablementOfLambdaBranch.md +++ /dev/null @@ -1,32 +0,0 @@ -#HSAEnablementOfLambdaBranch -*Adding HSA Support to Aparapi lambda branch Updated Feb 28, 2014 by frost.g...@gmail.com* - -* [How to setup a HSA enabled Linux Platform](SettingUpLinuxHSAMachineForAparapi.md) -* [How to setup a HSA simulator on a Linux Platform](UsingAparapiLambdaBranchWithHSASimulator.md) - -Recently the HSA Foundation released their ‘Programmers Reference Manual’. This manual is for developers wishing to write code for upcoming HSA compatible devices, it describes the HSA Intermediate Language (HSAIL) along with its binary form (BRIG) and describes how code is expected to execute on a HSA enabled devices. - -In many ways we can think of HSAIL as we do Java bytecode. It is a common intermediate form that can be optimized at runtime to execute across a variety of future heterogeneous platforms. HSAIL will greatly simplify the development of software taking advantage of both sequential and parallel compute solutions. - -Now that the spec is out, we have started adding HSA support to the Aparapi lambda branch. We believe that HSA combined with the upcoming Java 8 feature lambda will be a natural way to express parallel algorithms which can be executed on the GPU via HSA. - -A HSA+Lambda enabled Aparapi will remove many of Aparapi's constraints. HSA allows all of the CPU's memory to be accessed directly from code running on the GPU. This means - -* We no longer need to move data from the host CPU to the GPU. -* We are no longer limited to the memory addressable from the GPU -* We can access multi-dim arrays efficiently -* We can access Java objects directly from the GPU. -These are all substantial benefits. - -In the existing code (early prototype) we provide access to HSA as a specific device type. - -So our ubiquitous 'squares' example will initially be written as: - - int in[] = ..// - int out[] = .../ - Device.hsa().forEach(in.length, (i)->{ - out[i] = in[i]*in[i]; - }); -You will obviously need a Java 8 compatible JDK ([https://jdk8.java.net/download.html](https://jdk8.java.net/download.html)) in your path. - -We also recommend using IntelliJ which has preliminary support for Java 8 lambda features. You can download the community edition of IntelliJ from [http://www.jetbrains.com/idea/](http://www.jetbrains.com/idea/) \ No newline at end of file diff --git a/doc/HSAEnablementOfLambdaBranchSidebar.md b/doc/HSAEnablementOfLambdaBranchSidebar.md deleted file mode 100644 index 32754522..00000000 --- a/doc/HSAEnablementOfLambdaBranchSidebar.md +++ /dev/null @@ -1,6 +0,0 @@ -#HSAEnablementOfLambdaBranchSidebar -*Sidebar for HSAEnablementOfLambdaBranchAparapi* - -[How to setup a HSA enabled Linux Platform](SettingUpLinuxHSAMachineForAparapi.md) - -[How to setup a HSA simulator on a Linux Platform](UsingAparapiLambdaBranchWithHSASimulator.md) diff --git a/doc/HowToAddUML.md b/doc/HowToAddUML.md deleted file mode 100644 index 8c1c7f49..00000000 --- a/doc/HowToAddUML.md +++ /dev/null @@ -1,39 +0,0 @@ -#HowToAddUML -*How to add plantuml docs to wiki pages Updated Apr 20, 2013 by frost.g...@gmail.com* - -Go to http://www.plantuml.com/plantuml and type in the text for you diagram. - -Hit submit and check out the diagram. - -Once you are happy, so with something like - - start - :kernel.execute(range); - if (?) then (first call for this instance) - : Convert Kernel.run() to OpenCL; - note - We also convert all - methods reachable from - kernel.run() - end note - if (?) then (Conversion was successful) - : Compile OpenCL; - : Map compiled OpenCL to this Kernel; - else (Conversion unsuccessful) - endif - else (not first call) - endif - if (?) then (OpenCL mapped for this instance) - : Bind args (send to GPU); - : Execute kernel; - else (false) - : Execute using a Java Thread Pool; - endif - stop -Paste the resulting URL into the wiki page but append %20as.png at the end of the URL - -http://www.plantuml.com:80/plantuml/img/BLAHBLAH%20as.png - -To get this! - - \ No newline at end of file diff --git a/doc/JavaKernelGuidelines.md b/doc/JavaKernelGuidelines.md deleted file mode 100644 index 89ab38dc..00000000 --- a/doc/JavaKernelGuidelines.md +++ /dev/null @@ -1,72 +0,0 @@ -#JavaKernelGuidelines -*What code can and can't be converted to OpenCL by Aparapi. Updated Sep 13, 2011 by frost.g...@gmail.com* -##Aparapi Java Kernel Guidelines -Certain practices can improve the chances of your Java kernel being converted to OpenCL and executing on a GPU. - -The following guidelines/restrictions only apply to the Kernel.run() method and any method reachable from run() (called†run-reachable methods†in this documentation), clearly any methods executed via a normal Java execution path will not be subject to these restrictions. - -Some restrictions/guidelines may be removed or augmented in a future Aparapi releases. - -##Data Types -* Only the Java primitive data types boolean, byte, short, int, long, and float and one-dimensional arrays of these primitive data types are supported by Aparapi. -* Aparapi support for the primitive data type double will depend on your graphics card, driver, and OpenCL version. Aparapi will query the device/platform to determine if double is supported (at runtime). If your platform does not support double, Aparapi will drop back to (Java Thread Pool) (JTP) mode. -* The primitive data type char is not supported. - -##Fields -* Elements of primitive array fields can be read from kernel code. -* Elements of primitive array fields can be written to by kernel code. -* Note that Java creates 'hidden' fields for captured final primitive arrays (from anonymous inner classes) and they can be accessed as if they were fields of the kernel. -* Primitive scalar fields can only be read by the kernel code. Because kernel run-reachable methods execute in parallel in an indeterminate order, any reliance on the result of modifications to primitive scalar fields is discouraged even when executing in Java Thread Pool mode. -* Static final fields can be read from kernel code. -* Static non-final fields are not supported for either read or write. Try to make them final. - -##Arrays -* Only one-dimensional arrays are supported. -* Arrays cannot be aliased either by direct local assignment or by passed arguments to other methods. -* Java 5’s extended 'for' syntax for (int i: arrayOfInt){} is not supported, because it causes a shallow copy of the original array under the covers. - -##Methods -* References to or through a Java Object other than your kernel instance will cause Aparapi to abandon attempting to create OpenCL (note the following exceptions). -* There are a few very specific exceptions to the above rule to allow accesses through getters/setters of objects held in arrays of objects referenced from the kernel code. -* Static methods are not supported by Aparapi. -* Recursion is not supported, whether direct or indirect. Aparapi tries to detect this recursion statically, but the developer should not rely on Aparapi to do so. -* Methods with varargs argument lists are not supported by Aparapi. -* Overloaded methods (i.e. methods with the same name but different signatures) are not supported by Aparapi. OpenCL is C99 based so we are constrained by OpenCL's lack of support for overloading. -* The kernel base class contains wrappers around most of the functions offered by java.lang.Math. When run in a thread pool these wrappers delegate back to java.lang.Math when executing in OpenCL they translate to OpenCL equivalents. - -##Other Restrictions - -* Exceptions are not supported (no throw, catch. or finally). -* New is not supported either for arrays or objects -* Synchronized blocks and synchronized methods are not supported. -* Only simple loops and conditionals are supported; switch, break, and continue are not supported. -* A variable cannot have its first assignment be the side effect of an expression evaluation or a method call. For example, the following will not be translated to run on the GPU. - - - int foo(int a) { - // . . . - } - public void run() { - int z; - foo(z = 3); - } - - -* This should be regarded as an error which needs to be addressed, as a workaround, explicitly initialize variables (even to 0) when declared. - -## Beware Of Side Effects -OpenCL is C99-based and as such the result of expressions depending on side effects of other expressions can differ from what one might expect from Java, please avoid using code that assumes Java's tighter rules. Generally code should be as simple as possible. -For example, although Java explicitly defines - - arra[i++] = arrb[i++]; - to be equivalent to - - arra[i] = arrb[i+1]; - i += 2; - -The C99/OpenCL standard does not define this and so the result would be undefined. - -##Runtime Exceptions -* When run on the GPU, array accesses will not generate an ArrayIndexOutOfBoundsException. Instead the behavior will be unspecified. -* When run on the GPU, ArithmeticExceptions will not be generated, for example with integer division by zero. Instead the behavior will be unspecified. -Attribution diff --git a/doc/LIbraryAgentDuality.md b/doc/LIbraryAgentDuality.md deleted file mode 100644 index 88e164e6..00000000 --- a/doc/LIbraryAgentDuality.md +++ /dev/null @@ -1,28 +0,0 @@ -#LIbraryAgentDuality -*Aparapi libraries can now be loaded as JVMTI agents. Updated Jan 15, 2013 by frost.g...@gmail.com* - -##What are all these check-ins referring to JVMTI agents? - -If you have been tracking Aparapi SVN checkins you will have noticed a bunch of changes to JNI code. I just finished arranging for aparapi libraries (.dll or .so) to be able to be loaded as JVMTI agent. Now (assuming library is in ${APARAPI_DIR}) we can either launch using the traditional... - - java –Djava.library.path=${APARAPI_DIR} –classpath ${APARAPI_DIR}/aparapi.jar;my.jar mypackage.MyClass - -or ... - - java –agentpath=${APARAPI_DIR}/aparapi_x86_64.dll –classpath ${APARAPI_DIR}/aparapi.jar;my.jar mypackage.MyClass - -So the dll/so is now both ‘just a library’ and a JVMTI agent. - -##When would I need an agent? - -Prevously Aparapi loaded classes that it needed to convert to OpenCL using java.lang.Class.getResourceAsStream(). This only works if we have a jar, or if the classes are on the filesystem somewhere. This approach will not work for 'synthetically generated classes'. - -There are applications/frameworks which create synthetic classes (at runtime) which would not normally be useable by Aparapi. - -Specifically (and significantly) Java 8 uses synthetic classes to capture args (closure captures) so they can be passed to the final lambda implementation. We needed a way to allow Aparapi to access bytecode of any class, not just those in jars or on the disk. - -A JVMTI agent can register an interest in loaded classes (loaded by the classloader)do this. So when we use the aparapi library in 'agent mode' it caches all bytes for all loaded classes (yes we could filter by name) and puts this information in a common data structure (should be a map but is a linked list at present). - -By adding a new OpenCLJNI.getBytes(String) JNI method, Aparapi can now retrieve the bytes for any loaded classes, out of this cache. - -So this combined with our ability to parse classes which don’t have line number information should really enable Aparapi to be used with Scala/JRuby/Groovy or other dynamic scripting languages which create classes on the fly. diff --git a/doc/MultipleEntryPointSupportProposal.md b/doc/MultipleEntryPointSupportProposal.md deleted file mode 100644 index bf2d7056..00000000 --- a/doc/MultipleEntryPointSupportProposal.md +++ /dev/null @@ -1,377 +0,0 @@ -#MultipleEntryPointSupportProposal -*How to extend Aparapi to allow multiple entrypoints for kernels Updated Jul 30, 2012 by frost.g...@gmail.com* - -##The Current Single Entrypoint World - -At present Aparapi allows us to dispatch execution to a single 'single entry point' in a Kernel. Essentially for each Kernel only the overridden Kernel.run() method can be used to initiate execution on the GPU. - -Our canonical example is the 'Squarer' Kernel which allows us to create squares for each element in an input array in an output array. - - Kernel squarer = new Kernel(){ - @Overide public void run(){ - int id = getGlobalId(0); - out[id] = in[id] * in[id]; - } - }; - -If we wanted a vector addition Kernel we would have to create a whole new Kernel. - - Kernel adder = new Kernel(){ - @Overide public void run(){ - int id = getGlobalId(0); - out[id] = in[id] * in[id]; - } - }; - -For us to square and then add a constant we would have to invoke two kernels. Or of course create single SquarerAdder kernel. - -See this page EmulatingMultipleEntrypointsUsingCurrentAPI for ideas on how to emulate having multiple methods, by passing data to a single run() method. - -##Why can't Aparapi just allow 'arbitary' methods - -Ideally we would just expose a more natural API, one which allows us to provide specific methods for each arithmetic operation. - -Essentially - - class VectorKernel extends Kernel{ - public void add(); - public void sub(); - public void sqr(); - public void sqrt(); - } - -Unfortunately this is hard to implement using Aparapi. There are two distinct problems, both at runtime. - - How will Aparapi know which of the available methods we want to execute when we call Kernel.execute(range)? - On first execution how does Aparapi determine which methods might be entrypoints and are therefore need to be converted to OpenCL? - -The first problem can be solved by extending Kernel.execute() to accept a method name - - kernel.execute(SIZE, "add"); - -This is the obvious solution, but really causes maintenence issues int that it trades compile time reporting for a runtime errors. If a developer mistypes the name of the method, :- - - kernel.execute(SIZE, "sadd"); // there is no such method - -The code will compile perfectly, only at runtime will we detect that there is no such method. -##An aside - -Maybe the new Java 8 method reference feature method might help here. In the paper below Brian Goetz talks about a double-colon syntax (Class::Method) for directly referencing a method which is presumably checked at compile time. - -So presumably - - kernel.execute(SIZE, VectorKernel::add); - -Would compile just fine, whereby - - kernel.execute(SIZE, VectorKernel::sadd); - -Would yield a compile time error. - -See Brian Goetz's excellent Lambda documentation -##back from Aside - -The second problem (knowing which methods need to be converted to OpenCL) can probably be solved using an Annotation. - - class VectorKernel extends Kernel{ - @EntryPoint public void add(); - @EntryPoint public void sub(); - @EntryPoint public void sqr(); - @EntryPoint public void sqrt(); - public void nonOpenCLMethod(); - } - -Here the @EntryPoint annotation allows the Aparapi runtime to determine which methods need to be exposed. -#My Extension Proposal - -Here is my proposal. Not only does it allow us to reference multiple entryoints, but I think it actually improves the single entrypoint API, albeit at the cost of being more verbose. -##The developer must provide an API interface - -First I propose that we should ask the developer to provide an interface for all methods that we wish to execute on the GPU (or convert to OpenCL). - - interface VectorAPI extends AparapiAPI { - public void add(Range range); - public void sub(Range range); - public void sqrt(Range range); - public void sqr(Range range); - } - -Note that each API takes a Range, this will make more sense in a moment. -##The developer provides a bound implementation - -Aparapi should provide a mechanism for mapping the proposed implementation of the API to it's implementation. - -Note the weasel words here, this is not a conventional implementation of an interface. We will use an annotation (@Implements(Class class)) to provide the binding. - - @Implements(VectorAPI.class) class Vector extends Kernel { - public void add(RangeId rangeId){/*implementation here */} - public void sub(RangeId rangeId){/*implementation here */} - public void sqrt(RangeId rangeId){/*implementation here */} - public void sqr(RangeId rangeId){/*implementation here */} - public void public void nonOpenCLMethod(); - } - -##Why we can't the implementation just implement the interface? - -This would be ideal. Sadly we need to intercept a call to say VectorAPI.add(Range) and dispatch to the resulting Vector.add(RangeId) instances. If you look at the signatures, the interface accepts a Range as it's arg (the range over which we intend to execute) whereas the implementation (either called by JTP threads or GPU OpenCL dispatch) receives a RangeId (containing the unique globalId, localId, etc fields). At the very end of this page I show a strawman implementation of a sequential loop implementation. -##So how do we get an implementation of VectorAPI - -We instantiate our Kernel by creating an instance using new. We then ask this instance to create an API instance. Some presumably java.util.Proxy trickery will create an implementation of the actual instance, backed by the Java implementation. - -So execution would look something like. - - Vector kernel = new Vector(); - VectorAPI kernelApi = kernel.api(); - Range range = Range.create(SIZE); - kernalApi.add(range); - -So the Vector instance is a pure Java implementation. The extracted API is the bridge to the GPU. - -Of course then we can also execute using an inline call through api() - - Vector kernel = new Vector(); - Range range = Range.create(SIZE); - kernel.api().add(range); - kernel.api().sqrt(range); - -or even expose api as public final fields - - Vector kernel = new Vector(); - Range range = Range.create(SIZE); - kernel.api.add(range); - kernel.api.sqrt(range); - -##How would our canonical Squarer example look - - interface SquarerAPI extends AparapiAPI{ - square(Range range); - } - - @Implement(SquarerAPI) class Squarer extends Kernel{ - int in[]; - int square[]; - public void square(RangeId rangeId){ - square[rangeId.gid] = in[rangeId.gid]*in[rangeId.gid]; - } - } - -Then we execute using - - Squarer squarer = new Squarer(); - // fill squarer.in[SIZE] - // create squarer.values[SIZE]; - -squarer.api().square(Range.create(SIZE)); - -#Extending this proposal to allow argument passing - -Note that we have effectively replaced the use of the 'abstract' squarer.execute(range) with the more concrete squarer.api().add(range). - -Now I would like to propose that we take one more step by allowing us to pass arguments to our methods. - -Normally Aparapi captures buffer and field accesses to create the args that it passes to the generated OpenCL code. In our cannonical squarer example the in[] and square[] buffers are captured from the bytecode and passed (behind the scenes) to the OpenCL. - -* **TODO: Add generated OpenCl code to show what this looks like.** * - -However, by exposing the actual method we want to execute, we could also allow the API to accept parameters. - -So our squarer example would go from - - interface SquarerAPI extends AparapiAPI{ - square(Range range); - } - - @Implement(SquarerAPI) class Squarer extends Kernel{ - int in[]; - int square[]; - public void square(RangeId rangeId){ - square[rangeId.gid] = in[rangeId.gid]*in[rangeId.gid]; - } - } - - - Squarer squarer = new Squarer(); - // fill squarer.in[SIZE] - // create squarer.values[SIZE]; - - squarer.api().square(Range.create(SIZE)); - -to - - interface SquarerAPI extends AparapiAPI{ - square(Range range, int[] in, int[] square); - } - - @Implement(SquarerAPI) class Squarer extends Kernel{ - public void square(RangeId rangeId, int[] in, int[] square){ - square[rangeId.gid] = in[rangeId.gid]*in[rangeId.gid]; - } - } - - - Squarer squarer = new Squarer(); - int[] in = // create and fill squarer.in[SIZE] - int[] square = // create squarer.values[SIZE]; - - squarer.api().square(Range.create(SIZE), in, result); - -I think that this makes Aparapi look more conventional. It also allows us to allow overloading for the first time. - - interface SquarerAPI extends AparapiAPI{ - square(Range range, int[] in, int[] square); - square(Range range, float[] in, float[] square); - } - - @Implement(SquarerAPI) class Squarer extends Kernel{ - public void square(RangeId rangeId, int[] in, int[] square){ - square[rangeId.gid] = in[rangeId.gid]*in[rangeId.gid]; - } - public void square(RangeId rangeId, float[] in, float[] square){ - square[rangeId.gid] = in[rangeId.gid]*in[rangeId.gid]; - } - } - - - Squarer squarer = new Squarer(); - int[] in = // create and fill squarer.in[SIZE] - int[] square = // create squarer.values[SIZE]; - - squarer.api().square(Range.create(SIZE), in, result); - float[] inf = // create and fill squarer.in[SIZE] - float[] squaref = // create squarer.values[SIZE]; - - squarer.api().square(Range.create(SIZE), inf, resultf); - ---- - -test harness - - import java.lang.reflect.InvocationHandler; - import java.lang.reflect.Method; - import java.lang.reflect.Proxy; - - - public class Ideal{ - - public static class OpenCLInvocationHandler<T> implements InvocationHandler { - Object instance; - OpenCLInvocationHandler(Object _instance){ - instance = _instance; - } - @Override public Object invoke(Object interfaceThis, Method interfaceMethod, Object[] interfaceArgs) throws Throwable { - Class clazz = instance.getClass(); - - Class[] argTypes = interfaceMethod.getParameterTypes(); - argTypes[0]=RangeId.class; - Method method = clazz.getDeclaredMethod(interfaceMethod.getName(), argTypes); - - - if (method == null){ - System.out.println("can't find method"); - }else{ - RangeId rangeId = new RangeId((Range)interfaceArgs[0]); - interfaceArgs[0]=rangeId; - for (rangeId.wgid = 0; rangeId.wgid <rangeId.r.width; rangeId.wgid++){ - method.invoke(instance, interfaceArgs); - } - } - - return null; - } - } - - static class Range{ - int width; - Range(int _width) { - width = _width; - } - } - - static class Range2D extends Range{ - int height; - - Range2D(int _width, int _height) { - super(_width); - height = _height; - } - } - - static class Range1DId<T extends Range>{ - Range1DId(T _r){ - r = _r; - } - T r; - - int wgid, wlid, wgsize, wlsize, wgroup; - } - - static class RangeId extends Range1DId<Range>{ - RangeId(Range r){ - super(r); - } - } - - static class Range2DId extends Range1DId<Range2D>{ - Range2DId(Range2D r){ - super(r); - } - - int hgid, hlid, hgsize, hlsize, hgroup; - } - - - - - - static <T> T create(Object _instance, Class<T> _interface) { - OpenCLInvocationHandler<T> invocationHandler = new OpenCLInvocationHandler<T>(_instance); - T instance = (T) Proxy.newProxyInstance(Ideal.class.getClassLoader(), new Class[] { - _interface, - - }, invocationHandler); - return (instance); - - } - - - - public static class Squarer{ - interface API { - public API foo(Range range, int[] in, int[] out); - public Squarer dispatch(); - - } - - public API foo(RangeId rangeId, int[] in, int[] out) { - out[rangeId.wgid] = in[rangeId.wgid]*in[rangeId.wgid]; - return(null); - } - } - - /** - * @param args - */ - public static void main(String[] args) { - - Squarer.API squarer = create(new Squarer(), Squarer.API.class); - int[] in = new int[] { - 1, - 2, - 3, - 4, - 5, - 6 - }; - int[] out = new int[in.length]; - Range range = new Range(in.length); - - squarer.foo(range, in, out); - - for (int s:out){ - System.out.println(s); - } - - } - - } - diff --git a/doc/NewFeatures.md b/doc/NewFeatures.md deleted file mode 100644 index 4bcb8f59..00000000 --- a/doc/NewFeatures.md +++ /dev/null @@ -1,227 +0,0 @@ -#NewFeatures -*New Features added to this open source release of Aparapi. Updated Sep 14, 2011 by frost.g...@gmail.com* -##New Features -Aparapi has two new, especially useful features: - -Explicit Buffer Management for minimizing buffer transfers -Kernel access to objects held in arrays -###Minimizing Buffer Transfers -####Explicit Buffer Management -Aparapi is designed to shield the Java developer from dealing with the underlying movement of data between the OpenCL host and device. Aparapi can analyze a kernel's run() method and run-reachable methods to determine which primitive arrays to transfer to the GPU prior to execution, and which arrays to transfer back when the GPU execution is complete. - -Generally this strategy is both clean and performant. Aparapi will attempt to just do the right thing. - -However, occasionally the following code pattern is seen. - - final int[] hugeArray = new int[HUGE]; - final int[] done = new int[]{0}; - Kernel kernel= new Kernel(){ - ... // reads/writes hugeArray and writes to done[0] when complete - }; - done[0]=0; - while (done[0] ==0)){ - kernel.execute(HUGE); - } -This is a common pattern in reduce stages of map-reduce type problems. Essentially the developer wants to keep executing a kernel until some condition is met. For example, this may be seen in bitonic sort implementations and various financial applications. - -From the code it can be seen that the kernel reads and writes hugeArray[] array and uses the single item done[] array to indicate some form of convergence or completion. - -Unfortunately, by default Aparapi will transfer done[] and hugeArray[] to and from the GPU device each time Kernel.execute(HUGE) is executed. - -To demonstrate which buffers are being transfered, these copies are shown as comments in the following version of the code. - - final int[] hugeArray = new int[HUGE]; - final int[] done = new int[]{0}; - Kernel kernel= new Kernel(){ - ... // reads/writes hugeArray and writes to done[0] when complete - }; - done[0]=0; - while (done[0] ==0)){ - // Send done[] to GPU - // Send hugeArray[] to GPU - kernel.execute(HUGE); - // Fetch done[] from GPU - // Fetch hugeArray[] from GPU - } -Further analysis of the code reveals that hugeArray[] is not accessed by the loop containing the kernel execution, so Aparapi is performing 999 unnecessary transfers to the device and 999 unnecessary transfers back. Only two transfers of hugeArray[] are needed; one to move the initial data to the GPU and one to move it back after the loop terminates. - -The done[] array is accessed during each iteration (although never written to within the loop), so it does needs to be transferred back for each return from Kernel.execute(), however, it only needs to be sent once. - -Clearly it is better to avoid unnecessary transfers, especially of large buffers like hugeArray[]. - -A new Aparapi feature allows the developer to control these situations and explicitly manage transfers. - -To use this feature first set the mode to explicit, using the kernel.setExplicit(true) method, and then requests transfers using either kernel.put() or kernel.get(). Kernel.put() forces a transfer to the GPU device and Kernel.get() transfers data back. - -The following code illustrates the use of these new explicit buffer management APIs. - - final int[] hugeArray = new int[HUGE]; - final int[] done = new int[]{0}; - Kernel kernel= new Kernel(){ - ... // reads/writes hugeArray and writes to done[0] when complete - }; - kernel.setExplicit(true); - done[0]=0; - kernel.put(done); - kernel.put(hugeArray); - while (done[0] ==0)){ - kernel.execute(HUGE); - kernel.get(done); - } - kernel.get(hugeArray); -Note that marking a kernel as explicit and failing to request the appropriate transfer is a programmer error. - -We deliberately made Kernel.put(…), Kernel.get(…) and Kernel.execute(range) return an instance of the executing kernel to allow these calls be chained. Some may find this fluent style API more expressive. - - final int[] hugeArray = new int[HUGE]; - final int[] done = new int[]{0}; - Kernel kernel= new Kernel(){ - ... // reads/writes hugeArray and writes to done[0] when complete - }; - kernel.setExplicit(true); - done[0]=0; - kernel.put(done).put(hugeArray); // chained puts - while (done[0] ==0)){ - kernel.execute(HUGE).get(done); // chained execute and put - } - kernel.get(hugeArray); -####An alternate approach for loops containing a single kernel.execute(range) call. -One variant of code which would normally suggest the use of Explicit Buffer Management can be handled differently. For cases where Kernel.execute(range) is the sole statement inside a loop and where the iteration count is known prior to the first iteration we offer an alternate (hopefully more elegant) way of minimizing buffer transfers. - -So for cases like:- - - final int[] hugeArray = new int[HUGE]; - Kernel kernel= new Kernel(){ - ... // reads/writes hugeArray - }; - - for (int pass=0; pass<1000; pass++){ - kernel.execute(HUGE); - } -The developer can request that Aparapi perform the outer loop rather than coding the loop. This is achieved explicitly by passing the iteration count as the second argument to Kernel.execute(range, iterations). - -Now any form of code that looks like :- - - int range=1024; - int loopCount=64; - for (int passId=0; passId<loopCount; passId++){ - kernel.execute(range); - } -Can be replaced with - - int range=1024; - int loopCount=64; - - kernel.execute(range, loopCount); -Not only does this make the code more compact and avoids the use of explicit buffer management APIs, it allows Aparapi visibility to the complete loop so that Aparapi can minimize the number of transfers. Aparapi will only transfer buffers to the GPU once and transfer them back once, resulting in improved performance. - -Sometimes kernel code using this loop-pattern needs to track the current iteration number as the code passed through the outer loop. Previously we would be forced to use explicit buffer management to allow the kernel to do this. - -The code for this would have looked something like - - int range=1024; - int loopCount=64; - final int[] hugeArray = new int[HUGE]; - final int[] passId = new int[0]; - Kernel kernel= new Kernel(){ - @Override public void run(){ - int id=getGlobalId(); - if (passId[0] == 0){ - // perform some initialization! - } - ... // reads/writes hugeArray - } - }; - Kernel.setExplicit(true); - kernel.put(hugeArray); - for (passId[0]=0; passId[0]<loopCount; passId[0]++){ - - kernel.put(passId).execute(range); - } -In the current version of Aparapi we added Kernel.getPassId() to allow a Kernel to determine the current ‘pass’ through the outer loop without having to use explicit buffer management. - -So the previous code can now be written without any explicit buffer management APIs:- - - final int[] hugeArray = new int[HUGE]; - final int[] pass[] = new int[]{0}; - Kernel kernel= new Kernel(){ - @Override public void run(){ - int id=getGlobalId(); - int pass = getPassId(); - if (pass == 0){ - // perform some initialization! - } - ... // reads/writes both hugeArray - } - }; - - kernel.execute(HUGE, 1000); -One common use for Kernel.getPassId() is to avoid flipping buffers in the outer loop. - -It is common for kernels to process data from one buffer to another, and in the next invocation process the data back the other way. Now these kernels can use the passId (odd or even) to determine the direction of data transfer. - - final int[] arr1 = new int[HUGE]; - final int[] arr2 = new int[HUGE]; - Kernel kernel= new Kernel(){ - int f(int v){ … } - - @Override public void run(){ - int id=getGlobalId(); - int pass = getPassId(); - if (pass%2==0){ - arr1[id] = f(arr2[id]); - }else{ - arr2[id] = f(arr1[id]); - - } - } - }; - - kernel.execute(HUGE, 1000); - -####Allow kernels to access simple arrays of objects -Aparapi needs to create OpenCL from the bytecode that it sees. Generally OpenCL constrains us to using parallel primitive arrays (OpenCL allows structs, but Java and OpenCL do not have comparable memory layouts for these structures). Therefore, you will generally need to refactor your code from a classic object-oriented form to use primitive arrays. - -This incompatibility between data-parallel and object-oriented code patterns might discourage use of Aparapi, so Aparapi includes limited support for arrays of simple Objects. Future versions may well extend this functionality and address performance loss. - -Consider the NBody example. - -Typically, a Java developer writing NBody would probably not separate the x,y and z ordinates into parallel arrays of floats as was required in the previous (alpha) version of Aparapi. Instead, a Java developer would probably create a Body class to hold the state of each body and possibly a Universe class (container of Body instances) with the responsible for positioning and possibly displaying the bodies. - - class Body{ - float x,y,z; - float getX(){return x;} - void setX(float _x){ x = _x;} - float getY(){return y;} - void setY(float _y){ y = _y;} - float getZ(){return z;} - void setZ(float _z){ z = _z;} - - - // other data related to Body unused by positioning calculations - } - - class Universe{ - final Body[] bodies; - public Universe(final Body[] _bodies){ - bodies = _bodies; - } - void adjustPositions(){ - for (Body outer:bodies){ - for (Body inner:bodies}{ - // adjust outer position to reflect the effect of inner - // using inner and outer getters and setters for x, y and z - } - } - } - void display(){ - for (Body body:bodies){ - // draw body based on x, y and z using Body getters - } - } - } -From the above code we see that the Universe.adjustPositions() method is compute intensive and an ideal candidate for refactoring to use Aparapi. The current version of Aparapi is able to deal with simple arrays of objects like this. - -Now when Aparapi encounters an array of objects and the accesses to these objects are constrained to simple getters and setters, Aparapi will automatically extract the values of the accessed fields into a data parallel form, execute the kernel and then replace the results back in the original objects in the array. This happens on each call to Kernel.execute() and is fairly costly (from a performance point of view), however, for embarrassingly parallel code (such as NBody), we can still show considerable performance gains over standard Java Thread Pool - -Attribution \ No newline at end of file diff --git a/doc/NewOpenCLBinding.md b/doc/NewOpenCLBinding.md deleted file mode 100644 index 32e5f434..00000000 --- a/doc/NewOpenCLBinding.md +++ /dev/null @@ -1,51 +0,0 @@ -#NewOpenCLBinding -*How to use new OpenCL binding mechanism. Updated Mar 6, 2012 by frost.g...@gmail.com* -As a step towards the extension mechanism I needed a way to easily bind OpenCL to an interface. - -Here is what I have come up with. We will use the 'Square' example. - -You first define an interface with OpenCL annotations.. - - interface Squarer extends OpenCL<Squarer>{ - @Kernel("{\n"// - + " const size_t id = get_global_id(0);\n"// - + " out[id] = in[id]*in[id];\n"// - + "}\n")// - public Squarer square(// - Range _range,// - @GlobalReadOnly("in") float[] in,// - @GlobalWriteOnly("out") float[] out); - } - -This describes the API we wish to bind to a set of kernel entrypoints (here we only have one, but we could have many). Then you 'realize' the interface by asking a device to create an implementation of the interface. Device is a new Aparapi class which represents a GPU or CPU OpenCL device. So here we are asking for the first (default) GPU device to realize the interface. - - Squarer squarer = Device.firstGPU(Squarer.class); -Now you can call the implementation directly with a Range. - - squarer.square(Range.create(in.length), in, out); -I think that we will have the easiest OpenCL binding out there... - -Following some conversations/suggestions online http://a-hackers-craic.blogspot.com/2012/03/aparapi.html we could also offer the ability to provide the OpenCL source from a file/url course using interface level Annotations. - -So we could allow. - - @OpenCL.Resource("squarer.cl"); - interface Squarer extends OpenCL<Squarer>{ - public Squarer square(// - Range _range,// - @GlobalReadOnly("in") float[] in,// - @GlobalWriteOnly("out") float[] out); - } -Or if the text is on-hand at compile time in a single constant string - - @OpenCL.Source("... opencl text here"); - interface Squarer extends OpenCL<Squarer>{ - public Squarer square(// - Range _range,// - @GlobalReadOnly("in") float[] in,// - @GlobalWriteOnly("out") float[] out); - } -Finally to allow for creation of dynamicl OpenCL (good for FFT's of various Radii). - - String openclSource = ...; - Squarer squarer = Device.firstGPU(Squarer.class, openclSource); diff --git a/doc/PossibleAparapiLambdaSyntaxOptions.md b/doc/PossibleAparapiLambdaSyntaxOptions.md deleted file mode 100644 index 8bfcf5f9..00000000 --- a/doc/PossibleAparapiLambdaSyntaxOptions.md +++ /dev/null @@ -1,96 +0,0 @@ -#PossibleAparapiLambdaSyntaxOptions -*syntax suggestions for HSA enabled Aparapi* - -#Introduction -Now that Java 8 is nearly upon us and HSA enabled Aparapi 'lambda' branch is usable (though in no way complete) I figured we could use this page to discuss the 'programming model' we might prefer for Aparapi, and contrast with the API's for the new Java 8 lambda based stream APIs. - -##Converting between Aparapi HSA + Java 8 enabled Aparapi -Our **hello world** app has always been the ''vector add''. In classic Aparapi we could transform - - final float inA[] = .... // get a float array from somewhere - final float inB[] = .... // get a float from somewhere - // assume (inA.length==inB.length) - final float result = new float[inA.length]; - - for (int i=0; i<array.length; i++){ - result[i]=intA[i]+inB[i]; - } -to - - Kernel kernel = new Kernel(){ - @Override public void run(){ - int i= getGlobalId(); - result[i]=intA[i]+inB[i]; - } - }; - Range range = Range.create(result.length); - kernel.execute(range); -For the lambda aparapi branch we can currently use - - Device.hsa().forEach(result.length, i-> result[i]=intA[i]+inB[i]); -Note that the closest Java 8 construct is - - IntStream.range(0, result.length).parallel().forEach(i-> result[i]=intA[i]+inB[i]); -Aparapi and Java 8 stream API's both use IntConsumer as the lambda type. So you can reuse the lambda. - - IntConsumer lambda = i-> result[i]=intA[i]+inB[i]; - - IntStream.range(0, result.length).parallel().forEach(lambda); - Device.hsa().forEach(result.length, lambda); -Exposing the Deviceness of this was a conscious effort. We may also hide it completely. - - IntConsumer lambda = i-> result[i]=intA[i]+inB[i]; - - IntStream.range(0, result.length).parallel().forEach(lambda); - Aparapi.forEach(result.length, lambda); -I am toying with providing an API which maps more closely to the Stream API from Java 8. - -Maybe - - IntStream.range(0, result.length).parallel().forEach(lambda); - Aparapi.range(0, result.length).parallel().forEach(lambda); -This way users can more readily swap between the two. - -For collections/arrays in Aparapi we can also offer - - T[] arr = // get an array of T from somewhere - ArrayList<T> list = // get an array backed list of T from somewhere - - Aparapi.range(arr).forEach(t -> /* do something with each T */); -We can create special cases. Say for mutating images - - BufferedImage in, out; - Aparapi.forEachPixel(in, out, rgb[] -> rgb[0] = 0 ); -We may also need select operations for associative operations - - class Person{ - int age; - String first; - String last; - }; - - Aparapi.selectOne(Person[] people, (p1,p2)-> p1.age>p2.age?p1:p2 ); -##A case for map reduce -A mapper maps from one type to another. Possibly by extracting state. Here is a mapper which maps each String in an array of Strings to its length. - -As if the mapper was - - interface mapToInt<T>{ int map(T v); } -Here it is in action. - - Aparapi.range(strings).map(s->string.length())... -Now the result is a stream of int's which can be 'reduced' by a reduction lambda. - -In this case the reduction reduces two int's to one, by choosing the max of k and v. All reductions must be commutative style operations (max, min, add) where the order of execution is not important. - - int lengthOfLongestString = Aparapi.range(strings).map(s->string.length()).reduce((k,v)-> k>v?k:v); -Here we had a sum reduction. - - int sumOfLengths = Aparapi.range(strings).map(s ->string.length()).reduce((k,v)-> k+v); -Some of these may be common enough that we offer direct functionality. - - int sumOfLengths = Aparapi.range(strings).map(s ->string.length()).sum(); - int maxOfLengths = Aparapi.range(strings).map(s ->string.length()).max(); - int minOfLengths = Aparapi.range(strings).map(s ->string.length()).min(); - String string = Aparapi.range(strings).map(s->string.length()).select((k,v)-> k>v); -This last one needs some explaining. We map String to int then select the String whose length is the greatest. \ No newline at end of file diff --git a/doc/PrivateMemorySpace.md b/doc/PrivateMemorySpace.md deleted file mode 100644 index 4b51d2f8..00000000 --- a/doc/PrivateMemorySpace.md +++ /dev/null @@ -1,34 +0,0 @@ -PrivateMemorySpace -================== - -*Using `__private` memory space in Aparapi kernels. Phase-Implementation Updated Sep 14, 2014 by barneydp...@gmail.com* - -## Introduction -The private memory space identifier (just "private" is also recognised) can be applied to struct fields in order to indicate that the data is not shared with/accessible to other kernel instances. Whilst this is the default for non-array data, it must be explicitly applied to array fields in order to make them private. Aparapi now supports arrays in the private memory space. - -The private memory space is generally only suitable for smallish arrays, but is required for certain algorithms, e.g. for those which must mutate (for example, sort or partially sort) an exclusive copy of an array/subarray. - -##Details -In Aparapi there are two mechanisms available to mark a Kernel class member as belonging to the private memory space when mapped to OpenCL code (matching the equivalent functionality for marking items as belonging to the local memory space). Either the field can be named with a suffix plus buffer size, for example - - protected short[] myBuffer_$private$32 = new short[32]; -or using the Annotation Kernel.PrivateMemorySpace, for example - - protected @PrivateMemorySpace(32) short[] myBuffer = new short[32]; -The latter should be used in preference to the former. - -Note that OpenCL requires that the size of a private array be fixed at compile time for any kernel. Thus it is not possible for a single Kernel subclass to support private buffers of varying size. Unfortunately this may entail creating multiple subclasses with varying buffer sizes in order to most efficiently support varying private buffer sizes. - -Of course, a single Kernel class can be created which has a private buffer large enough for all use cases, though this may be suboptimal if only a small fraction of the maximum buffer size is commonly required. - -Because private buffers are unshared, they require much more of a GPU's memory than a local or global buffer of the same size, and should therefore be used sparingly and kept as small as possible, as overuse of large private arrays might cause GPU execution to fail on lower-end graphics cards. - -However, private memory space is the fastest of all OpenCls memory spaces, so may in some limited cases might be used to increase execution speed even when the kernel does not need to modify the array and a shared (local or global) array would suffice - for example to provide a smallish lookup-table to replace an expensive function call. - -Without modification, an Aparapi kernel which uses private buffers may fail to work when invoked in Java Threadpool (JTP) mode, because the buffer will be shared across multiple threads. However a simple mechanism exists which allows such buffers to be used safely in JTP execution mode. - -The Kernel.NoCL annotation exists to allow specialised code to be executed when running in Java (or JTP) which is not invoked when running on the GPU. A NoCL method can be inserted at the begining of a Kernel's run() method which sets the private array to a value obtained from a static ThreadLocal<foo[]> where foo is the primitive type of the array in question. This will have no effect upon OpenCL execution, but will allow threadsafe execution when running in java. - -In the project samples, there is a package com.syncleus.com.syncleus.aparapi.examples.median which gives an example of a median image filter which uses a private array of pixel data to apply a distructive median algorithm to a "window" of local pixels. This sample also demonstrates how to use the ThreadLocal trick to allow correct behaviour when running in JTP execution mode. - -[http://code.google.com/p/aparapi/source/browse/trunk/samples/median/src/com/amd/aparapi/sample/median/MedianDemo.java](http://code.google.com/p/aparapi/source/browse/trunk/samples/median/src/com/amd/aparapi/sample/median/MedianDemo.java) \ No newline at end of file diff --git a/doc/ProfilingKernelExecution.md b/doc/ProfilingKernelExecution.md deleted file mode 100644 index 5ee1fb95..00000000 --- a/doc/ProfilingKernelExecution.md +++ /dev/null @@ -1,53 +0,0 @@ -#ProfilingKernelExecution -*Using Aparapi's built in profiling APIs Updated May 7, 2013 by frost.g...@gmail.com* - -If you want to extract OpenCL performance info from a kernel at runtime you need to set the property :- - - -Dcom.syncleus.aparapi.enableProfiling=true - -Your application can then call kernel.getProfileInfo() after a successful call to kernel.execute(range) to extract a List List<ProfileInfo>. - -Each ProfileInfo holds timing information for buffer writes, executs and buffer reads. - -The following code will print a simple table of profile information - - List<ProfileInfo> profileInfo = k.getProfileInfo(); - for (final ProfileInfo p : profileInfo) { - System.out.print(" " + p.getType() + " " + p.getLabel() + " " + (p.getStart() / 1000) + " .. " - + (p.getEnd() / 1000) + " " + ((p.getEnd() - p.getStart()) / 1000) + "us"); - System.out.println(); - } - -Here is an example implementation - - final float result[] = new float[2048*2048]; - Kernel k = new Kernel(){ - public void run(){ - final int gid=getGlobalId(); - result[gid] =0f; - } - }; - k.execute(result.length); - List<ProfileInfo> profileInfo = k.getProfileInfo(); - - for (final ProfileInfo p : profileInfo) { - System.out.print(" " + p.getType() + " " + p.getLabel() + " " + (p.getStart() / 1000) + " .. " - + (p.getEnd() / 1000) + " " + ((p.getEnd() - p.getStart()) / 1000) + "us"); - System.out.println(); - } - k.dispose(); - } - } -And here is the tabular output from - - java - -Djava.library.path=${APARAPI_HOME} - -Dcom.syncleus.aparapi.enableProfiling=true - -cp ${APARAPI_HOME}:. - MyClass - - W val$result 69500 .. 72694 3194us - X exec() 72694 .. 72835 141us - R val$result 75327 .. 78225 2898us - -The table shows that the transfer of the 'result' buffer to the device ('W') took 3194 us (micro seconds), the execute ('X') of the kernel 141 us and the read ('R') of resulting buffer 2898 us. \ No newline at end of file diff --git a/doc/ProfilingKernelsFromEclipse.md b/doc/ProfilingKernelsFromEclipse.md deleted file mode 100644 index c1edfc9e..00000000 --- a/doc/ProfilingKernelsFromEclipse.md +++ /dev/null @@ -1,97 +0,0 @@ -#ProfilingKernelsFromEclipse -*Profiling Kernels with AMD profiler in Eclipse (Indigo) Updated May 14, 2012 by frost.g...@gmail.com* - -##Profiling Kernels with AMD profiler in Eclipse (Indigo) - -Wayne Johnson - -12 May 2012 -Disclaimer: This has been tested with Eclipse (Indigo SR1) only on W7SR1. - -Assume your Eclipse project follows a typical Maven layout: - - Project - src/main/java/... - AlgorithmImplementation.java - src/test/java/... - BenchmarkRunner.java - BenchmarkTest.java - lib/aparapi-2012-02-15/ - aparapi jar file - native libraries for W7, Linux, and OSX - … - profiles/ - [this is where the profiles and logs will be generated] - -1. Download and install the current AMD APP SDK -2. Download and install Aparapi (see Wiki), making sure that the native libraries are on your build path. -3. Create your algorithm implementation(s). - - example: AlgorithmImplementations.java - -4. Create your performance benchmark test as a JUnit test case to exercise your implementations. - - example: BenchmarkTest.java - -5. Test your JUnit test case inside Eclipse using BenchmarkRunner to make sure it works. The runner will be the main application for the runnable jar file you create in the next step. - - This step will also automatically create the launch configuration that the export command will ask you for. Select BenchmarkRunner.java - - Right-click > Run as > Java application - -6. Export your project as a runnable jar file. - - Right-click > Export... - [wizard] Java > Runnable Jar File. Next. - Launch configuration: BenchmarkRunner [1] - Project - Export destination: Project\runner.jar - Library handling: [use default] Finish. - Ok on “...repacks referenced libraries†- Yes on “Confirm replace†[You won’t see this dialog on the first export but will on subsequent exports] - Ok [ignore warning dialog] - - After refreshing Project, you should see a runner.jar file at the top level. - -7. Create an external tool configuration to generate the performance counter profile - - Run > External Tools > External Tool Configurations... - Name: AMD counters - Project - Location: C:\Program Files (x86)\AMD APP\tools\AMD APP Profiler 2.4\x64\sprofile.exe - Arguments: - -o "${project_loc}\profiles\counters.csv" - -w "${project_loc}" - "C:\Program Files\Java\jdk1.6.0_30\bin\java.exe" - -Djava.library.path="lib\aparapi-2012-02-15" - -jar "${project_loc}\runner.jar" - - - Note: The ''java.library.path'' indicates the relative location of the folder containing the native libraries used by Aparapi. If this is not set correctly, steps 9 and 10 below will run in JTP execution mode and the only error message you will see on the Eclipse console is that the profile was not generated. This is because nothing executed on the GPU. - -8. Create an external tool configuration to generate the cltrace and summary profiles. - - 1. Run > External Tools > External Tool Configurations... - 2. Name: AMD cltrace - Project - 3. Location: C:\Program Files (x86)\AMD APP\tools\AMD APP Profiler 2.4\x64\sprofile.exe - 4. Arguments: - - `-o "${project_loc}\profiles\cltrace.txt" -k all -r -O -t -T` - - `-w "${project_loc}"` - - `"C:\Program Files\Java\jdk1.6.0_30\bin\java.exe"` - - `-Djava.library.path="lib\aparapi-2012-02-15"` - - `-jar "${project_loc}\runner.jar"` - - -9. Run the AMD profiler counter configuration to generate the counter profile. - - Run > External Tools > AMD counters - Project - - -10. Run the AMD profiler cltrace configuration to generate the cltrace and summary profiles. - - Run > External Tools > AMD cltrace - Project - A project file for testing the above instructions can be found http://code.google.com/p/aparapi/source/browse/trunk/wiki-collateral/ProfilingKernelsFormEclipseProject.zip - diff --git a/doc/README.md b/doc/README.md deleted file mode 100644 index 5bbba270..00000000 --- a/doc/README.md +++ /dev/null @@ -1,46 +0,0 @@ -APARAPI Documentation -====================== - -| | | -|----------------|------| -| [PrivateMemorySpace](PrivateMemorySpace.md)| Using `__private` memory space in Aparapi kernels. | -| [SettingUpLinuxHSAMachineForAparapi](SettingUpLinuxHSAMachineForAparapi.md) | How to setup a Linux HSA machine for testing HSA enabled Aparapi | -| [PossibleAparapiLambdaSyntaxOptions](PossibleAparapiLambdaSyntaxOptions.md) | Syntax suggestions for HSA enabled Aparapi | -| [HSAEnablementOfLambdaBranchSidebar](HSAEnablementOfLambdaBranchSidebar.md)| Sidebar for HSAEnablementOfLambdaBranchAparapi| -| [HSAEnablementOfLambdaBranch](HSAEnablementOfLambdaBranch.md) | Adding HSA Support to Aparapi lambda branch | -| [UsingAparapiLambdaBranchWithHSASimulator](UsingAparapiLambdaBranchWithHSASimulator.md) | One-sentence summary of this page. | -| [SettingUpLinuxHSAMachineForAparapiSidebar](SettingUpLinuxHSAMachineForAparapiSidebar.md) | Sidebar for SettingUpLinuxHSAMachineForAparapi | -| HSASidebar | | -| [AddingLambdasToAparapi](AddingLambdasToAparapi.md) | Adding Java 8 Lambda Support to Aparapi | -| [ProfilingKernelExecution](ProfilingKernelExecution.md) | Using Aparapi's built in profiling APIs | -| [HowToAddUML](HowToAddUML.md) | How to add plantuml docs to wiki pages | -| [LIbraryAgentDuality](LIbraryAgentDuality.md) | Aparapi libraries can now be loaded as JVMTI agents. | -| [FrequentlyAskedQuestions](FrequentlyAskedQuestions.md) | Frequently Asked Questions| -| HomePageSuggestions || -| [ChoosingSpecificDevicesForExecution](ChoosingSpecificDevicesForExecution.md) | Using the new Device API's to choose Kernel execution on a specific device. | -| Gadgets | Gadgetorium| -| [ConvertingBytecodeToOpenCL](ConvertingBytecodeToOpenCL.md) | How Aparapi converts bytecode to OpenCL | -| [DevelopersGuideLinux](DevelopersGuideLinux.md) | Developer guide for Linux. | -| [DevelopersGuideWindows](DevelopersGuideWindows.md) | Developers guide for Windows. | -| [EmulatingMultipleEntrypointsUsingCurrentAPI](EmulatingMultipleEntrypointsUsingCurrentAPI.md) | How to emulate multiple entrypoints using existing Aparapi APIs | -| [MultipleEntryPointSupportProposal](MultipleEntryPointSupportProposal.md) | How to extend Aparapi to allow multiple entrypoints for kernels | -| [ExplicitBufferHandling](ExplicitBufferHandling.md) | How to minimize buffer transfers | -| [AparapiPatterns](AparapiPatterns.md) | Examples and code fragments to demonstrate Aparapi fetaures. | -| [ProfilingKernelsFromEclipse](ProfilingKernelsFromEclipse.md) | Profiling Kernels with AMD profiler in Eclipse (Indigo) | -| [DeviceProposal](DeviceProposal.md) | How we might use the extension mechanism devices for general Kernel execution.| -| [NewOpenCLBinding](NewOpenCLBinding.md) | How to use new OpenCL binding mechanism. | -| [AparapiExtensionProposal](AparapiExtensionProposal.md) | A proposed aparapi extension mechanism. | -| [UsingConstantMemory](UsingConstantMemory.md) | How to make use of constant memory in a Kernel | -| [UsingLocalMemory](UsingLocalMemory.md) | How to make use of local memory in a Kernel | -| [UsingMultiDimExecutionRanges](UsingMultiDimExecutionRanges.md) | How to use the new Range class (for multi-dim range access) | -| [AccessingMultiDimNDRangeProposal](AccessingMultiDimNDRangeProposal.md) | A proposal for accessing multi-dim ND range execution | -| LocalMemoryAndBarrierProposal | A proposal for handling local memory and barriers | -| [AddressSpacesUsingBuffers](AddressSpacesUsingBuffers.md) | Proposal For OpenCL address space support using java Buffers instead of arrays. | -| [BuildingNBody](BuildingNBody.md) | How to build the NBody example.| -| [UnitTestGuide](UnitTestGuide.md) | Unit test Guide Find out how to run Junit tests and how to add new tests. | -| [NewFeatures](NewFeatures.md) | New Features added to this open source release of Aparapi. | -| [UsersGuide](UsersGuide.md) | Aparapi User's Guide. | -| [DevelopersGuide](DevelopersGuide.md) | Aparapi developers guide. | -| [ContributionGuide](ContributionGuide.md) | How to contribute (bug fix or features). | -| [JavaKernelGuidelines](JavaKernelGuidelines.md) | What code can and can't be converted to OpenCL by Aparapi. | -| [Attribution](Attribution.md) | Attribution | diff --git a/doc/SettingUpLinuxHSAMachineForAparapi.md b/doc/SettingUpLinuxHSAMachineForAparapi.md deleted file mode 100644 index edf564be..00000000 --- a/doc/SettingUpLinuxHSAMachineForAparapi.md +++ /dev/null @@ -1,209 +0,0 @@ -#SettingUpLinuxHSAMachineForAparapi -*How to setup a Linux HSA machine for testing HSA enabled Aparapi Updated May 22, 2014 by frost.g...@gmail.com* - -* HSA Videos - * [http://www.youtube.com/watch?v=5ntILiXTuhE](http://www.youtube.com/watch?v=5ntILiXTuhE) - * [http://www.youtube.com/watch?v=caEPq4KvTTA](http://www.youtube.com/watch?v=caEPq4KvTTA) -* HSA Articles - * [http://developer.amd.com/resources/heterogeneous-computing/what-is-heterogeneous-computing/](http://developer.amd.com/resources/heterogeneous-computing/what-is-heterogeneous-computing/) -* HSA Foundation - * [https://github.com/HSAFoundation](https://github.com/HSAFoundation) - -##Introduction -Now that HSA hardware is generally available I figured it was time to describe how to setup a HSA enabled Linux platform so that it can run Aparapi. - -Here is a nice introduction to HSA [http://developer.amd.com/resources/heterogeneous-computing/what-is-heterogeneous-system-architecture-hsa/](http://developer.amd.com/resources/heterogeneous-computing/what-is-heterogeneous-system-architecture-hsa/) - -But for Aparapi users the main advantage is that we are no longer limited to the GPU memory for running GPU tasks. Also because the CPU and the GPU can both see the same memory (the Java heap) Aparapi code can now access Java objects directly. This removes a number of Aparapi constraints. So more of your code can now run on the GPU. - -##Hardware Required -These instructions were based on my experience setting up a platform using the following hardware. - -|Component | Suggested | -|---------------|---------------------------| -|APU | AMD A10-7850K APU [http://www.amd.com/us/products/desktop/processors/a-series/Pages/a-series-apu.aspx](http://www.amd.com/us/products/desktop/processors/a-series/Pages/a-series-apu.aspx) | -|Motherboard | ASUS A88X-PRO or A88XM-A [http://www.asus.com/Motherboards/A88XPRO](http://www.asus.com/Motherboards/A88XPRO) [http://www.asus.com/Motherboards/A88XMA](http://www.asus.com/Motherboards/A88XMA)| -| Memory | G.SKILL Ripjaws X Series 16GB (2 x 8GB) 240-Pin DDR3 SDRAM DDR3 2133| - -##Software Required -We also have some software dependencies. - -|Component | Suggested | -|---------------|-----------| -| Java 8 JDK | [http://www.oracle.com/technetwork/java/javase/downloads/ea-jsp-142245.html](http://www.oracle.com/technetwork/java/javase/downloads/ea-jsp-142245.html) | -| Ubuntu 13.10 64-bit edition | [http://www.ubuntu.com/download](http://www.ubuntu.com/download) | -| Ubuntu 13.10 64-bit edition HSA enabled kernel image | [https://github.com/HSAFoundation/Linux-HSA-Drivers-And-Images-AMD](https://github.com/HSAFoundation/Linux-HSA-Drivers-And-Images-AMD) | -| OKRA HSA enabled runtime | [https://github.com/HSAFoundation/Okra-Interface-to-HSA-Device](https://github.com/HSAFoundation/Okra-Interface-to-HSA-Device) | - -The hope is that the list of HW/SW support widens, but for early adopters this is the set of HW/SW we have been testing with. - -#Setting up your System -##Configure your BIOS to support IOMMU -Once you have built your AMD A10-7850K APU based system you should make sure that your system is configured to use IOMMU. - -Remember HSA allows the GPU and CPU cores to share the same memory. IOMMU needs to be enabled for this. - -##For the A88X-PRO board -For the recommended ASUS board above you will need to make sure that your BIOS is updated to version 0802. Here is a direct link to the 0802 version of the BIOS from ASUS's site as of 2/28/2014. - -[http://dlcdnet.asus.com/pub/ASUS/mb/SocketFM2/A88X-PRO/A88X-PRO-ASUS-0802.zip](http://dlcdnet.asus.com/pub/ASUS/mb/SocketFM2/A88X-PRO/A88X-PRO-ASUS-0802.zip) - -Once you have the latest BIOS you will need to enable IOMMU in the system BIOS. This is done using the "CPU Configuration" screen under "Advanced Mode" and then enabling IOMMU. - -##For the A88XM-A -You will need the 1102 (or later) version of the BIOS - -[http://dlcdnet.asus.com/pub/ASUS/mb/SocketFM2/A88XM-A/A88XM-A-ASUS-1102.zip](http://dlcdnet.asus.com/pub/ASUS/mb/SocketFM2/A88XM-A/A88XM-A-ASUS-1102.zip) - -Once you have the latest BIOS you will need to enable IOMMU in the system BIOS. This is done using the "CPU Configuration" screen under "Advanced Mode" and then enabling IOMMU. - -##Installing Ubuntu 13.10 -Once you have your BIOS setup you need to install Ubuntu [http://www.ubuntu.com/download](http://www.ubuntu.com/download) - -Installing HSA enabled kernel + driver -Until all of the HSA drivers and features are available in stock linux and have been pulled down into Ubuntu distro we will need a special HSA enabled kernel image. - -##A Ubuntu compatible kernel can be pulled from github - - $ cd ~ # I put all of this in my home dir - $ sudo apt-get install git - $ git clone https://github.com/HSAFoundation/Linux-HSA-Drivers-And-Images-AMD.git -Or you can pull the zip and unzip using curl if you don't have git - - $ cd ~ # I put all of this in my home dir - $ curl -L https://github.com/HSAFoundation/Linux-HSA-Drivers-And-Images-AMD/archive/master.zip > drivers.zip - $ unzip drivers.zip -This will create the following subdir on your machine - - Linux-HSA-Drivers-And-Images-AMD/ - LICENSE - README.md - ubuntu12.10-based-alpha1/ - xorg.conf - linux-image-3.13.0-kfd+_3.13.0-kfd+-2_amd64.deb - - -From here we can install our new image and setup the HSA KFD (the driver for HSA)and reboot to the new kernel. - - $ cd ~/Linux-HSA-Drivers-And-Images-AMD - $ echo "KERNEL==\"kfd\", MODE=\"0666\"" | sudo tee /etc/udev/rules.d/kfd.rules - $ sudo dpkg -i ubuntu13.10-based-alpha1/linux-image-3.13.0-kfd+_3.13.0-kfd+-2_amd64.deb - $ sudo cp ~/Linux-HSA-Drivers-And-Images-AMD/ubuntu13.10-based-alpha1/xorg.conf /etc/X11 - $ sudo reboot -##Installing OKRA RT -Now we need a runtime for executing HSAIL code. We share common infrastructure used by our sister OpenJDK project called Sumatra. Both Aparapi and Sumatra use OKRA to execute HSAIL code on a HSA enabled platform. - -We can get the latest version using of OKRA (Offloadable Kernel Runtime API) from another HSA foundation repository. - - $ cd ~ # I put all of this in my home dir - $ git clone https://github.com/HSAFoundation/Okra-Interface-to-HSA-Device.git -or if you prefer curl/unzip - - $ cd ~ # I put all of this in my home dir - $ curl -L https://github.com/HSAFoundation/Okra-Interface-to-HSA-Device/archive/master.zip > okra.zip - $ unzip okra.zip -This will create the following dir structure. - - Okra-Interface-to-HSA-Device/ - README.md - okra/ - README - dist/ - okra.jar - bin/ - libamdhsacl64.so - libnewhsacore64.so - libokra_x86_64.so - include/ - common.h - okraContext.h - - samples/ - dist/ - Squares - Squares.hsail - runSquares.sh - -OKRA offers a C API (for those that are so inclined ;) ) as well as a java jar file which contains JNI wrappers. - -##Sanity check your HSA and OKRA install -So to sanity check your install you can run a small sample app (binary) - - $ cd ~/Okra-Interface-to-HSA-Device/okra/samples/ - $ sh runSquares.sh -If everything is OK this should run the C Squares test app. - -Congratulations, you have executed your first HSA enabled app. - -Getting OpenCL headers and libraries -We need OpenCL headers and libraries to build Aparapi (remember we still support OpenCL). - -My recommendation is to download AMD-APP-SDK-v2.9-lnx64.tgz from [http://developer.amd.com/tools-and-sdks/heterogeneous-computing/amd-accelerated-parallel-processing-app-sdk/downloads](http://developer.amd.com/tools-and-sdks/heterogeneous-computing/amd-accelerated-parallel-processing-app-sdk/downloads) and extract the libraries and headers. - -Note that we have nested zipped jars in this archive. - - $ cd ~ - $ gunzip ~/Downloads/AMD-APP-SDK-v2.9-lnx64.tgz - $ tar xvf ~/Downloads/AMD-APP-SDK-v2.9-lnx64.tar - $ rm ~/default-install_lnx_64.pl ~/icd-registration.tgz ~/Install-AMD-APP.sh ~/ReadMe.txt - $ gunzip ~/AMD-APP-SDK-v2.9-RC-lnx64.tgz - $ tar xvf ~/AMD-APP-SDK-v2.9-RC-lnx64.tar - $ rm ~/AMD-APP-SDK-v2.9-RC-lnx64.tar - $ rm -rf AMD-APP-SDK-v2.9-RC-lnx64/samples -Note where AMD-APP-SDK-v2.9-RC-lnx64 is located, you need this in the following step. - -##You will need Java 8 -Download Java 8 JDK from [https://jdk8.java.net/download.html](https://jdk8.java.net/download.html) I chose to download the zipped tar and not install with RPM so I can control the location of the install. - - $ cd ~ - $ gunzip /home/gfrost/Downloads/jdk-8-fcs-bin-b132-linux-x64-04_mar_2014.tar.gz - $ tar xvf ~/Downloads/jdk-8-fcs-bin-b132-linux-x64-04_mar_2014.tar -I now have ~/jdk1.8.0 as my java 8 install dir. - -Alternatively the following will pull from Oracles site using curl - - $ cd ~ - $ curl http://download.java.net/jdk8/archive/b132/binaries/jdk-8-fcs-bin-b132-linux-x64-04_mar_2014.tar.gz?q=download/jdk8/archive/b132/binaries/jdk-8-fcs-bin-b132-linux-x64-04_mar_2014.tar.gz > jdk-8-fcs-bin-b132-linux-x64-04_mar_2014.tar.gz - $ gunzip jdk-8-fcs-bin-b132-linux-x64-04_mar_2014.tar.gz - $ tar xvf jdk-8-fcs-bin-b132-linux-x64-04_mar_2014.tar -I now have ~/jdk1.8.0 as my java 8 install dir. - -##You will need ant - $ sudo apt-get install ant -This takes a long time because in also installs a java7 jdk. - -##You will need g++ -We use g++ to build the JNI side of Aparapi - - $ sudo apt-get install g++ -##Pulling the HSA enabled Aparapi branch and building -Now we can pull the Aparapi lambda/HSA branch from SVN - - $ sudo apt-get install subversion - $ svn checkout https://aparapi.googlecode.com/svn/branches/lambda aparapi-lambda -If you are familiar with Aparapi structure then this tree should not be that much of a surprise but there are a few subtle changes. - -Specifically the build system has been changed to support OKRA, Aparapi JNI code is provided as a Java agent and the execution scripts all refer to ${APARAPI_HOME}/env.sh to setup a reasonable execution environment. - -You will need to edit env.sh and make sure that APARAPI_HOME, OKRA_HOME, OCL_HOME and JAVA_HOME correctly. - -Here are how I set my vars. - -|environment variable |value| -|-----------------------|-----| -|JAVA_HOME |/home/${LOGNAME}/jdk1.8.0| -|OCL_HOME |/home/${LOGNAME}/AMD-APP-SDK-v2.9-RC-lnx64| -|APARAPI_HOME |/home/${LOGNAME}/aparapi-lambda| -|OKRA_HOME |/home/${LOGNAME}/Okra-Interface-to-HSA-Device/okra/| - -It is recommended (thanks notzed ;) ) that you test your env.sh using sh env.sh until it stops reporting errors. Once you have finished I recommend sourcing it into your current shell before building with ant. - - $ cd ~aparapi-lambda - $ . env.sh - $ ant -If you get any problems check the env.sh vars first. - -If all is well you should be able to run some samples. - - $ cd ~/aparapi-lambda/samples/mandel - $ sh hsailmandel.sh \ No newline at end of file diff --git a/doc/SettingUpLinuxHSAMachineForAparapiSidebar.md b/doc/SettingUpLinuxHSAMachineForAparapiSidebar.md deleted file mode 100644 index 9d165df7..00000000 --- a/doc/SettingUpLinuxHSAMachineForAparapiSidebar.md +++ /dev/null @@ -1,10 +0,0 @@ -#SettingUpLinuxHSAMachineForAparapiSidebar -*Sidebar for SettingUpLinuxHSAMachineForAparapi* - -* HSA Videos - * [http://www.youtube.com/watch?v=5ntILiXTuhE](http://www.youtube.com/watch?v=5ntILiXTuhE) - * [http://www.youtube.com/watch?v=caEPq4KvTTA](http://www.youtube.com/watch?v=caEPq4KvTTA) -* HSA Articles - * [http://developer.amd.com/resources/heterogeneous-computing/what-is-heterogeneous-computing/](http://developer.amd.com/resources/heterogeneous-computing/what-is-heterogeneous-computing/) -* HSA Foundation - * [https://github.com/HSAFoundation](https://github.com/HSAFoundation) \ No newline at end of file diff --git a/doc/UnitTestGuide.md b/doc/UnitTestGuide.md deleted file mode 100644 index 1f928f1c..00000000 --- a/doc/UnitTestGuide.md +++ /dev/null @@ -1,174 +0,0 @@ -#UnitTestGuide -*Unit test Guide Find out how to run Junit tests and how to add new tests. Updated Sep 14, 2011 by frost.g...@gmail.com* - -#Unit Test Guide - -The Unit Test Guide explains the test infrastructure associated with Aparapi, including instructions for executing existing tests adding new test cases. -OpenCLâ„¢ code generation tests - -The initial open source tree includes the codegen subdirectory (test/codegen), which used to validate the Aparapi bytecode to OpenCLâ„¢ conversion. - - aparapi/trunk/ - com.syncleus.aparapi/ - src/java/com.syncleus.aparapi/ - build.xml - test/ - codegen/ - src/java/ - com.syncleus.aparapi/ - com.syncleus.aparapi.test/ - build.xml - build.xml - -The code generation tests to not require OpenCLâ„¢ , AMD APP SDK or a GPU devices to be configured; these tests only validate the creation of valid OpenCLâ„¢ code by comparing against predefined expected output. - -##Running the OpenCLâ„¢ code generation JUnit tests - -Before executing the code generation tests, build the com.syncleus.aparapi sub-project and ensure that you have JUnit 4 installed. - -Edit the junit.jar property in test/codegen/build.xml to point to your install directory. - - <property name="junit.jar" value="C:\JUnit4.9\junit-4.9.jar"/> - -Initiate the code generation tests using ant. - - C:\> cd tests/codegen - C:\> ant - <failures will be reported here> - C:> - -View the HTML version of the JUnit report at junit/html/index.html. On Microsoft Windows(r) platforms use - - C:\> start junit\html\index.html - -On Linux(r) platforms just invoke your browser (Firefox in this case). - - C:\> firefox junit\html\index.html - -##Adding a new OpenCLâ„¢ code generation test - -The test cases for OpenCLâ„¢ code generation are not strictly JUnit tests. Instead the codegen Java tree contains a tool (CreateJUnitTests) to create JUnit test cases from specially formatted test source files. - -The package `com.syncleus.aparapi.test (codegen/src/java/com/amd/aparapi/test)` contains all of the existing code generation tests. - -Here is an example that tests the code generation resulting from a call to Kernel.getPassId(), this is taken from com.syncleus.aparapi.test.CallGetPassId - - package com.syncleus.aparapi.test; - - import com.syncleus.aparapi.Kernel; - - public class CallGetPassId extends Kernel{ - public void run() { - int thePassId = getPassId(); - } - - } - /**{OpenCL{ - - typedef struct This_s{ - int passid; - }This; - int get_pass_id(This *this){ - return this->passid; - } - __kernel void run( - int passid - ){ - This thisStruct; - This* this=&thisStruct; - this->passid = passid; - { - int thePassId = get_pass_id(this); - return; - } - } - - }OpenCL}**/ - -The test source takes the form of a simple class that extends the kernel and a block of OpenCL code between the /**{OpenCL{ and }OpenCL}**/ markers. The code between these markers is the OpenCL code that we expect Aparapi to produce as a result of converting the run() method to OpenCL. - -The code-generating ant build.xml file performs the following steps to generate its report: - -* compiles the src/java tree. This compiles all the test cases as well as a few ‘utility’ classes. -* executes the com.syncleus.aparapi.test.CreateJUnitTests program. This iterates through all of the test source files and converts them to JUnit form. The generated source is written to the src/genjava tree. -* compiles the src/genjava tree to create the required JUnit classes -* initiates the JUnit test phase (result data in junit/data) -* creates the JUnit report (in junit/html/junit from junit/data) - -To create a new test case, just add your test case to the `codegen/src/java/com/amd/aparapi/test` package (including the expected OpenCL). - -Sometimes different javac implementations (such as Oracle and Eclipse) will generate different bytecode for the same source. When Aparapi converts this bytecode it may yield different (but equally acceptable) OpenCL forms. One example of this is the BooleanToggle test: - - public class BooleanToggle{ - public void run() { - boolean pass = false; - - pass = !pass; - - } - } - -The BooleanToggle test code creates two (slightly different) versions of OpenCLâ„¢ (sadly one line different) depending on the javac compiler. - -This example shows the ‘toggle’ OpenCLâ„¢ created from the bytecode generated by Oracle. - - pass = pass==1?0:1; - -This example shows the bytecode from Eclipse javac: - - pass = pass==0?1:0; - -Logically either of the above are correct. However, to accommodate the alternate acceptable forms we need to add two complete `/**{OpenCL{ and }OpenCL}**/` sections to the file. If either matches, the test will pass. - -Here is the complete BooleanToggle code. - - package com.syncleus.aparapi.test; - - public class BooleanToggle{ - public void run() { - boolean pass = false; - - pass = !pass; - - } - } - /**{OpenCL{ - typedef struct This_s{ - int passid; - }This; - int get_pass_id(This *this){ - return this->passid; - } - __kernel void run( - int passid - ){ - This thisStruct; - This* this=&thisStruct; - this->passid = passid; - { - char pass = 0; - pass = (pass==0)?1:0; - return; - } - } - }OpenCL}**/ - /**{OpenCL{ - typedef struct This_s{ - int passid; - }This; - int get_pass_id(This *this){ - return this->passid; - } - __kernel void run( - int passid - ){ - This thisStruct; - This* this=&thisStruct; - this->passid = passid; - { - char pass = 0; - pass = (pass!=0)?0:1; - return; - } - } - }OpenCL}**/ \ No newline at end of file diff --git a/doc/UsersGuide.md b/doc/UsersGuide.md deleted file mode 100644 index e9b1a0af..00000000 --- a/doc/UsersGuide.md +++ /dev/null @@ -1,126 +0,0 @@ -#UsersGuide -*Aparapi User's Guide. Updated Sep 14, 2011 by frost.g...@gmail.com* -##User’s Guide -Aparapi is: An API used to express data parallel workloads in Java and a runtime system capable of running compatible workloads on a compatible GPU. - -Where your workload runs depends on - -Whether you have a compatible GPU and OpenCL capable device driver -Whether your Java parallel code can be converted to OpenCL by Aparapi -For information about restrictions on the code that Aparapi can convert to OpenCL, see JavaKernelGuidelines. -Aparapi depends on AMD’s OpenCLâ„¢ driver to execute on the GPU and therefore shares the same device, driver, and platform compatibility requirements as AMD APP SDK V2.5®. - -* 32-bit Microsoft® Windows® 7 -* 32-bit Microsoft® Windows Vista® SP2 -* 64-bit Microsoft® Windows® 7 -* 64-bit Microsoft® Windows Vista® SP2 -* 32-bit Linux® OpenSUSEâ„¢ 11.2, Ubuntu® 10.04/9.10, or Red Hat® Enterprise Linux® 5.5/5.4 -* 64-bit Linux® OpenSUSEâ„¢ 11.2, Ubuntu® 10.04/9.10, or Red Hat® Enterprise Linux® 5.5/5.4 -* An OpenCL GPU and suitable OpenCL enabled device driver -* An installed AMD APP SDK v2.5 or later - -If you prefer to test Aparapi in JTP mode (Java Thread Pool) then you will only need Aparapi.jar and Oracle Java 6 or later JRE or JDK. -The following fragment of Java code takes an input float array and populates an output array with the square of each element. - - final float in[8192]; // initialization of in[0..8191] omitted - final float out[in.length]; - - for(int i=0; i<in.length; i++){ - out[i]=in[i]*in[i]; - } -This code segment illustrates an ideal data parallel candidate, each pass through the loop is independent of the others. Traversing the loop in any order should provide the same result. - -To convert the above code to Aparapi we use an anonymous inner-class (a common Java idiom) to express the data parallel nature of the above sequential loop. - - Kernel kernel = new Kernel(){ - @Override public void run(){ - int i = getGlobalId(); - out[i]=in[i]*in[i]; - } - }; - kernel.execute(in.length); -Java developers should recognize the general pattern as similar to that used to launch a new Thread. - - Thread thread = new Thread(new Runnable(){ - @Override public void run(){ - System.out.println(“In another thread!â€); - } - }); - thread.start(); - thread.join(); -The Aparapi developer extends the com.syncleus.aparapi.Kernel and overrides the public void Kernel.run() method. It is this Kernel.run() method that is executed in parallel. - -The base class also exposes the Kernel.execute(range) method which is used to initiate the execution of Kernel.run() over the range 0...n. - -Kernel.execute(range) will block until execution has completed. Any code within the overridden ‘void run()’ method of Kernel (and indeed any method or methods reachable from that method) is assumed to be data-parallel and it is the developer’s responsibility to ensure that it is. Aparapi can neither detect nor enforce this. - -Within the executing kernel (on the GPU device or from the thread pool) the Kernel.getGlobalId() method is used to identify which (of the range 0..n) a particular execution represents. - -## Compiling an Aparapi application -Aparapi has only two compilation requirements: - -Aparapi.jar must be in the class path at compile time. -The generated class files must contain debug information (javac –g) -A typical compilation might be: - $ javac –g –cp ${APARAPI_DIR}/aparapi.jar Squares.java -Aparapi requires this classfile debug information so that can extract the name and scope of local variables for the generated OpenCL. - -## Running an Aparapi application -At runtime an Aparapi-enabled application requires aparapi.jar to be in the class path to be able to execute in a Java Thread Pool (no GPU offload). - - $ java–cp ${APARAPI_DIR}/aparapi.jar;. Squares -To take advantage of the GPU, the directory containing the platform-dependent Aparapi shared library is passed via the java.library.path property. - - $ java –Djava.library.path=${APARAPI_DIR} –cp ${APARAPI_DIR}/aparapi.jar;. Squares - -Aparapi detects whether the JNI shared library is available. If the library cannot be located your code will be executed using a Java Thread Pool. - -An application can detect whether a kernel was executed on the GPU or by a Java Thread Pool (JTP) by querying the execution mode ‘after’ Kernel.execute(range) has returned. This is achieved using the Kernel.getExecutionMode() method. - - Kernel kernel = new Kernel(){ - @Override public void run(){ - int i = getGlobalId(); - out[i]=in[i]*in[i]; - } - }; - kernel.execute(in.length); - if (!kernel.getExecutionMode().equals(Kernel.EXECUTION_MODE.GPU)){ - System.out.println(“Kernel nid not execute on the GPU!â€); - } - -To obtain a runtime report of the execution mode of all kernel executions, set the com.syncleus.aparapi.enableExecutionModeReporting property to true when the JVM is launched. - - $ java –Djava.library.path=${APARAPI_DIR} –Dcom.syncleus.aparapi.enableExecutionModeReporting=true –cp ${APARAPI_DIR}/aparapi.jar;. Squares - -##Running the sample applications -Aparapi includes two sample applications in the /samples subdirectory of the binary distribution zip file. - -samples/squares simple example that computes an array of squares of integers -samples/mandel computes and displays the Mandelbrot set -The jar file for each sample is included (so you can run a sample without having to build it) as well as both Linux® and Microsoft Windows® script files for launching the samples. - -You will need an appropriate GPU card, OpenCL® enabled Catalyst® driver and a compatible Oracle Java 6 JRE for your platform. To execute a sample: - -Set the environment variable JAVA_HOME to point to the root of your JRE or JDK. -Change to the appropriate samples directory (samples/squares or samples/mandel) -Run either the .bat or .sh script. On Linux® , you might have to initially chmod +x script.sh to add execute permissions. -The sample scripts pass the first arg (%1 or $1) to -Dcom.syncleus.aparapi.executionMode when the JVM is launched. This allows the sample to be tested in either GPU or JTP execution modes by passing the requested mode. - - $ cd samples/mandel - $ bash ./mandel.sh GPU - <executes in GPU mode here> - $ bash ./mandel.sh JTP - <executes in JTP mode here> - -## Building the sample applications -To build a sample, install Oracle® JDK 6 and Apache Ant (at least 1.7.1). - -Set the environment variable ANT_HOME to point to the root of your ant install. -Ensure that the %ANT_HOME%/bin or ${ANT_HOME}/bin is in your path. -Set the environment variable JAVA_HOME to point to the root of your JDK. -Change to the appropriate samples directory (sample/squares or sample/mandel). -Initiate a build using ant. - $ cd samples/mandel - $ ant - $ bash ./mandel.sh GPU -Attribution \ No newline at end of file diff --git a/doc/UsingAparapiLambdaBranchWithHSASimulator.md b/doc/UsingAparapiLambdaBranchWithHSASimulator.md deleted file mode 100644 index e4c7a686..00000000 --- a/doc/UsingAparapiLambdaBranchWithHSASimulator.md +++ /dev/null @@ -1,46 +0,0 @@ -#UsingAparapiLambdaBranchWithHSASimulator -*One-sentence summary of this page. Updated Feb 28, 2014 by frost.g...@gmail.com* - -##Introduction -Although HSA compatible devices are available, we understand that Aparapi developers may not have access to these devices. - -The HSA foundation has open sourced an LLVM based HSAIL emulator which we can use to test HSAIL generated code. - -The project is based here ([https://github.com/HSAFoundation/Okra-Interface-to-HSAIL-Simulator](https://github.com/HSAFoundation/Okra-Interface-to-HSAIL-Simulator)) but we have extracted detailed download and build instructions for Ubuntu below. - -Aparapi users/developers can use this simulator to test correctness. - -##Building the HSA Simulator on Ubuntu -We assume you have ant, svn and g++ available because you can build other aparapi artifacts. - -You will also need git, libelf-dev, libdwarf-dev, flex and cmake - - $ sudo apt-get install git libelf-dev libdwarf-dev flex cmake - -login... - - $ git clone https://github.com/HSAFoundation/Okra-Interface-to-HSAIL-Simulator.git okra - $ cd okra - $ ant -f build-okra-sim.xml - -##The build should take approximately 15 mins. - -How to setup and test an initial lambda/HSA enabled Aparapi build -Assuming you have built okra in /home/gfrost/okra - -Assuming your Java8 JDK is in /home/gfrost/jdk1.8.0 - -Assuming your aparapi svn trunk is /home/gfrost/aparapi - - $ export JAVA_HOME=/home/gfrost/jdk1.8.0 - $ export OKRA=/home/gfrost/okra - $ export PATH=${PATH}:${JAVA_HOME}/bin:${OKRA}/dist/bin - $ java -version - java version "1.8.0-ea" - Java(TM) SE Runtime Environment (build 1.8.0-ea-b94) - Java HotSpot(TM) 64-Bit Server VM (build 25.0-b36, mixed mode) - $ cd /home/gfrost/aparapi/branches/lambda - $ ant - $ export LD_LIBRARY_PATH=${LD_LIBRARY_PATH}:${OKRA}/dist/bin - $ java -agentpath:com.syncleus.aparapi.jni/dist/libaparapi_x86_64.so -cp com.syncleus.aparapi/dist/aparapi.jar:${OKRA}/dist/okra.jar hsailtest.Squares - $ \ No newline at end of file diff --git a/doc/UsingConstantMemory.md b/doc/UsingConstantMemory.md deleted file mode 100644 index cc049d8f..00000000 --- a/doc/UsingConstantMemory.md +++ /dev/null @@ -1,50 +0,0 @@ -#UsingConstantMemory -*How to make use of constant memory in a Kernel Updated Feb 28, 2012 by frost.g...@gmail.com* -##How to make use of new constant memory feature -By default all primitive arrays accessed by an Aparapi Kernel is considered global. If we look at the generated code using `-Dcom.syncleus.aparapi.enableShowGeneratedOpenCL=true` we will see that primitive arrays (such as `int buf[]`) are mapped to `__global` pointers (such as `__global int *buf`) in OpenCL. - -Although this makes Aparapi easy to use (especially to Java developers who are unfamiliar to tiered memory hierarchies), it does limit the ability of the 'power developer' wanting to extract more performance from Aparapi on the GPU. - -This [page](http://www.amd.com/us/products/technologies/stream-technology/opencl/pages/opencl-intro.aspx?cmpid=cp_article_2_2010) from AMD's website shows the different types of memory that OpenCL programmers can exploit. - -Global memory buffers in Aparapi (primitive Java arrays) are stored in host memory and are copied to Global memory (the RAM of the GPU card). - -Local memory is 'closer' to the compute devices and not copied from the host memory, it is just allocated for use on the device. The use of local memory on OpenCL can lead to much more performant code as the cost of fetching from local memory is much lower. - -Local memory is shared by all work item's (kernel instances) executing in the same group. This is why the use of local memory was deferred until we had a satisfactory mechanism for specifying a required group size. - -We recently also added support for constant memory for data that needs to be written once to the GPU but will not change. - -Aparapi only supports constant arrays, not scalers. - -##How to define a primitive array as "constant" -We have two ways define a constant buffer. Either we can decorate the variable name with a _$constant$ suffix (yes it is a valid identifier n Java). - - final int[] buffer = new int[1024]; // this is global accessable to all work items. - final int[] buffer_$constant$ = new int[]{1,2,3,4,5,6,7,8,9} // this is a constant buffer - - Kernel k = new Kernel(){ - public void run(){ - // access buffer - // access buffer_$constant$ - // .... - } - } - -Alternatively (if defining inside the derived Kernel class - cannot be used via anonymous inner class pattern above!) we can can use the @Constant annotation. - - final int[] buffer = new int[1024]; // this is global accessable to all work items. - - Kernel k = new Kernel(){ - @Constant int[] constantBuffer = new int[]{1,2,3,4,5,6,7,8,9} // this is a constant buffer - public void run(){ - // access buffer - // access constantBuffers - // .... - } - } - -##Can I see some code? -I updated the Mandelbrot example so that the pallete of RGB values is represented using constant memory, the source can be found here. Look at line #95. BTW for me this resulted in a 5-7 % performance improvement. - -[http://code.google.com/p/aparapi/source/browse/trunk/samples/mandel/src/com/amd/aparapi/sample/mandel/Main.java](tp://code.google.com/p/aparapi/source/browse/trunk/samples/mandel/src/com/amd/aparapi/sample/mandel/Main.java) \ No newline at end of file diff --git a/doc/UsingLocalMemory.md b/doc/UsingLocalMemory.md deleted file mode 100644 index a78594c4..00000000 --- a/doc/UsingLocalMemory.md +++ /dev/null @@ -1,180 +0,0 @@ -#UsingLocalMemory -*How to make use of local memory in a Kernel Updated Feb 28, 2012 by frost.g...@gmail.com* -##How to make use of new local memory feature -By default all primitive arrays accessed by an Aparapi Kernel is considered global. If we look at the generated code using -Dcom.syncleus.aparapi.enableShowGeneratedOpenCL=true we will see that primitive arrays (such as int buf[]) are mapped to __global pointers (such as __global int *buf) in OpenCL. - -Although this makes Aparapi easy to use (especially to Java developers who are unfamiliar to tiered memory hierarchies), it does limit the ability of the 'power developer' wanting to extract more performance from Aparapi on the GPU. - -This [page](http://www.amd.com/us/products/technologies/stream-technology/opencl/pages/opencl-intro.aspx?cmpid=cp_article_2_2010) from AMD's website shows the different types of memory that OpenCL programmers can exploit. - -Global memory buffers in Aparapi (primitive Java arrays) are stored in host memory and are copied to Global memory (the RAM of the GPU card). - -Local memory is 'closer' to the compute devices and not copied from the host memory, it is just allocated for use on the device. The use of local memory on OpenCL can lead to much more performant code as the cost of fetching from local memory is much lower. - -Local memory is shared by all work item's (kernel instances) executing in the same group. This is why the use of local memory was deferred until we had a satisfactory mechanism for specifying a required group size. - -Aparapi only supports local arrays, not scalers. - -##How to define a primitive array as "local" -We have two ways define a local buffer. Either we can decorate the variable name with a _$local$ suffix (yes it is a valid identifier n Java). - - final int[] buffer = new int[1024]; // this is global accessable to all work items. - final int[] buffer_$local$ = new int[1024]; // this is a local buffer 1024 int's shared across all work item's in a group - - Kernel k = new Kernel(){ - public void run(){ - // access buffer - // access buffer_$local$ - localBarrier(); // allows all writes to buffer_$local$ to be synchronized across all work items in this group - // .... - } - } -Alternatively (if defining inside the derived Kernel class - cannot be used via anonymous inner class pattern above!) we can can use the @Local annotation. - - final int[] buffer = new int[1024]; // this is global accessable to all work items. - - Kernel k = new Kernel(){ - @Local int[] localBuffer = new int[1024]; // this is a local buffer 1024 int's shared across all work item's in a group - public void run(){ - // access buffer - // access localBuffer - localBarrier(); // allows all writes to localBuffer to be synchronized across all work items in this group - // .... - } - } -##How do I know how big to make my local buffer? -This is where the new Range class helps. - -If we create a Range using: - - Range rangeWithUndefinedGroupSize = Range.create(1024); -The Aparapi will pick a suitable group size. Generally this will be the highest factor of global size <= 256. So for a global size which is a power of two (and greater or equal to256 ;) ) the group size will be 256. - -Normally the size a local buffer will be some ratio of the group size. - -So if we needed 4 ints per group we might use a sequence such as. - - final int[] buffer = new int[8192]; // this is global accessable to all work items. - final Range range = Range.create(buffer.length); // let the runtime pick the group size - - Kernel k = new Kernel(){ - @Local int[] localBuffer = new int[range.getLocalSize(0)*4]; // this is a local buffer containing 4 ints per work item in the group - public void run(){ - // access buffer - // access localBuffer - localBarrier(); // allows all writes to localBuffer to be synchronized across all work items in this group - // .... - } - } -Alternatively you can of course specify your own group size when you create the Range. - - final int[] buffer = new int[8192]; // this is global accessable to all work items. - final Range range = Range.create(buffer.length,16); // we requested a group size of 16 - - Kernel k = new Kernel(){ - @Local int[] localBuffer = new int[range.getLocalSize(0)*4]; // this is a local buffer containing 4 ints per work item in the group = 64 ints - public void run(){ - // access buffer - // access localBuffer - localBarrier(); // allows all writes to localBuffer to be synchronized across all work items in this group - // .... - } - } -##Using barriers -As we mentioned above local memory buffers are shared by all work items/kernels executing in the same group. However, to read a value written by another workitem we need to insert a local barrier. - -A common pattern involves having each work item copying a value from global memory in local memory. - - Kernel k = new Kernel(){ - @Local int[] localBuffer = new int[range.getLocalSize(0)]; - public void run(){ - - localBuffer[getLocalId(0)] = globalBuffer[getGlobalId(0)]; - localBarrier(); // after this all kernels can see the data copied by other workitems in this group - // use localBuffer[0..getLocalSize(0)] - } - } -Without the barrier above, there is no guarantee that other work items will see mutations to localBuffer from other work items. - -Caution regarding barriers -Barriers can be dangerous. It is up to the developer to ensure that all kernels execute the same # of calls to localBarrier(). Be very careful with conditional code (or code containing loops!), to ensure that each kernel executes the same number of calls to localBarrier(). - -The following kernel will deadlock! - - Kernel kernel = new Kernel(){ - public void run(){ - if (getGlobalId(0)>10){ - // ... - localBarrier(); - // ... - } - } - } -We need to make sure that all kernel's in a group execute the localBarrier(). So the following will work. - - Kernel kernel = new Kernel(){ - public void run(){ - if (getGlobalId(0)>10){ - // ... - localBarrier(); - // ... - }else{ - localBarrier(); - } - - } - } -Of course if we have multiple calls to localBarrier() in the 'if' side of the if..then then we must match in the 'else'. - - Kernel kernel = new Kernel(){ - public void run(){ - if (getGlobalId(0)>10){ - // ... - localBarrier(); - // ... - localBarrier(); - // ... - }else{ - localBarrier(); - localBarrier(); - } - - } - } -With loops we must make sure that each kernel processes any loop the sam e # of times. - -So the following is fine. - - Kernel kernel = new Kernel(){ - public void run(){ - for (int i=0; i< 10; i++){ - // ... - localBarrier(); - // ... - } - } - } -However the following will deadlock - - Kernel kernel = new Kernel(){ - public void run(){ - for (int i=0; i< getLocalId(0); i++){ - // ... - localBarrier(); - // ... - } - } - } -As a testament to how well we emulate OpenCL in JTP mode, this will also deadlock your kernel in JTP mode ;) so be careful. - -Performance impact in JTP mode -Of course Java itself does not support local memory in any form. So any time code using local memory falls back to JTP mode we must expect a considerable performance degradation (try the NBody local example in JTP mode). - -We do honor localBarrier() using Java's barrier from the new concurrency utils. However, Java's memory model does not require the use of a barrier to observe array changes across threads. So these barriers are basically just an expense. - -I would recommend using local memory and barriers only if I am 90% sure the code will run on the GPU. - -##Can I see some code? -I added a version of NBody example which uses local memory, the source can be found here. - -[http://code.google.com/p/aparapi/source/browse/trunk/examples/nbody/src/com/amd/aparapi/examples/nbody/Local.java](http://code.google.com/p/aparapi/source/browse/trunk/examples/nbody/src/com/amd/aparapi/examples/nbody/Local.java) \ No newline at end of file diff --git a/doc/UsingMultiDimExecutionRanges.md b/doc/UsingMultiDimExecutionRanges.md deleted file mode 100644 index 99761c7e..00000000 --- a/doc/UsingMultiDimExecutionRanges.md +++ /dev/null @@ -1,60 +0,0 @@ -#UsingMultiDimExecutionRanges -*How to use the new Range class (for multi-dim range access) Updated Feb 13, 2012 by frost.g...@gmail.com* - -Aparapi now allows developers to execute over one, two or three dimensional ranges. OpenCL natively allows the user to execute over 1, 2 or 3 dimension grids via the clEnqueueNDRangeKernel() method. - -Initially we chose not to expose 2D or 3D ranges (Aparapi's Kernel.execute(range) allowed only !d ranges, but following a specific request we added the notion of a Range via the new com.syncleus.aparapi.Range class. - -A range is created using various static factory methods. For example to create a simple range {0..1024} we would use. - -Range range = Range.create(1024); -In this case the range will span 1..1024 and a 'default' group size will be decided behind the scenes (256 probably in this case). - -If the user wishes to select a specific group size (say 32) for a one dimensional Range (0..1024) then they can use. - -Range range = Range.create(1024, 32); -The group size must always be a 'factor' of the global range. So globalRange % groupSize == 0 - -For a 2D range we use the Range.create2D(...) factory methods. - -Range range = Range.create2D(32, 32); -The above represents a 2D grid of execution 32 rows by 32 columns. In this case a default group size will be determined by the runtime. - -If we wish to specify the groupsize (say 4x4) then we can use. - - Range range = Range.create2D(32, 32, 4, 4); - This example uses a 2D range to apply a blurring convolution effect to a pixel buffer. - - final static int WIDTH=128; - final static int HEIGHT=64; - final int in[] = new int[WIDTH*HEIGHT]; - final int out[] = new int[WIDTH*HEIGHT]; - Kernel kernel = new Kernel(){ - public void run(){ - int x = getGlobalId(0); - int y = getGlobalId(1); - if (x>0 && x<(getGlobalSize(0)-1) && y>0 && y<(getGlobalSize(0)-1)){ - int sum = 0; - for (int dx =-1; dx<2; dx++){ - for (int dy =-1; dy<2; dy++){ - sum+=in[(y+dy)*getGlobalSize(0)+(x+dx)]; - } - } - out[y*getGlobalSize(0)+x] = sum/9; - } - } - - }; - Range range = Range.create2D(WIDTH, HEIGHT); - kernel.execute(range); - -##Handling this from JTP mode -Mapping to OpenCL for this is all fairly straightforward. - -In Java JTP mode we have to emulate the execution over the 1D, 2D and 3D ranges using threads. Note that the number of threads we launch is essentially the size of the group. So be careful creating large groups. - -If we ask for a 3D range using :- - - Range range = Range.create3D(1024, 1024, 1024, 8, 8, 8); - -We are asking for a group size of 8x8x8 == 512. So we are asking for 512 threads! \ No newline at end of file diff --git a/doc/uml.png b/doc/uml.png deleted file mode 100644 index 5dfc8690ae8500506d8337472ce5efae832de47c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 31633 zcmZr&1yq$yx3(!o6afV!rMnxH77!#4aY*Ur(5+GeQqnCgbq?Jj-5?^}-O^om4*Grn zfA6}irJQ)*dH3v@+4JmYKZE~US&0Ye_~<uo+<5R>QdHr_jazo$pEK$$@X5DGUUBe? z!%j@q?wysjv$=tx-3<u?O9Pm$oq;}yo->KDot-r=6O*;MuBDy5g*l_Gl|Ag8fuR-5 z$biw(z>e2Qnc&8ao24#Fs&@ZebK{0ng1y2UtFf0@wTOi)W{ESbJJho3w#NA03Z-9D zZ*>%^Z?NPQC6yj}EiF54aIk;tOd2|ysyQ-jeb_6#E|P}bKmAy~CY9nBxmy#flT3d4 zZNp;GZ}>l%o*k1vPA@I$6`?8h9aHsC!hBMACo+cO*6|Z&E<54%SqY_*4+?Ou?P9Sw zCZjO%)^{~K&aXnpo>BXC%3j^#TnWj9>BvV(R1Tw-a`fEwa9@5*9G2s_3pshmo^`*0 zc=fwak?8W;*Wy5}=z0^Jap>Y^Sfn}6yAYMz6C6V!qz-%q@_aQgjQwQ1HYIy9vdF#0 z`dQX@FA+Z<1_zmI9A4?%yvt8Z^u7cIC41el0WEo`+MM%yV8yJib+PToI4<ijZrhKF zb~n(b7hg9Xw$pvnv5?Wmxy@@eCd$7Jx#IFKjaqQbrAXkrVo&mr)#lzBwtjDe8Gfec zqOssuFy5=no3s!snLH$IO*!&7MWI)t^kI@2TmMPsxbnUDyXWW&%3cLu!;5_JUrf($ z_Z+`5bL*?Fu60%-;xry5PJ-yMRuKnz%I(Epyugzdo84pzU0EI^aQ?7(<A$@!YtdIq zPGcL1XinIJQ&+h-QZyvSVvM`6M_e_X2QIZt5$=i=Z`JOKiEa=-5_^gJ3M=eZr@8|c zo;N(=1%-DRmT}=r6Et>uu}%XtDJ*<rG(7rG2H|H{QT>&BhOz0d<0w~;_7bT2^jU3} z64<Dg!>7CTDOZHNv4l}~s9%}i5=JHUhEagG)R2E)qAp5-Pv63k7hS)^>Wl<0Q=n+1 z-q$ZDQc6nLDJUptX>(qOQ@(O+xHCmbNvT!q61gdYY=?$;b#*mF=+Y_lxsF<pc#{fQ z1Rbe2ch@)hw2uioBL%wUmXmt6kC3hMzf<`zRqIO318X*BkLy`lA4U`(Tt77`Ju3?( zGJIvlI8hd*B~B*u%a_NrQAn$HwWXw`4SI{m=2QHL6ta~@M@Lh&N53HZ5jy?)^=mYk z|08m7V|M(0#C<I^WDn}Gac~ynpyOp0@i8&fr;*Fre?BI^OfIeQ_Va6NZKb53$jHc8 zwc}0eZ})1tZmZfWn4r0>t*xbn=1IWk&-Y243|t>0jh^^I*QmncG`N018ScON8rfx= zi-K*DhXUR)IIuU8l5cYdfl=aVVgG#jF*Eo%A8ll3MMcH&u~Vc}WMrfP^V5-}Yu^uF z1+ba^qV9}Dc24hhv=!OSECu-WSK}4dXH96>l+;_omDi6p-<xvXiaau>o4Nbu`U;-Y zgZ1TfHJ{s!%yd@)*X|FSZx179GwO9)N%7O~Ee??IdIf{AT9Lg%8XDGQ%)Vw<b+A6{ zx!r(bF<$oI;lqa*=$F!O6I*8=lB+-GFpa<}KxfI-QJK07MOs9LGAApV4Elo~M9ISP zXinzbDVXe=kDmHxg^$+ks?2m&6LQxr-!^5Bl}Xjs{o&nFOgaqyn|skbbr)OpeMkcN z^#u5uo-Vp?rmh~RH+HL?!=y982@U-Gpq+!zfA`D4M!J>|1(B+4&pWvkgCHF~V8hFO z@omu5n1h`BHpVAIgAu7~Uw>6C9yMpj-_simT`$WpD|$hq4#wgKE$)o73h<M#<cY9q zQ|o5vx^9c1*Bx%0e%g}G_t)N4unce{d=F*X;QyXUg0u;A5ZTA%S-g3kXO&uf8r_uF zlQkklv2b;{Y{k42XD_7XMWO%ooLo%XKNmyA2`CLUyY!Q0>1n@ibPk<htrj&T?x(G2 z<!^Vks*Q(;Qr-fa>pS3YBVth^b8^ZBdHFE0`Kp6eCI%j3i;eG&a9<A}#A~=p^Y>}# zo6(>%FLiSZLF0k>i{BGfJyE1c^D5d?(7NvAqniwO5$`HcB0Kj<1IneXGBvKiY<8OF zJ~X`cp2r;b&lmco?h>Kv!NFUr_dFW!{b@jY)ZmSy*KmorfHMs?atSxH<sk+i!QQyP z_!7;ET!RWG5lQvNy*x@a^DlMMpC?W+RmWuyd%w@_9}G7dm8O9RfAX}p?D{=<AtYn= zOVh=NA>1nSpmc20X{T1P(4<`2s$d;VS1j%Hx5Xmk8<Evil+~;E>OAc(YxZKz0?X)b zk>g~xt@{PFnSKAYvd~H4EdP#6fXH7n6V0=b<dlFm3M|}Xtfvu<N6DX9Tr`@^C@to! zxQ?bPZ9_Y>e`a`P7v$~MeJT+TyP9&0xQInw?XBimdw#Rq#ki4*3$c-sd(KW8H90aP zrrhJ;9EdGLsrdSJ2bkicwZMAGMUv*cX}KhEp%d5BgNfemC<M(%a#+12D}In+ajZuM za7yIM6hl9(;-4}f!YrYklM^+`tR?x3_PGr@U$v1<P<*vG>@52<?8MF;`V&XQH^)%J zew;c{R-zu+b1Pfmo+6_}Q*4^_8`3CQGHpqd73UhKk-$`^`06X8%~mt7+q*LbMJ~Da zlhcEyr7pEo#_UlM5d}?($omTlUqL3nA7!V$mx-O6);ijj4k+z-_Uzfo$q9%s4Rj!e zWn04&8C33+a`So;2|Nj1Jv-Se^u&(JQ@Rc{_q;y*y{enXkNG&M4@$@O66Nk)=QsDJ zCZf)0cuyx^c~wC=Gf^-%eDnFB8+M(h8`H<nSUNg7)bnv0a!1V#%d>zZaHMyFZ$EVd zqeeZv8`WSw^@vETyn;Jd0o{bvKyO{>Dq(&*>9GMUk)4i(MLw;6#f~?;quEjpOiXGB zapZcc7<TLDXG;Ey%|r6{s21ZwLrDmqapDJU9D?cG?6=^uJyYfTfcSJRH@k71MsW%b zLC8u<9suLCE5Fb&)|ii`-+MrGAF~ePRBbv~(i%jdl<P3P*T=<YCrM*yW@R65P@u)l zS~MB_Jl9*!7B;m1ds3cKBmH%F>hJn`mCZ3->ZBeEG%K$c?RcfGN1W=L=&Nf#1Cj-* z4<aE|-oCzH=TsH$TW@l-AFMme%hwk8pB@m$2zll;<&#@Xp5BEyh{MssjX>1TRm#cB zqxWj~e%(1YG5FI?T@`t%{{F2-Bg4Jmc&?)d1VfJdD<9?>MSN@MBPk-@w^&Y3)$24I z<1!@KS5);V#t&f-^Augi8WD+<#rS4;9FuBNj++elHi^VM^lK<$g_R~*G4&M`yj`Hw z)Ks^LusHh7{p6vUZXi~co0m>(ojafIL9%D>hsYMzk@2dTcjqc!p~&S}--*+J+g)Wf z?TK(T{k1Zi>@h|rbF~|Y`6{J?S%yUOXjuCQec%ULBZptE2Hy9nMiIY5trFwL&Pc@> z*%JzRr!<@5^I2_ISZQ<?R*DoPS_K;S)~5gCA^sgwrjMGs_}F^SHY_wH=hh;SQ*TG8 zQt&`2{280LYWID#Y{nNdftiIy^kyG;imT2W2{`G^r_OC6dUPc188nO*Oqt}4f0Dr> z;XVbW?q~IWzP_juG0)57oCyNL=s*D4ajnF~GiuP4j*^LJwdG`ruvdV~!WrwW+k&rN zN?r^?6eT`CC8<yEX~#)@984QM>3<{zmsv1n>uYa!z+Hwi3`t3Axa=(n%FGX@h-QS* z2`l?OXt71^m(5#?0g(GUef)bP=O^!cVr`e)eiR$IHlUyqW-LER49jgA%%B^CK24b& zkQ1V%-)_W^1LLDbsWF>CmqQ}398kJ#d()%k9L&Z*jr$lF0-hf6=R;uy@csMW#NMnA z=7z_fWc;x7LOHUghD5A^3H5zP^7g%&g@Tk&@nARQQ(He6GMZdcK^n081dbMrl7pVK zT~NNkC%bHt$$)89F05JG2jb-8{hm1S<g$d)6M5mh<BlICdy{aCn@3Zte*A-U5lr@` zFF^!cs+F*SiWadzO4K%;#lX|OKAzcG`!|^~@pr}Fj+d;G3op^B$T(0BYkN-e*%@z{ z4*vFv+`$lcVI5o=O7Wy$UAO|11;qC`TbMynv|;yC`A3e%r?Y-`BT62zq#{~n+!(Tz z*MYkscAS{inToWm4n}b_eKj>&?I<DR`a*8@&<~9b?=2j;bX~VwFY3Zo@?xO%m$y?= zNWt1^u3xW+#cXTVxoTxle|6myqEVvvu65@MuTuY4vxzm1Kl6vyP1WV45PfZFYMZN# zjm_T=m&-OlJYzP&Hc10PlhQ3fAQ!rQcToz2655*<#gH<w8i&13B6J#^FKSsTcO<CE z@6km{bs~eR(k-93=cqQAZ;riX(LdWA`~oP(LB+ci!g!&c^0v9PbvMiw7@hujWYUxD z{1h=-Y(nWNSD(-!<w;*eZ+_v1);P4Vpx++(P#PKZBEN6`B+%fkWoSn53vSe}wsFw0 zKdk?D-y)5W4cky`1U+9E{x(k~x2La<E52uA^V%PTOvl5Sj7>Ac7LO3ICH^%YBlQZp z>TXLy_jHaj*!`90)oEflXlP!$$c*SPM}SbDiwyN!x~#ESqvlC<qI<?KT31TMC+%)e z3-NkRophIqjpKX>Lm!w6W>S9}LqyEX!CMLQ_ZT^T6B4~ybTF$Kal4gzK3uf8b@J{2 z*c?VGM_Psv+C~s$7p88r1oa#LT0c<FcbHrljXSi;Azu4P8sE{TD3ypwaCK?g`OWxM zu0nADig%$#q3yG>>y67Rrq!I2;QqZt+32V!-&d9NYicEACY=)t*?TwxxYTKQr|vFh zuu*NHG|IcenxRV!ki2u1*c#arlpnMX3D!wCt`7%BB1ck2@<%G~Yh3S?XE?K%;%naC z-XlVv_B<a`_SKz5#HiWa45%nBm@hahz&24qPD&9E0NFq<OiR^2c{8iFoeB99_kDn3 z3ne`#{;I>JYor^k+opS@OZ7AFdgnMd1%PjFueiAQ(FK6^_lIb&B%ak`!Ia-<e?xy; z5MNMS(DlFDXP}{BiIw@}$}GNa$9sQB?Xqu3Y+4wuftTO;|J@K6AhzPAi_a3;aK#fE zgI-A_BgJutdgRTB+K9m~T4WZXmFm=Xv;Cm4_qI9uHQ-u5*W;%mA2u@z92G^PxzJr3 zTF#3J+{8DPdY6SUFE}3|0av;kz*nd#!iBi73lmMs%x8a)JoFXz<zs$RslG>x>Lm<_ z4a1uMfJSSlPN`QJ5=L#hbIpw}l!F{%-s_G21&kH;2M`16+^w;?;yRVKqIgLqE3b&D zlD<TZ^1qkhoxtr!(@Y&5o-^>jHr$&>Z2yBCpKOg>c@hn%6i?dk8E|4;!$Ai2S<Sn} zri}oz{R<ict<@A`p~OyMe-NTD|4V=(kHlZX39f#5{rxOqZZ7HL+;bFt1pq@yhc#;{ z+nIdbMq;iVarH#hle|{HqsMz<Bpn%<#gu53FHR4<KGsaiw=j%Nlw?UQUbra3)%H?b zaV;S2>5cnN7X>>`k=pc3Ywxy>2f3<=fq6F3z7Gh9_#C=@KD748zxJ>TkLrA$GS)qD z@}>H1o7A(syT!PoeKoerU$Ycm?UOw`9n>m5HatS68#o+m%D-2ZWS1}(*Wx!<6%BEI z_R1%dEPr;)1QWh^bfdSpZIdI=%0UQ><s2MMlwLexu`8O(_y-9$_fxAu(*s300i4H= ze*$d5VK$_SpkC~bWy{wnZw<ix(v%<`gl{obGdjCs7{<eD-k&N~YC5<bU=mLek=;L0 zX=^qN52BFA2xL$nmNrB!>urlQEL5{u&&wm&Z1llM<Z~3yFZ8c<J#v}O6CS(t7~Pp= zu#ziYg}B-mj%Xjc{A1Rvq%`l`XF{H$k`g5+0$kj~i=$}_^2?R}v_*-GBmr01MBan) zX^-Md<EzVyr^H<Zl@41|?n~XVG2hKVl5HOKHdCC1g@sy1T-^5{(_*MA37WrWQ>R8x zYnd2npZ0)|`)yjk4jC60o@w@zVssj_W_?$WQZ+o+v#yXT<N#z-S58&gOD71K{Cpuw z+T`~Tpz^GydDtgrdS6a&j2~WDGM_$V?!j=_M8lXZioIDm9%H<#HHkkcqJpfu5po9B z251-=Od7|K-!sDPujJ~XP2ZY|*B?OaB0K8w>jGp+l42c$dW8d7a-J6l!${YNDo^$2 zdt97WJ8U-IS<<j-G^mWq6+bL9)?@;hB{s{gxE%uJwNQiu4&rca<xO$tv2q>b@AgvI z^`zPHg|-C|K$Mh}I5Y8{{DNz05VkOCR_Q0|>g%Vs*zn{Pd0u&Rze1h+2<@_u=}*<! zEiG1KT3%c$P+Op5Of0ixSJhwnk-}v;QDHqR44PSt8%)x+7;0I%EE?8uD?USJO;+tV zuSDisgL0K~5BCS;FsN=d?5_^^h(zN)!^OoF7ZsI6P`{Rx{C)!ujM~X^ay7{?NXbb= zW^X+cWyWk1HECEdGb+~V?Hbhm)0;_SJSHt~ZJ%5xCE7@dZdyWpfQ@@|ln40dAo2Ev zmGv73xYHXR$mOL(%Kx~SNC=Mh;K9!E2?WXAe7X%!6m--pY%HOHToTnx$+%9(&4#5l z%(vD)dN$g7G2gT*ApTrZhQoY9E2gsiCqY|8lGla(rp%*iMkK`3WL9w97OW+bv5d2C z{rt#c{BpB163Vr=)6>dAuh|Bd2D`EwUUOcfj=S#iP2$(i^5K&q(56P=z`){(I<`5P z2z|}7a?W0@y7@qFuh-dBiskWToB7SHJca2SZ9gh|DmSW-aomw+%I1a_hqy&D?I7{d znf)Z<)vH%TEM^MHVE`GR`;d{7lM4w=>$58V?tn~BXd}CO+@`Zxr#;D)n|c+~+}u1e zGLoL24j8CfEs%B~_mXL^Qp@xEj+a66b!v|az{Un{y7NmXF*!L|z$GVo9+Is#`>UdQ zyMP%P@ouuJUhjBR{11EiJW4rppO&S*sN41fSP9(s7H)Yn+<5>|X9c#Y>-WEJg**2k zJaqqg?=cVYWC6JNI_0_A&LxhGyheQyW_M3Hm`u(49emEvPL9LWuF;oprAnT*K-75~ z*v5dPQ=oJ|5Cre)WRiG=cIJ6@!VO6&WRf=ZPVJIrl(2}2lM@m)x(qXrFdubMz0d>X zinNjF9}I<sg=<_%P!_x<LbI6S|9N1`sWM{N$iRT~2S@{Hk6vQ7qg0a05qq-p{xNSD zeLuI~m>;%)Y8R83n7ByPe)EKcYhm@jp8&SW52$Y_u|FGIKU{e47D}+YZ&0j&#C*Vw ze+IydWA^fz74hOY!b7@Huz{)7meuQ^w7A8btTXaB2rA$#fkWvjEg`7UWA$mv`p-7l z(}4enJfVin$-!#v%^oY_$QXFkW*Ib;AWkTD9!d3SH_Lv|W4O1jSQyU?=oA=51YNji z`+?HA>gizC$lG$Z!$2AV3Bo)K4nF3>Iu#U7%tgQfQC@}8X@z)j-13+doU@(2O7>8m z@naf_&SuZM=pVI-;XXYvHL#|Wd1BG^ZXWPEFoRu!O0wrCyPC%w^R=;p9)6Xy!cqsE z1jLs{QmTGM^M^;`=HHIyGTTlkEA8VMM3D2UBY7cU|Ds5Ddp&A)V0BoEs=QBPgd_U_ zxldp(>(!$c=~%GtDp^l5pkbH{wd=zv$v+X1U6I&XEnSt74Ug8F#<aP#4U3VFw-5dJ z@ng={j%M{U*@Jw?i&>_r6m9npJt6gE?e=@vh!y143mgkZ?X(cubzb$+Bj3%tD=w6C z=!%NTAQk$Wr2Sy}ib$j0qlbV?@bPlZ<*9bFNw?Jxl8r_m7G)@$QK><D;dJ^KP@8l( z%B4dFMq0%F3mGyIbZDXNrJh%Yw94ALr(>mP4Gl-o+S8P6+`Y4X=PzMq-`kZ1SM90- zw%6_V7Q0TUn4hwAr04gb=;CdxaeR0~8h%;3^(|yV!wbyu=Uw&#nKzm0&nuW~ZQgmd z;~*L}y5*$L++B7TR1Ve#QPI%Eja^T6xz`KN_E(S24qR#3_v=7na<MEFpTx&C*2p;W zqqtAdoAB~{`K<n;%#RtH%=2h+xv4RSR9ASvN-U0>W$yA!#B>;5XSXW7OQ&Z$?KV(r zGtW!iI(>P#-QXo6KeoO7ws}R*GRDhEGv-~fR{I?S;a|Z+s9$D;^Dh?5@A8TRf)VB7 z)VATFA0_?d?#6n}`ipQQMfJ4kgC@gRTTFR)bJn8Ee5(Y=-)U)2Uot<qr51C4VEfJz zhQ#NrH)i9x!`P~sC3bT^Qu=}jPd*;3oJZGtFE8A0-BrEEbN|`TiAF}|iJ^Q18c!gP z+p(_n!u>u{QmIyr^@J>0i`!PZ>!^7?MICvcdR~RAKBe&YUp=qCI-}|)6gVZ`Te5%5 z*1TU~!=S(BBQxc;r<QHD$<v{me<2A6%r(&tonD}TS6bvzsZ@49WmeyI+TQX-`e~VQ z^~cwge_1rTcwx%K$%3WkBC)CuTL{G9@88o=Qy&+=B1?neh*F4pYgP-oto-=Fs2Qh& zZ}>Q9@SFUmVwO1S00qVTBhk)~U!f0DWiYBq;+j=@6Q0p%KJK4=D0H60Mv3)SefeHn zU>7&^Q9O2<>XX|yDJX-9iG%Y4*9A|FHANFx4}>Wj5kWAtpN2?_3kwUc`6Cs?FhNi& z;OFs9wfoEX-yBQ-FnzV(O%M&+n&4?~Uf8i)hg>|IrkA$*dHdq<`?sfC$=@<Th|5}V zIo=-sv_0c%*hAE;QKNS{YDE0eSWH9`4YRI|7yFL&=GcXt@rpZc*Cz)aCu{0PJ=Bd3 zD&mn6llO0qP#Nu(BC=|67?uL9T=$*KFHSuG>QVZoy|`|`gpFsqDFF)#3=9kjfn+PG zsi{c>6TaG3pX!Bt8%4{vbS~RkY+8MCLs2X%9&$+dRM`O|_|2x@b0H-i*4XX9AAFDn zd3Z#wB24Tf6oLqTlE<bmY3m*1dF6V0M^V&iZdBA2t;>93q`t(CEOUqUUG#Ilsh1Np z_rB_Fs7|#HE(ILcd<rTv89>E$Y6(F*ap7Tt_>~?ani^5He7u@awOEuQbC)%Hg;L<- zugCKst3H~9N3k_gvT$fBYVgPiFRka*O~fQiJXm#!k#y$ha;VV{5Srt3{QOEacBm$Y z8<@ytXia@^yfZr&D`t`dLHIgJ9RzVD6_#NPJtjo!)79OP$`Eu<IzOs!)2ibKV1i1& zw~|a_l?UQV*Xgu_@XWvJ;hL;=aQ~%SOV5gik*lK0-Dz0OlUGXIp`7yeB^+?`rlq`m zd<63mdy~H%R)h8_1qSW;F5Q&6W|OiXpX2}16IqZvr{3=s>ZFEr4ysjZRWN6&m%933 z2O0H#ZZ2t=)|gEZx;nX>nQ{I4&3@fQW4XX&;JpNKe&AhvE_kt<GsLV~Cm#&HXm6k3 zS*Vlh@!H@+iC{O<7cZWgG=HiWN#+bhacs24g<y<B<;CI5bhy4_&xg9m!hJBRb;RQ1 z>{QK!zT_%oM-V-0C0TSUKN~ihCh-HbGtUn;WvQ_vB(UC(LC~%c8${5}*80TOFbwmR zTbea$Pp~<$`#EJw@n7Yb{Cd-0ViaeXhIcLnSd0idMW3#NEPIWDDz&U7tUe|GRX?k! z6k<xb#H}Tqtq4G3#kvW@tF?$Cr_#>=QElsHlrwR){LQpXZJbmp<*mNH{=)Kdyi6uK zx)u@xzzlM%D?x&_9m5>Xl%6-$G(5N-fki+CjqnqMzC!Z0l`0>hlQrI1FvJbot)Wc@ zZMd7mhEtk++E}E9P4uG6ra8-y03d!P95SWkByd|JF5bEJqt7}}qiSg$S95|barj1< zSy$A9;-Y&eCJUy$Jk9IgnvyG|IAIoc`_*3e?D4Ld-*V*~<vvSQuc@cR0z!ZJ+p675 z&3G7v;0wsIRpradF&R?Q20<Iu3Y()+rn<!ar8|S&Eo!mj2@$!>olh(v+(NfZOX-qa ze|Ln2uDyvDEOI%pn=XvoC-)*Pb>3?$E{2?iL3@^-1Fi}{L+^4*MarqmbKBsovZSc8 zCl(6%WA09qB_?WO?14RXvu-B+54#q4O`^;^hcm(chyNCK;B(ceRnJ>!yzF|CTzfJ} zcfoa;QJrHL|10Zk>lvXtfEKVz|M3hiev09mnr1*Ij}^X)WIhcc68M3#7$7XT*ZmIV zA$$+fZr`7Z_OA8*m)-`A?)~<mqfHGBz+F{4w&}X`CEeK&?cOmz**pl^?c~tiH6Ol& zzo~ruunWiC@njd?_-^cSH+p+xgRAbMtSv2M2q$Tba*F=P((SRl<aWc0A6zGX&6?Gm zy6vG$?ZqA!aUigN@f1xID{Mh&>fp!gn^K%L7wqWOnl&I|z{4JRM$slNkFgrQrH|i} ziu?0k$+w8^@PmX219*mZ4>9gy%~jLdkz+ll@%r>BD9>1GG;5%Uw|p-J6%VDgvE5E2 zdHsUY!&2Z1P`klTSxD&VpP*qo(P8H0s=P6qsJMA6b2-_{VI_3;*rrEOjw1|y){Gq# zLZ}wv|A%D9oJ;!4u`d<;hhrZbJB%o{U&m|TUg>`@=jJy$MxWI*Xo35kOfFu$q&)xk z<T%N0IQ(OkPUe9MJ${4Myv9bw$jGxf4VibrF|!}<&ZlVoVxi56wzGG&FIV$$b@zf% zc+d|IYq?exSpNzlAZE}yCsQJIAI}*iZ`5ObXk6UhbDCns`p_TSN}swr8n~>*H~pb+ zF@)b$&Zqd~1)r-=v~x*9$@WjT1!)5&Sm_@}jT$6LaY+jaL(PuoE^4i6BTqs+)~XWA z`1!El0)<YK54A0*qoHQQnAIKveJ+>H{#FOSCwG>UZ9`8FH@(Z}z6aQhnorrB9eRA8 zVNmA}jD7T|2NVxbG4zcPts1j-<go8wxU7B?aONS{e?MbgFmTTGC)Tz0t9-=yx=)Wc zHs79S5mK&pBQ{lP(bQJsZJOBl90UGD3Veg3t|d5JT``Ug)}%hS7EUR~lULodJHAd3 zLAUd+G9Zmd+$gYo?zWLW(GSD0_ydt?eWJ(11-cBY49APa@<xTEt6sAS&WuU>+18xN zC_0F3){v-hTrD?}52_eOQU;_DlMMZ&yyb4j+^^mhhiw(qn`}%0eFz6F_~AV%Z!__E zLqOM~dNnV$usnaqqW4_J?O;$zRI*V<W`=<hpTp%iE4d7n&GSUe@#><qnUFb{&sp`U zD&eM`pvF3^6Jc3=gH<fDb8xB5+i950Ke=<`u4@oe{d{x6PME4hUho9r(4^tX<|aNs z`GwF#=k>AMV;hqO!?PlD=7OoR9wMB9%iG!3y-%h(Wb)`1y9Z9`7uI^i4`_eCu<UsF zPS)eXaB915d~9DbyWezRUcl~l8&TkE{zBE+u=YW{8>L(`=vFKWph!T{DDs%nJ49GG z2V>PzaheW6?HXp*<oocs5In5cj#MKXHBqg$#(6BkYO+jL9DayDebPQSRYwOIV1ZF6 zE5YFcU*EWyZIRj>l0o7_zJ-s5*3ON((k9fl4{A+r3aIz$F05^vxU<3-w!#lU=!nlC z)*Lyz46(6V^kgTQ_pw~7+AO=w?@MYRzTD1eOt5WFw1vB$ITSf-J(vw<KMfOybGD79 zh`1tDS)50UUhAO-a=)&5JLDXu>RDnr2{qT`f3%`rHm5-aDd)lF6xN}VnMd&!sT3D4 z1Imlsp7ue*`K|=pppYvWm)=3G1$B64@h}%P<nauw^yocjAXU+*#^jX9ocBo#&GovF z;n~FbUtxp_cWQ|TVw5yQMGnCOQz8zkJCGdWc_V&JVt;(Bs(MN8`2f*Y3Nhz_s?0|H z(eqm8lK>P1ZtDzP0!yUUBVH4Q2<s_K+||kIw0&TZ4K5G6)#b5mp8(CJhGB2QLzhEy z&%+Is*%0<rI|dl)-}1+7+XDhzVP@CE7u?DDwdI(QXt;4$2L=;AVE06iaRTt!zg3G= z>gfjNBEZIt!<KJm+K&oGN3YG_LeHkOz`9qNI~3Gb)TjRc{xY-Jt=JCcOk#X^jleBC z`NZq&GeVzKo7Fh#_9d~lv5Q|F(*T$8o;ZWK;7RZ7z^VSiT4VSDG@Opt_tdlM+Zd({ z5x*9P?T%x7nbQ6h^idRt#VP77lAVvr_cI$wMX6u$^Ha|==LNsGc#`HEPWd2=Z5Kkj zJld@bHit%esS{K*pF9BYw#%`MiXxrq>Z?9O9|;Iuxv}MqRM>b$(q(Z+&}}>=(t_0B zW1NcOm|yk{ral6zUTmzyWR$Is-|#{RvcTqfsXCi8quX>U1!1xp7~LSiT~+~joC{{4 z2Rp%h!`L2~J@@nTGxBCW_6N^)S*K37CNrUu*HGe?D7@x^G<>W5K%%7_6jm$W|4D+o zBDsDWp`&I0Ca35~=98<i5xUNN>pd4HTJIsN23hZ7Xay`*|5Iw&X~BqdJBj5v{MjA5 zd3Iz)Df4b_uaECXv{v}~?@R0feEa#PpRu%DlNAxUc~k2B^8&+FEXYQ?>^8@|L0YvV zmwT_N8r037Fy$HK7*{5Zr#7uoT9CClW=hF8V`oL$&)?NX=CcPf0YUC3rNc>4y{p4p z*~iC8N|}xe=p{X;R)J2NOOXPEbFs7(nk@R%W~C7E`zq8=K&s%jK$rp*2-Q)E%t6@o zR@v7w*mWtTz!-jQh+_Itx;4rtWh-E!W(iJ8$fpItR);}q5lTlKCF>>)KRddr_kCdI zeqz8CYm}kJkKHrHHm0xQc)ZOWTa7(FfxDzSF<oC^{lriq7Ib!!4G|vJQE%9{q}sR8 zqvWDHJT!!$`$+zTxbOcKb0X-n^(#$F5si6swW0b%%vA1_akWMzJST3vuFhlOxjh!6 zZm9RuWer>u;XvtNzIhJEs^2|k4j=xFUzp+%T@+*AE%Ud|^VGc}9Z7aa(m+JLna#AO zG%%BA40mMMUHgn}cTemNcT1=s@#Cpb_gC<ljqHJVZMTPN24!wN>2DSenq+XI8K28c zvgzNyrLyRy8DSfRW*AhBk;%r&id6>WPe2)^2v28SJY5KXD3d(Z8%tH;e0XB_o4-WX z?QB_S+R8@tsg<+p$Qev5LWdpSvDK}*&gKQHjC*>n<;<DHavxuECGMkp;WD%`fqZqw zuXJ7b<Antip_QUS=5D9&44%uVWu>KFJvDIqVyv?BzCa5h0m=JXfTWtbNQZ5g#hVa; zc=apWXqHLtf{8t`%q+JQbx(H}Z7>&4$IRq3Ca^p=$Fyp`c3d048DE$xn>8S#oo9UF zTcky`^I=U!hUj(Y56(^_E&0#KN<V1LX%mdZwp#4e)$yx{c}c7E?)u~dj!eDI7H&PO zefe0>N{i~mD5DY#MZDbm!uEwNPpca}O$h3r>xiqC6eu>f>*4C&i>m;|RaogZ-7VD5 z?r72~t#WY`=|FoFYo6KsYQ7NT%e^2Y#rCXYp1^q(g#Ve>h>)bD<Vz!w=)I3fg06G| zf+1q)d0}=D%QoJ{PuJ74JitRf?1kcYxoPzfqtEedE)b5nsIJai2v8na9X0-<8C}Y2 zkXo(eu&@-BT%VC!P1^j0B6DrF1sIQol6o?!@m7>p)K_#?3|GuoU|P&be9ucad_xke z(uwdXw%&Qqf_r6v2M2x-kaqxC)h8-;{0F{5IE7xUE~E}0OizV5#VTKB2@eaSh;WJg z$5Ql;$d0T9+T+sn^k#ilQsU1pyos1i+PH;HLt+MfQsY&|IPs~_uZk&VDPAe@Da9#W z&JEY3V<oF{95f?9jQPWdhw?rjMrL2?(K<9Vq$~aVoV_@ezln-l<zvhtB<lxACmIOm zkoQ^OTR32mP|O-H!~pTu8EIXxgd_v87p1sWv41ml4u(NvW6Y<OgJFw0Zz}3PnZa-x zR{U9>kkhm(Qjj{PKzWdt%|$`&c{SD5)nPCgA?f30jbwr#agW67CKLoKmzI~wdHapo zpUOD<DUiMIeb4wIn3NwQT$}3Jga|o!qx&GsXEK@D=TiPRcyCvEJ002n=XNQp(@wsK z$2SAVOLo_r8{(`z!*)9&9o;DEY_n7v8{*Ca?|cHZC1D=gHGhdl?ZJ{1{wxoX$Y6*q ze@z$vtM|ejit(hU^nW9IO)V=3A}Pun4_egk5BV|;y^9M2qlu*3>AtPoH9oZf)jO1R z;yQ(QdhYp{=7fJFd=TzpOM=#wh`7z*-r%O@l$}7FqmpJ(z>NH1FNHq^<~>~hn$ypi zVR%;5Ml~_OS}Nc7CgiBvcAZnh7a9IZo5c<>W3_N=e9N$t-b4%@KG*8}W6>P0K{UtY z-kIXn(C}(Wor>T3QkOaIp9hzZ0JiHRv|RAW*K&r+9B4I>+BU~WjAp`87m5%6ZQ_}N zX+)y!9|hQ-?sK=a2;6-dY@o1oC9YdAHE8znT(8|P==HS|c9TD@L^jH6hopa8u^LH7 z?pkO&kbeq#8y;Euf<++Q{TfN#M2}U9Awm#y5+Qa27sZ0ov@e9=M63KDC@zxo@SJ34 zC849CnT(aJ#&MX@7FTZ*SSJ51@FfmmcdKIw?DZykB}v`wPv)7292Ry)=AI?`y@jVw z?EJu%;}1(t4q3Hb?hPUmh_jeWo2HOxN<P1ZqpL#tJdXD^k5LWVqz-dTkKuaTSaFDQ z6?Agr`pJ}JWO~DJ&7r-%1fGFZu|U(ooLQWKIWFtp6P2ZA!<Ik3eo)V^b2%`rbvcld zlJb^g(yDQ~x;UEO^ufU6b^QI={!!k>WHkf|GQ&kx7G!m>unMb_-Q=g}eS>DJ3O0>$ z>g_U%@hZnH#wWK&wW{pU20n#*obO23*qc|$r-{dNS>Y~?(0e^O5mtXvVZT1qu5B3H zV^~;;wjTTH@kZn;L$^HcVyTO&#Z42=3w&mGnasuf;a$V!)rpzc@^GRpWH;dN5$jg< z7ls1Fsc}5El$6_J`5Ih11W&QCy%xb9u|3$5093C!s*eO)?o8?F&3ylWA9N49va<3x zDR4db|CA8Ze4loHnzp7YXIvc0*J#JamX2n8@Zdp9F1JMI<;7Wxy+zck05{T%0Rh*; z1YY}`5{mrg5p&%5cx#X9-p?U87DGbkypu`Vw=+XJN@@<&r#ASh*ws>@0^`o0pvO-S zIp4)u5|NL=tq1ZbVQcG+kwPHlx^lpiL0z^ls5zEaQ<YK0Q}aKOi(^N7)U-X@<oJ8S z<U-jIwvNkxG+|36m()zx7>%dp^eSrrt&sj@NdW0<)Vs}p?Xtifsk)hAn-|}*M42!R zZ`$eSGmJbkBRODkWw5G^;^LEA`oaOM8M(H`Q*~tO$GeMCU__c!h644I7_4EOkonPb zDU1X`_tSMmJ(vh=9+7-J+Z_w{d@-K~OrQ0{bG5N+v2=bW;F3N525OPQ9AWu(n(M6G z^y%CsuZv+Yw-QTSSA$R!LRW(VOKht+<yORpUu}eCHEvruUwijj_nxOOLj`^!Etn9_ zR~fGvX`Xt;w*KmcfI#i0rh=kki-_v>1km{~LMyOva18dwF*b2<a3ayZe*NmOIVMX~ z6i$5nB|JO~r%^>_o`atLK6%mhqou9sdg3&+&vbCJ;`^8wqa`K-3>sx5xs|rd0cv96 z;_8HL#Yyjq)yyr0>ufe68&cmuIdidy26G`sgE=NdJ4he-F)&S6(|+6A&@9%9$d%xI zm;&`jc^{tSacXj&)Kbn!O8P3sd8zx^9m2*%qGM8ep?!AC300SmYjZ7uPcgiuX+>+* z++26M@Xbg)&DFVM_mi(&{r&bd@OT_Ho~k_Zn9;6v!5N^EO~4Wqu4Vr5vOL-Iva$l+ z1AO<Q_2}LMd=k3V5hYdCPq(BIFAM+6+E-QY&sf%X=Hq_+z>;f0+#LAVodXwrJz|wr z(@1Zk7JiTjz86ApB(ASt9Z*r{??gD2;tw<iOqC9&6aFpe1DVhh*UeMmv9lreqaNOO zt)I#)t{fJn;AhL)1FoNWLt{)wDr%W+5msd}Gy*7mM`N*|hy_BW6VClQq8efZ-k11c z3LhUIpi`^#bPp#kjnQ4@{d)x{fgT6$bhRmJ{jxhEAO8B4<ftd-YDMw?t$!Yr;_`v| zXY>H5e_n^p*%^cAk1L4U^M{1%B~}Wf{j2GM<nwcLPtd{GiF<g|b?EOlgd=Y1fQ=Ru zAHAZ9j|Y3&m6`v)(q|Dmhzia1D2VRa0Xhl~oSuO9fNI1+7Svxp&;r=PM1<0H6roVu zm~G=YtE;Q>0d(<B`wS4C+wmqY1^H|3<(8_o6yQ+oj0)BKshWC47k}5E+RsgnyDr6% z64rFylv(1aKScnr1auOO4PAH_Yr~*G32IfJASW$OvWDAL4rMVO4{m^>A=04Sgn&0f z<zhy*+l}Y%SYBTe)GvtzF^s{jg%<DQZ*CbLD6&N+)jKT@S)9;<vSHM;9w^~z6V@~9 zTvYH5>TRDQH8K|zu+n8n2!#+=ZgS_r(4cmG^0|);4(1zGWL@VR7f7j&$+91~>U7gi z#4uoL0YNo$p<rI^^q|<<a1e_&;A)ePcM^_Y7l#4`k^_r7ubegQr;rdiS=mFr;>$Lx zknG>Tg-*7AA<R`~wUhHN;hTKtm!Jd3)Jq8>Pm3c4)i2ifIAXX9nO`f{KA`-n>X{e( z3!$E`lA%EQLq<~aljA?dQoiC-1Qe7f<u@!Ii7@1Z?i_Kk0Fp9sS{w9hn&P6bcI&jX z^f<s;#igoC?jmP+y|}0d%Q$DyH1eN<u8<)9q}*bFEHz;))2B=EyvCz&6;w8>=&70L zXy8#to<gU@Dp{(XC*+wSz0%w3_-IJ<2nre>Fo7Pbc;Yq>3Gsq2|3z=!)y}fC#Zir* z@=6pC0DKr0@bd6<wca4}um!{CrXjY}l@rRD3S|l6@zBm*AC{JqA`uSnxI>QrUu}3W z4Chky(f%&9iB#)gA+HBBm$WX}az+WLj*6NZkIK3?`NAGN);T^%7UdG+x#2VYc1!G4 z?s^k1&>4X~Uwu!orA8u~uv|kFq1p)lJ2_C#W5cwk1#@l0$YLhi4i%^1#Pg;o%5#b< z<oD^&eo{r#5}bvc?4wl58oKL?3L8Lm`O_1YsS~Bn&AmtW5Sju)`=uYz{Ez0ci(nTa z3q_P5bB+KDf8px<R51KY>H4A#>H`7iy{|bDzwE0Q_G68u`gF}T2N!5-^ZcV(0n&-E zsornx=dt;yI1q0)&E~Y<f3nwW1V3m`v=WFxADBOAYMmb(MyE^<r;A<?3wmR=FUOu% zHk#`bm$;#>ECDAu2x~9Wy!v(H_nXeh&?{)KP}o#DWb|t9UI^#<ulmUe?G(8^%wz9+ z>?YXdV)uo^!6b`ap2`V^KKz^zLc2jA80Z=f=&I+U5Wrr7S_+wL2A)9f$d*uSaEgQN zdWw-;;^Dwmk^+1&b*0+<TjPlk(VQqXL_v&ZEGk+dEx$|+LFapat$^(3ju=Mg`RSai zhs*Gb&e9xZu(+Ewfkb@ByS`*`v@QeBq5mUJH0B%s*7wzHOB$Xv(@Z_r2r?oB6c~ZG zE8VygFLPJso5t|&rJu{CGg3t(rSOYVw_=kqJl;+X=a9HiE-w4%|D=qX)R-CYxjcTs z9S7VUL1z;sf*nO>UTZ@Wy|gF0opUlEy?(h<rIHIIed1|_APG(kMP7%-Uecr0v%1Gv zx?Eaf)E;BcF-|i?Y4o=|LU|8?jES#b%DY^W`Mw90&VFYtX(|Zgt9YtbddPq4+5t`W z7C8F@=?v9ixn0t*Lchb^F@BGqc|gROuM#*jXwF$ocO8B{a0cjB92pSY1wZK^MZ^XR zMK+5qR%RpM`eDk^xhmCjmCH#$$UFr^w7C#DgmG3B1a4v?9na-iqh5NpU1c&*6hIx{ zgKJ%skP5|q{Mehk37qB83`6!Q`zNfYOWJ&7JLNf_O5{aha|Dme{>$V5=zq!!k(#_E zR5!(12>YViv@jy1|F57NE{TNIN+y+cyHe53&3*aHSEuV!kI3(N`}mOQ-m(%~?2h9= zXCq*D!eUuW;2}mGh>g__z@S%UCK4AVd5SYAU6oo|k}2a{tyRmb3j6W(Hw3;gMz3YQ zaes#)lSRTq<gln^_itg~<IJDJfI{6}Y6uuUFvK?U@KQ5B&H5xG0nfSSa+jmu$3R>x z3CPYy4S61*7y>-`C1Cx0{e~~Lo49;dmy=u-pf|b#>15-c7|6ka1YQsOUkUuM;g8RA zuk-y=^@7iRHw*$7XVtqUKIkq25qzZ8&CW<eWFjdHjmQ=7A$iJy&xJ7%^YT44BU6qf zZ;<udgp&a|jb@y%5P?cg)BS>q1*ZBHAmoo?Yq6~$bsg1n?jP9BWhZvT)K&zAIiy5l z&3wT$1vj3yh-cGUY*kcJ(w<b8m-~2X7m&i7`fM73i!J4!p(Y>_ffdmN+Z-<s?_mo@ zy^~>+!Va^ihAfj0&&|>MWqD^TL+9s(!jo)E@hZo<hmxS1r8gF(*g)Brj+C*JgNf;p zdS{2)JDdEC^w;u@&wA(}FxR8s)B?+EZ{ezs%t$+uZ4=p+y^;jR!RZ2=fqNpRN=i)e zEndS%8?OuM)JLX(H_YVVhwATP89*umA|u`+?PV7mur>1y@hf9$Er$C&s3;IXn<~2` z4W>Ys`-thFd3@%o+UqzOX0N>8#IZML%HPQNd8kRiWubo9%@(3|)i?NWyCf@D!q@f6 zMX4O>I_onL#N_)9iQoI8NGUdq;$|?@L`8j0hjN9D=Xp&AQho&1Q9(M_YH9VAYb13% zDB#^JBSoRgPiv(W8E?+l68U>$*9UnP8ji7vnj*ix+#OjUnpQX&zWG<Vjcfxtq4-{Y z1{~%2m4t^ppkr*&@<|TKAiRaY_<jQ495)H70xYBSiSvAnbz*R5x;_%lfPi3)Jf4C@ z`1Ih>B4l<L4Ml?bG(`R%cJSK18A8Hptal9{ynXwQE(O9^hTu=-6CFGQHwAErZK2aI z1MK}UiVq=WUDl_iAAbf(S5B9DiaZ+==P`QLsA7x*^U*6+w*XKI9BDa9yAEjBO@;F& z&wbI`{G2Zby;cKA-`VbY1k9i=#>6t4DJXo|k11%-p{AkH{pb4d4sUAHcl9h!pZvtP z=c|OFT_w+Ze0OmglTq#|3&6JkL?TW%z9XIth-F_J`Ztg=?0@cUmJ?5tM+|4Rxn;Oj zG5Ow8mRz5_m<EhngItakI9KCFi<8-sqT{o=Q>Vh5UQ95Qpjt*<-Dk~C5-0zRMYU2d z5=p-?$KgNd1>_sjY5G_~u|0-f4POUVfByVA)B}z9wR%NEya7F|m!ZT{@Pc=G)*+?y zCFt?!%W9+$nKbAAc4Jd^?j|5v1IaV`2~G-5UTA12R=Kg*`R5pbiU24&OpM?*=D&wX ze>Lx(qg0<2i}AzQCU+QB;{Cg;8$te*VogZpHHgnR2f11ZaQFfoY83u;m!<jaF;HqZ z%tRjVY&a#Oyz#py%9hH~pKh!gH~8`A9^TeO6@yhKKoHlH&|?dd)*l0ec!`NYlG17Y zFYnW83qR95Y=aK&`_TU1+chAb7aqHKtcJYox~qM6g^*k`g~!$~kd}ZUd5R(UW7Q5z zB#NofzQ6owO&Ozl<l^4f)gSMT#n~z2o;;8)Rxhr;T4++NFEYvWbT2!tF55bWfHe=+ z9!h{%%v}nSDc0l1D37~-zxQOO8Jzihv#GMLaF6W94<vx=jyMS^XGQ`zr0)R$mOQDj zT`#kaw12hFHP_ox!o26O`ruIR8Vm<U#Dkp>op$nU=zh(TSP#||(YX%k85M|Avom7Q z*|m=109W$7D;6lMyZsV*P?X#05njjIcG6r@ROgySp{=56M6F@jx#vbQ=&83Co=sx% zkb$~)zK0_X_8ApOb{3`F0)b*7ck62FITy>OV>D}_C-5wYZOd3pW(pJY(f{=cb#>lq z5-Ji?T>zK?TC8i2GSY7Aoji9E`p0A^UtqHC@^64eF2aF>t+&aNQUKT(sa!5!84&^i z02PI)F|q3skUxz((bmh?c?K}ekumq>pB`MNLg2oM%Dh{kt8Loga$4lcV7&h%1b{%h zzA@bmnGYPbc@i_+W9k;d4R5AQg{s{J?)$^7y+4>=QwnU5c9MNY4#r6tc`6egI#z(v zn%5XKIya+S!tf9qXz7Y=s3F%GOvOi@Wvo_ugHn~NQ@00{vh*?v%2r-z)KNhqf1cPZ z_Va4u46dyah(I+0v#}>C<<A4>$f$4;io>h>XL}`H>N=+@HFr2M7CWykAFi~l%R@II z@5C91X)^rh2HdI-ijfWZotPNY<E-UdqMWFIFLz{FCX~t^t=k}*jeG7ygZ=m8zJi_E z-%o4UXPI`8P#AQ^Y;bXGRIgd%xRb^C#p2-!s@E_)iMWV{KOUaMFU?j6a<~H%ETzQP z9b*T(s&`c9?sCh>2qyiq=UcwUui1HNw~(vQ-@-C_ikp{8#oE**{I~195W#=Xi~w34 z1d~(U`JK+pZF6vD<Taq;O2n^3hX*-bOWziUgB=)bo7jKQDqfwsb&gur<>t~QpCcwK z%Za>j76%fo)&yJDRA1?ztEOM;8dWHdGZ64`HO+GJIi=u!nM*hlrDDD|w-ne1wF{uU z20<_D`cjwpR10UYUl_+9ROz+P{OEr2boDs(u7QX9jzC(!F=u@3%=Ol=P!HwP$V2lq z=_+=YX4;th)cr(q^+$y9H$9{7@_Swl7=Q5RWmi%|KdJ^3vFx&H_Y<c!zfz|Ak|)WM znzC@DKnFml^Ii}esJG0Nu>`_zvnal#4CgG|fIm-W{IzO_v-#&)jv!YIC^%@%fCe|p ze88_Uz1;s<<yiv<x_+11eq(wXnv_5Nq#rXxEbTi-i!dwR$Py4~&C4B?E#&0+SBLy| z`}&y?NR(P93F;{G$6ZgpuY%2QW!aylYtYo*!J(`{=iAqr>u60g54%Kj3-eHL*SL!^ z0k|A=&AOb@5T<CL;k$M5zcK3oAl88(_%P5rB@3E10<_-gwnasChiM;F>2tCc;-bn* zfTSi@x%wd@o|7T>6RX+(Ro)nNZZ#4Ws<voh_Ab+F{?w5aI|GUaIJ6R+#|H;y5@n58 zV~ww&P#wiE5|Q<;j_eR$J{@!xg`XYf=WAbmn5>@fl-<~TZ9K9~3KTIsd%KUrHo@u2 zPDVElgJ2?o0@&i3u<y4<Q0sI6hc~4{{)34BOe_spBCoxw-rREIcy~8bTac>=;aG3d z<Y_0Jrm%<zR)_u8RAvRYG}Nr&<IXl#BjVdPt@_KVVZ$XLmYDSP%pWUlieiX=(cSQc zT>L&LJBu}XSCFwLaF{(Y<TTzU(QD(e6~xMvCpuvm`wY$cU#R!oV|E{$<5Ydb7S;hy z{8?a5e>4A!g4=W>Ei7fZU;L=Bxy?TL_W-G-u(<`5{o@y}>Yf>>6heq>ZZ;2~ipvLr z6M6wVCH83LmKSsWRQSXKRSmiag#(2sUS3;~qgCB&n2T}D&JJ#FHBuR!ot>;t@3VvY z2Q_5+%etJ9MZ-7R8nGv4%;^Cl1h<}e+mu^v)jQh~%b;a{GCSBDUq#ALm_LN%*(PyX zaJ!jvZoMCDzDp_Vmg~3`JQv_ZXNa2pP6QmIy#Ek!HtT1FJ^+pmrk~^HFXBJHVC4L; zncCgtdw?S%l1J9lu(TaCeN#a`Wg&)K`-W?L({91tr8KgFA}6OC&&bAiTTOA3$IQfm zG{Vrix#h=3qujG|@5g4kVYfYS`45z^?@Y|e#I8Mjwp*kW#aYf+%zGWU2J06ChHu{1 zQm^;8sTXZIsXj_D#!N5u<~9Y!01%kmp&shuGC#%=EQ;}`Xo-z^NkVN%O)J40^iskj za0q7cYem<lL))XD)DE|cyr;qNdA<=Z{rlP;T>##Vc})Zv2~kUre`&FGb}85KqtZPx zlWH+x!!P5OWmI&h9+(|6P|3Ou(5JOfARj~4-e1f@zjBw5np;d?Zh^Cgjo)br=ZcBW znhSrXFl^*gCtBH#%?AAR2LM+13r#UbSZ?jD2s2wEf2gLhr>j+qzldMNanRjbQqGn> zde<;Ik2Jz-6-i2IS9LKG4ZMYW&_L3cdWfUJ0nFQhB_$a^{L{p)mGLgMD=gPe%wz#z z{9Xz8T%~T{F860BLvLkkn<u5fvMEp`Rr0v<u8x;0I`>tA32DKZ#s|Z}_AnWpNNN1C zKGf5))Eo}z`?_$xz-u-Rp9EIQQw%b-Ip>N7FIPzkeaSg+wBp5yEnHRJrB|7M#~<h4 zyn?gbn86>+_m$D&i_u~YAJ5O9mi>L+VDRV+aMC43N2A(qjE3vDmlo9C8W~RzNYuf8 z3z6-OgK07l;^Mkoo^!57>T$-)8{+uE#5#P4MMCKgt7Q=2FK(oaNd31>?XW>p2)o6p zr1f?!@~CN{UXh(>5;z8J9kyJc>uy1``~+UzfMsP<%4|nQc#n{0S9#T0#Se5|EdJ3` z-wm)}Qb#_uM0PsQv1sL~0#RRk^VDFYBnVTkOR;TvSIe}D2J!LXg@M~b5c-fZF>7;o zcZB^YE<+p%A$O#ec&svECk}<@>8gZJz&Ia0eg3UDVQ&AoQ)_(1V1$qx{Urm$vvN`{ z<LaO+XR^N|8Z0;v`v-HKHV^%-%a7n)Y0gY3!I7W0($TKd+6BX@`pp=6%L!s3E1EwS zOaD!F2t8wOaf5o4vTvEcMy)S030_>I!2BHWI=g=fDOdOydy6AO2shhUkc5#j`0w|O zziGZZA_G10YgSF(m;fU9)1ALf=ei9$sH&$~axpH#NDR?yN{;diJ9(c+zV7&wXd(1^ zdAtz=ALNN`z}Mf`y}ihvT(nU?2^bks6@&!?aG49?;dXdbC*Ow0Fk{{QggJY^5gzoQ znwEGY^|PFmtgJ8eq`(e2SEt0s4Y)5lpD?esW=vRY-lH)sk?&RWEx=Ltfu^YDtHdWK zTXDw!$#|!}TW>g-o~1PI=q7m@?5^9jgch!j*8M-p&Y$hi<u(A;+WT>J@3se}+|$=P zBBhV72q``9tL_QK!gEG(S#sy*D?h5u|NgiN{sf90%nryy5PvqV+M6C-po$AB;Y53p zscOV-4N9c>w%X2HVDlHst^=H}&aNa-8;FGCX0{d6@W=F8s@m#}rarIrrOPcBA65p+ z5V$HuoH9Sj=ifoHTCa4kQ&hd%=TYF8?L9A0`T>8EB|pBBI(y)M8vE+7sM>d3zfVyq zMI=R9C5A@26eXkt=@yXgp=*$mPC;4(34vi~X@-;zrCVBBx&}D!41VAK?S1WYo%0{e zwbr}dwcdK-zVGKkS-8JyUCdWb4i<gSQT2RRchQ&qlj^7ne;-bj;XU1ZloV4GskOdM z7?-D|Sbv+FnqCF4W+pR;x48}H7<yz9gp)hY{`Gmrh(5}3lYaXAtw4|d{$CMiR~=tF z8abM<Ctyx-`}O}y@ZY@Rry{(4?H{MdidUl5XEQ`06cKtW%qFaN9qTgi9dY(ALv=e} zAF%48Ufp^5DNIkpS=0la(*M8Qr1k2RAwZmaP#e8h$Z4jDlMrqMG*!dj<Ct{*+!Ggx z9ElN$8<KpIrUz)mf_PO7l#xX2m{WMR0_o%Gdo|ejFj_1jRx2xSeUUYzCSxFD&0Rhp z6DyhhxhR5@5&yX!>-)^Vc6@wWH*;p*r9}pe{~d*HL3Gj;q+C_8&}tT#v_m|&rg^}` zP~qTLm0pc=yih#GSAgQb0cpyl?Ow+%)LQJnKiZYzten0y{W$<QjJVSOHd4`Z@Asui z2Rw=!!1hDU=Y?l2v%B}h5y$)0$2%*}S@o(MFwVf-q2EXqt6(f|mWdG2gt7^1ynY{i z;_G(0jRxVv+1|^v##=nSZ`TTbOR37A*<2*uwdM9?Db%DqA)bZm4R-IB3*sb;5-0aw z`XW(p@74BNPZz+|4hVK)?^&x3X_+39LGa(`a_5U6=~Sl1J)?jVmVnGPp8>Zf{BWqe z><Qfs6`#hn7D6mZPB9s&<!=x_?cfS+U*n<u>R&U7r5-<}*pgLON6Of?EGFtc=Y3b0 z^#3~cHdc!=vNvM)vzlPBhLZC&4+p@i1I|)y2*>$#4d@tL9H(fQgGE;gZN3r|LILmY zy8bmjG9-#|!^89g-IsO60xo{TU86Hz-d`V2q!;REOP#LfRFYS1QXOJLHAXCo1b5D2 zZ&ZH~pTMClS*=&g>vxt~ZaG$h7*rT88<JvzBL4h8f30h@im>txdT{Or(5{{eZEcEG znQ2c0a&W*)+zh1iSYh?Ha<R>S(Cv&4nT^%9ZmZH-4>}1lZCS<<F1=jVxq1bYfO7R~ zR<0+CaJF%WQ_o2YspHnnjfhagv_3doa0Ukl15_7at(cpe13i;BT)LdZX&SX`b@uER z)mjM{_ql}=dC^xcscrtn;yp-HbuFrYhu_pF0C6zZ8%AE^^wH-#Vwm&Tp8!2UJXs#C z03jYzlHR_)mtGDr?_qIC#0udxp>`T%$I^?;Z|%m4bOLtlaxj5`OdJDrDr@T9)4TUi zhQ{HBqapYI-uDr}%zfI$>ynP&3LpQ$Ym_zw-8z%GT&e!9KmPrl;fxuT7I&G?y15;u z9}qif>j(l(Js6{(U=E=_;^KD0Z-1QER{V>v8k)Nfo=s4Js`io)A1m+^OHBiD6>928 z^_G9zT!V>3C4@8zdQHoeYZbi8{S9(G|J*oo26B&-e*1{RVG~nRK;4@K488$Opaq*2 zp`1`f>bDP6i<+s)!X^LY;98~{$1B~`gZ&#gAbFCQ3Dnd$ZbbB)9eK(=ZCi;%=R{{; zZ*T(sZUctF;7@RCIF79J!<1Vd%}ME%UGNP6S&?5uJzF!t5d^WiJE%nXIM@a;k=dI! z)?|3|2Mfu!<Zi!3l3~K1{(er2$*R&b-hx-tY}`DOkf)c7!~1ZrCb-W67%{L**cCYk z0P4H9PI)m<MY^3d#Dmo1(-%$s(h9j`3BtrQ(k3#V<-W4`>flO$bGb*04f#>C!g~JM zRM7(&44z0_`Yqn@|Hqm}V~@l^T61`rcS}vpQkSG@*epM9Sg@u|!<=R<Npk~)xK@Xk z{D=V11|=_liYOdvjQ!Y*xh)9tgq95cl11tD;6bCKqfISWWt?lxLk%_E!qD?nftnkz zg%ZsynEcuf;_H-9-o1?$d9!4E>D;01U+ercR#A6DiH&dM^DUQPRE}mO$lzy>tE|*$ zk8NA=Wk-rHe_aGQ<gmdYf3|hupMK^uLZw7cjRP$J4KSH{t)lqp;h+@VA%0o`1%GQ# zyVGIi%c$mRHNT<gtsLQg3F2|Jo6)L=<*x$13JEgw@=;v#z&XYB2-gM4KYs#senBBM z`<Gq#`+D7;20<t1y)~yV*~UM(fDG#F07xe59^~7gRN%>jrf+m~QpD5S+uKL$WD<u? zpQ%byIHf9do@!<JAO8|S=WoS>*6x4Y$+ElYIAC-}AT?g4HA;-!JpMgUl5!gPLQXC$ zJX{_?U}R+n(As7zA-P8_b51Ma9>?oLP3V&WM0n1;5j^8E&s3A&+)C49Lxz}0G+3~z zZ`%sA3f;;SAzbmha6kvn{41M4{;th120*PGOlDCi)F2;&z{(#g?#;k}=tvdB-+<NB zrOJ5Q1qXzYXjN}wVw}8qNk99+@*r+jTOhb{yBnip<$9g$J2~<P9McI?pF5N%aVD6@ zVAeAF?w0p3;`2V4QuGEZE<CSJ`|yw=H6=yv@`uU&wG+0j2Ds%!Ep|GNR+c6@&P8i; z>~tF9U!r}(TTqOamR3}hsxV039HSu?gjvNnRoQ*oxoY{U%*1--TC6?jJ^iNrRN=eu z2_Si(U(nOr+uPaM1OlWvmn~wJFjNFSYISt=^LOdXhwJ2^g(HU0i}+d+X8)K&{4W}0 zPfub6Evt4q?9ne71$AKN)%E;Z6`;d;p&>_@9E9F?FflWK#dHnaDyrnPAahB~c}<`` zYUge0IvD$rzH=X(0CIpr;uDV1g0l}OrEq?d#guLhj;H39dKVL>P4nPj5U{bjkC_jl zUo2fzrblFm$2T{X?X_&&QE~qw(a=wvqdPGu{iHhNRp2kxyYUMp%5F@D8QxYPA<<gL z3Zx^bJk0_64TQ}u6~`pL?b_l%dr(rb7!VrfDK$6ad1$kE!vG@{GlG3lgyZ#ch{)&v zh?*&bl!9XI{9Czkl5OX)T^$ekD1E%+B2LUOT`&ddvEAR_mu3z+e<zO~1JnTp;hTA( zj90m<BZaoR^oQKHUzc9u45I#thA|__cI>|u-f~eMGWP~%Qzru(+h#Ds$1iFH<3QRW zE-LD0W6FB~urURQ(1C3E5xC|&>D82;IUbPR8!a~4G&SRPSf*$R$j*-)Ci(B+w7vZ1 zDNHui6}wyuzm$Y1Hg%v0!V)Av)j@7>4GNC0wmksJk&L9;Kti2zx`778+3Hd1<@URf z0t_g>#@D>bh5AUn=}wH%rI!J4VG|X$q%(&199p8yI%AoFgwouW5~;mWN(pYWO#!{B zLbwK-KrFHK;c{=PHV{VuP?{i{h@ha+a!Yl$8~gyWe6U_rR0I?O>GS)<E_4zU<mKbo z?%uyY36vKBqN$5$=y+#dnZ@s6jzX%1ZY>SAs|V1EAYs*_xlwDVrDFo{ZC^xj9+e_` z-Vs&=35b81$$W8_v%g}@k$1OPZ_04(AgNanGKf2MMK%O7Zp8;sPnbjE*cKcT<@%{` zxSX<(rW6n)m?H~gN1h!dACU~Cr>D<JKXzD>lWVYxj*f2X_PKfkn96bsOG}1$gz;g) z!Hv~G2!^b{KangmQy^Xzp<xe{8UddeP^qmX4z_04d&@Lcmb)TfwmzhkL`>DVkdk~u z%UiTyNk-h))Y4kzfR@`Z+W&<LJ32qz3Q*F++uP_E5~NPfpMXb53}~7Tm72ap^+s)q zCT}bmmkQ3S2gb#jLrhnt!O<y9qdxmtyTT@zySSE&I!Gz0@&SQqHH*4EE6`=aX>4G) zraFujMS}Tq_AdgV#6TI!NK5C6EhSY*nI^rx50Jp5y+<YLc?1S%v9u&HvS%nuJKk2% zT#clzNw3Cj2EGGx$}ZuuUMz}0$L%%8zgj~?Si*`W-8DwDQ^0n+a5lSSU~s$w1`c;D z!)mz1UJ^09co?Lki->kyS{cYeo}a9N*6BlH;`4ii3)JIb7KJPD(h?^1HRpUHAb(M= z6IX5nITj>Dy9b}t@{=E%)7__QhGYlO8*v4y2Hv6sgy(QvQnu$35*>K`O<AuN>ppd) zhXA5=9T39^OSmbT>6g757*No)72Vv#)pi{SW-NsL(b3pTt5N@up0pU3kAAg^5yxT8 z^r!IKxY`xT$tJ{xE$;iPa4nu5dRW}BM12YGgiJR2MKdQKJbc*bOXdP(QC1W~eR8$R zEx;rsWxrYNx=r_uW>$tEPUfL)%fiA!P8v**pTE+4AbT#&)AyWxF%GiRXhudt@`yOS zCqqyl<{4sKl<7$GRXq<aqQOYYW+uJ|i2Xn_gfxOrFc$K6E`S%(n?6oDy4&VfHLjyu z?c^bEnyPAGK)cEa-qfVV?SY91Oy};sdvno8s#>JSo#R#z52puUH=^2robMvBA}_q( z@%#OEWEse59MR2TONg;rNW@-@uQ)J}K;)94i(3KO#6PAhva4-}fht;=^=So24o`_) zBuyI)`n0G3?a6>dkNhPn&aCB64the$EybY#$J5vFbFuMs@%j_!Zgpl+Q9npS9~Roq zMG(9P@G=<4pNgaK(C{)RgJmD)k2@LJHPlttv9PLaho|O6pS~C__qLp0UlgjB=1+)q z=W?nspP0`3Dy6`}bh_wb<G_Z@0sAsc60P5d<cKO}I#+h?-M3`FxY{PT@-3b+RbiEz zi;Yd;KlrK4t~+t5=tR*x0CoAaJM{&oeW1kM5CbxwoV>ieOiWCytn!5;m%hb(y!U$n zPxq{r!VHYa#(D~P+<oNVA(uzH+kYU<oE5+s9HIZ0Z{ur_u%oyx|2qjBmCWx77+=Jl zHA95Zd9Aj>hQA)|W`ooA&(%J+(Ll2w@IUSTQct?<+vptd2okr~KpKTN8YBQpOB}$4 zd5tK?aG=ln`xpR@VUEZ4kNTHVLX~OG^}Hb_#><&H*w~C{_;x~oQnw+Bi$&QWsnMqv zh;f*you=*{Wt5Yo?&dfpVjfuE`z^5A;0ssQa?t$9N+xT9hJOB43aM}Z53LTl(vVCZ zcXHkBwxL|ZWtQ;|fx)r;U)RIIrx6VYc`8YW>i#g$af(ZoN4?3Ko4zUcn#gFr{Zuu7 zC{Km?S`wgGZ*ThCkGc(g_VIDP#Inld#7=)pN!!{-jfBj+@3-zQS8N)ngE!ee{#kx5 z29RVuQ$8$o56jMgRK+w}s)BwC9jS<m3wWYjpqBp+jLTe&X*@?yB9I978(Y`$*^w;f zC1DLnQT@+&5d<&)vN`Uutkr5EN8StnMlTidBoGi0H2<q7v3Em9%#-m6gmQMKKVS{0 z7i*#q-KWG$U7Z#ME!z;_rFR>Y^6yy!wcY1tT#2ur`~3m4G4xn`7f`nNO6rXQ&SYyZ z$Rf`1y>X$2;OXUhuclKRVN>`Y-EvdnR;Jh|I$1tY*eXWr(xR?A^wPFm1G%%?^)0fA zL4{7e__u2{zznV*#(=z9`bHHCtxz)7qkih41p4$F-tOrRd0Sg8;0ZBr=fLbhd9qF0 z)4Wx7j<hF3I`1bDj1E1ocHdzUit)~x6s1mg*hDRp@k(Uvxpl_55~3t8A!Ef!zez>h zgs2`-O9M!j!-*V6*0L)tp`n!F&Y>vKm+7;+gp4Kqj_;@cAE>dqH(tE|NSnS^zl#nP z0&UZQdvQ}qG80xnQj|f6P>A7Fcu|J=1CZAEksO=)vr*A(IM=(T3Mrlz*`uO~?J=Aw zKS{z#aO&=I(Lq2fM0gi-{Wa7l<&h0IV&cv$7BWQjO{IXallxfTG4Hd!kAfSy$ixzQ zPOMjHIXc1GK;%R=_q*Bz{E+zBb)=6fGo^mn6{DUd(wW_M{Fu?`gumf^%7~VNE`FX_ z-3sA}!o4Oo*mmA)LRi;U*zs_W_9?n8J#<@Z>*V)SUw!TY(g>(d)iEREL{@$68U9!C z@7E&q$3RPk=$0g4Y)4Ps^z(gx^&NTTcXnjTv(!ip<>2bVeo+V!DnB^@9~doMD|^R! zvNE=dU7PrVHtj@Oz4fC0KhkdoQig`;XNH<3*Ch>@UPGG8fsYqgJ`VXWh*&lht8iUf z?ys?BCiOWS5ISP^)w-W5mZs004G?;txF7r%POS0xXB=fPlOp=->CA#0++IPN%8WZw z8>pbFc8>f}K)s<?w=mG)Go@&MY#j0x(oc>K3@RuLTa+Ksf*7h7lAiO}!xYh9&~CaZ zhwdGOXp8@CeE^jjqL-O~@Kv4l1d>vqWV+l|I!n6!A9d8OE`5^`W{;yHX08%lGqa%n zL6FTU8^yXn);auTn<00|4*>?Y;+s2~3L_=j!tFbs*j_Peu+ar+vCSROlmxw{Gt(rg z!j2`8T?tTRBk5)8e}HctLx{tA?Qd;a#%tK(kfOKWdGZPVn$O!%%5AXkLx$ZdPJQv? zaUAdQ#mB7`?nKzG@lvu&{Y)))$F+-lyzAd1MVVtfNbMt<i*Hk$?~i0n<2@D-5CEV! zlF-&!JJjDk4}N5dY=^cwJgZgWX0j>JS@f;-Sy+9v#H7B{)uEbD2|KGRw_Fzc-C&!n z_%27WJ3KVmPF6Cc8n9Wr4{W9cZKtZ|R)>s!ts1p`4Z*G$)lwZ&TKMdBviF-&oydxx zcP80KvOo=2y<^?^l$}7@$15xI#j;z48Y1TD^b@Gl-Q8Hoan>R;(F0YUB_leBB~wd( zi81bd!o@|wZJI>kWAeeR!4<^d;8@I4?{n0&{rtN*9pWy)V|XIRsYFh<HF><b)MM)~ z5c|EdUcGQLftqC4cz4OTd_pSu3w?cTKGN*FET!ON@bPa=<HdA$8}*Ha^_s2eR8Aw$ ziLbPb2@PH2`GWRy?*ab)z=ZU*S8ep#be*lyuE?#&t5^^q!KGKo&c^n2%nDhg6P+6$ z`vw~XqqPkUGp5$>#2)W5R9KR_w^3T(p|aVdNu=&7U-|wx#$e#nHha~*a!8txI>DVg zOIpV+$TjDaJzm?SxQRC%*17h=ole=4r|tv9(5GxJ>+L;<l88;CkI;t|G!8xOuAgmZ zZdl%C<8MgmB~+1qnMSYHz|U{e{j(6sCei5srvGrA9ClPhh)bvY%<I07Ve<P&A`hv` z#Fbrxv+edm<ek<>VKepk2@M9Qam(WJi8i0WtJ<DSn$$TRWCO+L8iBdWZ9%(hrMf&O z_1oXlwn^sbTs1xJ@IQmLxLD&`CPZ;GcXbm}+`{I8RyAD<`fHCPyI8lW^+}aTiQ|eR z-dIAUe6yaNZOgsg#qm8!M2x|_F>2(NmhGHAl;;8DaBT#a;h{KIsT;SR`xt!kk*tku z_`DK=dvUr#Ay6)yCSJ&SVF^$eSEd}W2pWR#x|QD`-7dS+7U$YImenPa=2;?@@O8q) zqjt{USc3c$*Dc*`eSYI_FN$5AS$G4Ktx^<)?w>A<6TK{(8r&M+ADMH9?S^AbXk2XM zao$~vOq!$P_jW-_hr_$}zgEN_>R6_n^AT3bOgp4<J(NsONKUM}x#@_M>fbfwbAN0Y zehjsCABcT3>Kf)<^=bdnxyZ-Zpg6Q9t03Opa&}ld52T_aX5!Vn>s~gu?#xKnGfA%Y z#R$r(<5-A!Oyb&7PuI!e)&`7dmw%@Gr?5-^r$BLWE!?)aU*d;dA?#gUPV;SI5k^9E zblv+qg&KCQH71Cd{eXE*#%Z`8-^5~lMCNW$9uFI7SKa623TKf-Gr~kj=fOrkFs36! z3`;lQ15~+dHZfKM%N&;dNAWs}C0vv51lpOD{IS`S3kH0aj7?9R`A3-A7dL||tI&CY zN1lDECG~tc`TSUHEIJPRtDLjYD4k@)i!0;sso1eva;FEjD=%b5%0-78&+6EyzvdsD z)UeSdR(<;>8XZ?&rT}eCs)T(ZWUX-)e_y#ALP&XbllMN;NErG2)YhGjZesdMJ5_Ql z3;Xv~?x_As9c3^BIL}3{7bG9WTPY&AUR~_3k<wI<C~Mdz6-4SR3My}UdGWsyrV@hg zGO7P~z^#twJ9mRo_!iro2t#Z_f?3C>t^QesZJXhi;Fq1{!P&ruXMP-TUmV3QdDoz< z^-Ey3MMYZl_Pezyo{p1_jzY1sJsN}i&vzEwXGWGcEGBpt=337XYwVK_ge1|m%kDdw zR7Q$=(=vP9I5Afup}J+i9;S%gjE5ATkK%OSxe#(#au`KPvZ-5TA06)oQp27cWyDWX z-Px?7Q_<O~GGwxP<c_z?AV<bjFB`5)Gm>o?Z7IWLRU7Qxfu0}_DPr?=w5qXky|<>3 zZL4lGR$dFtBZ<(hwH{jfiWq2H#H43u+~YbA1YqR+nmByg;emis=cWld;eBYLWjMU^ zG&AmS#+#b!9oRnS*R>HnTlF5KIm?F1a}Q}!*|45*>lxZbcPrYjgN3YDtNlow+D}45 zgA{&Ul5sHi!kLN4Apl}BchbDwWc--FZ(nA=?_-biW7GC1F`S{OzK!wn;d$4;lIMu1 zh<}qdhbOo;LNr8d>zCav!Ml05tZT4_sL7Q-JPi8HNun{ZKhU(eSS{-1ev>vfu}XS9 z|6Wald@{lX|3PvL9!2CfJ89W85co}%-PVdu?o5cB^D5m3?{C^!SI8F_HYw9dc{!?Y z7RE<ArKpK#zZ}%V#GAsddx<O0vw)o`0RM0aTOOI9<5xAvW7Zmzno8q&C83o)0QwML zV!+FS^3{jV&Sw`VBY#zO<+0#%_FvPZ;Yt4_;X7Swdi4FX!1@cZHcvw!WQXd0*{A)| z94gg%vX3k1R1JBMxxdiSCoSsl(^?UjkpF7<2#ghlG@jPC+E>M3Gd<5?WLf%Mipt{n zu$ngWV}>egvbOa`6<3r-l12B-cEV`_IM^far^S7kF=-g;q!<3-Tf4q0YN4IB94nJ$ z3pJ)Ge%zYCC%ngS$O$Y!>f^a~ChO9AY7>*+(zr`Ii@~WkuWp1r6zz)hY57ss86Zwf zr*^ms;*O7ryhD@JM)!lakisqVtO<pYixrW>=1{K>kgLI2=5bz;VSPxCpf>dLxA<kd z?613c4hvJ+K0Qr*p&JUT-nQ2&;1v>@2uw>c0(~ghiDX^NA5ddA1TVEe*J6bwzL7$g zDy3T#2T7xzbepmBYD*W4dj!-wuZG_i`_TKu&|G{m`DJLn(YctU8~TXNWv{vZa=D1i zYVnl)HnG@2E!&&7Y;LRyvz#rjKQ-DJJ-*k~*_ooia5ebhZ$p?%3wMxP0o_0{=->;l z;#83eqn|{0p<6vEZ4)Mqip<uJ=Bd9~Bp(j6J~WI4Y+b}in-#CNgaj72y&Zjw?E~B5 zXG_6rx%=;0DRtj@CnPo&s$TouaoUj;d@}L5%=)?+DS}9nd=a0+8t5Qn2L<NkF<&Q? z{nY9?@wB>vt2Pptj)SBrC1V@T`9oT<Upd(gA4^Jlt(|8X>5Jw_Upz;y{16(y!bXY{ zH`<LWk=HQYy*p9iS)>M%?1BeY`#Az9@`D9^gi_?&b7Y2BqJL_S-&^o$`H5GHd8J0C z<bjp4F)NbLtfC?gcBOQ3l%ZZ=<B-1h8|=&<Zk0AIUDbOP;M=^pvngQksqyiF(1GY> zGo4Qiv5U|Hmv$CXDsU}Bs{jG}Z6cmz0gG{O40*yTaChnF%|W?@yA2Z>x`YG8d~wMY zH`SX<y#MwfKfUKsdv1ci^Tg2Zx?VT1p!;ATG4$wt$7_z84DLY^sy|~&ImqYLdz*;! zUjKbc<Uw*uin(i&-2{K>Kku5@Fg7+eDJ5rc0j6A#gxAlEP<>S|OS>^<FAg8C5RuTc z(7G_MaFI>+((BeVocveWfk8KCid0ik;lF<?WtjFFD+#V)F~8kd{;2=9Wg%TYe?o(3 z>&MpfR=sca->42hYx;3Vk)`;Mg2`jf*gDsJODRZMSo<ebIOn8zpW(5Pb>p=IrURA( z+h=Ax{8xh;$z9QFWKJkvHo^#Xf@-jL#xk%&$KWIM{TtDU*L(Ogqhb!+FfWgDt{QX@ z8~QNQ#xq5CZ;UE*;V9tPbl~wi9S9NwLQS>(;v6Yi>8H_q^YPXNR0G`rrh$(3dK$Ee zynH<hC5j7~9}(m6;3#I@<8;0SqW*w{#ts%zKJw#C-bEs@j9iL4x3Y(}n4HeIcWf#; z0uK6SxifCwf{(oQ1y+4%eYW%L`UVd5ZgV+sb})}6pgum;)^_YU4Mu(}UKYD(iA0yh z0396+WnNaV{t%s^vujHoB(RRIvH^POZa^iV&9T<&kyh4H-*F2By+KEE*?WILbwgJd z%71RQ9V?+Lb%1YhQB>DlwAx+X^&Z8DF21oSlf*Ie5g8VH=c<$u;}XM#@AleHZU>5v zlTWCvz-4j}jsnn>ZM>bPm%E|2MR{sI&2wyXKWBlq_QRxCepN+eyjmJS<4dXt=^FPT zGifi>NE|)yH$PVzZKuDhFZ4bMYCkh9yJbf4tV%JnL?P7=8UDsgQM9|8U(n6jU}V)) zn%pA{sc83B2@}1JO7>Jec&aqYO-A!mC8zbbxB3h~pxtGeCfbW@PAEm{v$${lF2%Kr zXtG0NNM+iQ(NOa7+ni;Qk{@L>PvE2PL*rF*imqm-TpXnV@~Wz;DjqBP+dYu3D!VX) zB{LdDCdecQN5D-5a-`d6YCJ|E&NWjjjz2D`KO8$7$6Z*Ifm?2N>v4UzUxmY%#LwMn ztl#&Td`8#ZsET>L(B5){;=NigsQH}fWc%cIz0^fn!33l13N5<420+IP){E{(BP14b zj}{+ic!xG8D4%iUKFnt!!9By|aIcXrI*ia*pPhF-8%&>hKazTgKXSf}43qo}v{fh2 zl-n>qOqUrs4qOqAdwA7Fw4L8ON}baE%CsHiA1P~UCN|H$-nnc{RGkgxGy7A{f>~me zV6nLy&(T(4To4n?x8|jIkI7{}_<fwWeiiRV+Alt=m>+=YJ}f=G_CrX^vCsnc%Ekuq z-R$|!s-qye6ME*nP{g}o_axQvmESj$PD#d*l#~=--@ij!=j`~&Fc)Aix<iJDIiMh9 z)D&k>Gu8VALuz1DFLdOx7;K1%VKJyKbCi{nE90oU^m)dro$|5oN~)<%qn_-bj^9s| z<JQebe6<|ujki*BWkP!^njZKsQ`*;lEPf29Ag$3Ph%3I8Dl{`ydu-j*1&3!%RXf>? zl}MzCigb24ZO)8PROOMv6?0YG>*^~jM@>pOS1~KAa|lxPQM9hWwD0%YNIv!6Z3eGB zrTtyTxq1C}#;LtA`RbAKse()8BZdK;vhfO_$kUZ2bydm$<Ei%Y1J5d6OZFO<tqG3& z@0HVMzF&mRe<&kL{DqY8Ct^N|<^W$vgiQgxj6mr0HZ-nwS<qM}Oq`RC+u_b6Q}+t+ z05C4Y`4R>0D^-Jgy`>W_H7;LMbQZ_q#VjQ+YrBe#v_;s0Iu*0mN@lzc5ghnPI`92T ze)N_Cmhtrt9i^|f`hXdI7!<^jY@MS4l+e_~8_VpbR1sM0i_9Y?;es0B{{H0CER2Ws z<?79+*6C;}6Hv&waUN~yxJTbk3j76Oqi?R96E&VymCo|OMy@7AFn?B2qk_J#lKHA> zgs*f120Xjwd0)NGp{`aYbt-xE`VE=^(w9X$J~v<xIWg4lt2r-io1a5>0Gd?f7wWh! zK~hl2ZHF6is58qv;(^e>Ve{AL^ltKxo~tRdrhsnG!M4K}#^H7E%yPiD2Tt-P>E0`Z z9{5~4W|*Wt%DK-8*oB*;#acwHlT3n4EO6YCAJcW-g#%eZ;kCf~Gmsy7i5nlkcCxqP zlLW@Qw_E3djBI)WL?_s3KmSc~dH79aM(@rd_Y}*oES)-?6zJl246*2lPMu^67lW^h zyGH-l@zFE%>Hz`IikLL2$u#jhypw*Xs!W!bILil>j5whJC>C!hA{_=*@b-v>?gF(6 z%*thp=#%NP<^E~0c&EC5%UJzTY2rjUM}_$hk*M+r*j-^af!Wm`aL%g#aWpt$s8<8c zcmhXAWBW`-HnFqU9I$J?2c6de830kOoDPg|GT1d*G_@k0&K|+t9%oRCF~BXqzvL5D z$R7fbi(Q6g^xOp-3$UlY1vrE_x)+}>b}rv=ndZ}(vHzlw)zQ-vpmS`rf?1tWC6>P( zPs-2#yZ!Xzl4leyX#_Thft5Fz7!{4D{u}F6lvi_JJG$B~2~T_P7pRQOeG>~C;@!## zmG##IRKztNgXA7HC8b7b%p&%^8QAPIm<Q~o>p_3)rLE;bCIgYG$4cN+eeJoj(G=&a z8OPU9*6~JsCL=IEFOSR|(=h^{%ubsM?SkQqvT(OMpE>1zX&<svp6&=poG_fo$4`If zeFsff4BiLlfW?C~2iWO{+r!MaTI8hk)7u=+9<2_W2AdGG-~6opy+RIMxS=ZM)72Mo z|GRZG{Kj5i@b*Z!t7iN;FPdd^h+!Eqd{6tOy2m<z!NfcmJqz)~%>yJMnO1kzf9xV{ zJ?NwE#-pr6jvP+7oYM<AsS8Fv+dGIWrWe;v@aqCaGcS4N(1Ak09(}__j(44w*pF2u z{B24=2N@Ddf>7j<>6iTl*(3WOmpj+g!QtIjy!2<xjErwt_rkB}qViUg8@tq2C?5WL zxJT@cclK`j8TBQJ3A<`#BqRg}eC-z8m?909A_;r?*M)|6zZKSnz~>~f-Lbs_sGcFy z5BmfEAch_gg-+srd_rhqdF_5*F6`bpc8`Mg=WBKT_2Q8{v<2eWcup7;%sgouJJOyR zMtQQUg1RVzkX@!l_+iIAaPf3~@_+w@n98HT*_tyKKTwEwnIO53M470ir|2XF2`r7M z?cDAC^Lxu}6R-x&$GKp9@r@W7PUul1T-?q3#oy;O%UM}_5WmZ;&9<NBiaIE>gifct zUY^*EzlbiM?`&m9nW@d7v=&jTX#$ccV>>Q>Fu?pU9yiemqo=kDGot<Tel)dwmZ_){ z^XYTSLt&pJpwV;dPeWH45xhA1Dy+ZuT4vs>#;h3W_N;y{l#Y*7P?#jS$6CAJHYPE7 z=TBFC;*gu7a7)cI<&9(Oj6K%V<g}EHr1ldNH31}@>ePg#?}2)x;W^^8%?j76TS=u; zx8Wy9XPA$_W^6m!fBKH(DtV|zFI;6MNh%}~pzQD|-)ZGMq>e~kF4fdM)8gMVo^LQe z;l0{g!Er#AMt#rABp@c0{ljfF%lyKqEzy?wSYS>D(}wA@I5CSRt1_-P2og^u2~(kS zVe(<NVs-wFxE+nlHzG=d7Dvk-SeLHKmRB#GIR{2geRo^vJ(Z+Pu5Ti&`SLMwZ5CM@ zOtM4Aa8I%>$$Lc6OFA}+ZcY37>a*(~U#OMrw)z%5x1)RRmIC&ls7HN?#AD<7BGtgY z^Sb?#tBeAAG=>#_Kz%kl?lg<cnY)-UMQSavd@D)%&K)O{rIyc=C>L1j*vjcWR6+H+ z(xC_;@dl<nje*KM_{m>o=4ZzPRX@^Lh~`QoIcP1EI<L;GUNoHta!Dnnr9AiK4Ghu& z)r9|kTtpW&yce>1fG5T(2X->)Puuf{Iup;Uvh!lrlk4FMXdwvy@~=9rg^N0D0(!19 zjIchmH5+wh7EF-7Z1ehJ?<M)gl9G~C_U^+Ug$R=X<v2b9Hr&sY>Qy*2x?c+hjJzt9 z(V#MHIxF7fR>Lt-1B4WEm^VM+YX+96T>@x~V27R~gAeuxMl=04z55>I5*)Lg^ACVV z?2OqHK<h9loujrw@eayUEgKuQ%gb^L^(*jGub0|T{{Gva+3e3{gI$GNaCLPtLDv^~ zKx-ja<tP;OPYatP^8!M&BN?%B03|fCwmo9@_zxUt=FDPZ`__WH-Mm`qn2wH47*Z|& zpSyYkytc#<4COV}Vg?lxf1o{E;KSUi8h4?F+xcAfZ%`ePM$O-g_>Y=^QIdXZg@Z#M zAl?EI=r?|4D%#6N=si*U4ghkjlHTb8UcUIvTnb<i{soG=@GQ9V^4z#|S#HwS7u8J> zxDG0*Fn8{Ehgivh$sdMsM{aHh>`usj`hkl2!VQT{;OAw1ahfm1X>Wd^gmGwSTcq$@ zp08=4r``0CYKoML6Lm%Y=_oZq*R&5!u@m=f5#+(v8mb5)f<X~)+Vd|x3))OQ6#?Xr z>4Pt?hka|PXGl)SmWs5|gGjsIG`NiQ6md$GXcg@Bo)S~(Gnc)oElJVYnY<O_>=1~f zp26BbSyWB)g-~DOdyWGAJ}*5%Z1qSRsAHbHDxs-41{7dEXJpW6JNfFI@*+>8rKl2x zTsEWWrA7tNxE|oa9juQ586v=BXVtH-1$7#BVs_<92))yX%F4=aP<z?|E&>3b7)k*b zi$J{A5R@$e6+b}f(0!o9w6F@-uDInC5)v}1i*Amf&tzk|uEuV*A}_CV#c_P&03`gi z3(%vy?)xgY_Hf!`26k$#@`OjlWDC=v1@vHDbKx@wL{3vlY1WSalWJ&d34j%Vj_mF2 z)z%81y(GiCzEDUh=-6-e_{+Oa4gV0#1Vx2`Uc>e3?%nm(obkRm1BE(4Z55u=;F`^9 z2rn-QLN!;#qWqqg*LEu@U~7bDs_j8)qAynhaLEk}41mJavje6CptXPAlL`16%OILr zYWqor831*XVq)k{;yTcdBJF|{3DB4FJci2grz)83fYKngk8ao2Ko>g)2UP;ZIYFVW z%v#{x`|7)0pw}%}YD!8<fNz&jG_e8H737n7Z5GCXjFsE&($jB1B(V^A?he2(QLUiv zh!zV8OK<39`BID50}yq@>%YesTE@EXewK=i0Qx6#a{h+e<rd`z&DRUmEV&Z>7vjz^ z1x%0mJelMGnc#559}7rweTa&>g2aL9R@kIUetx<W(n@*j#wnUEN&w|{U}a;2%?6Ny zWX5ErJwOR`ePGotdGo@|%nX#70U<0hJd@Hfn~G8lnUt1qt13zE(Sy%aiy>t|SNziw zT(gvpj!vyWE9+J6p1a7TRq5C$hW;9roJR6a2e7wYT`MU{r@=4?rrPu*@z~bws{vjY zP>CA&@dM*|h`09<AeWijiHBoP8|=XIqrZkg!^6T-fHD>)WN<V3iL3Z~8uhGKRd%yY zLR+<^?=%6rD)N|P4G3Nl<FrBwYq`w&K}FIBdL)m)Vc{=LBdqNT3}L$ma@a^V{d(a? zkFwPZ^=4;hK~gJ`%NS<~*JP^J&B4&n(9zLRM`yA#4sz^sS(5Yd>EYHzk1g!|hY#7` z&A^7OtgJjca&&YA%3#ID5@qID+PuY1AWqx_a!rbV4IQaoV((ahEIkO@0<aDtR9PA% z=*X!8^y68zuSeE9`Kjx<VF^IGL%h@f&fBIX#H<I+b!QJfy=hQr))8>Tg!c!P3+qo- zcPLmiOWq8_H31wO0IdA3<A;QX-lg&mdQ55#q4t(W?^Dqdu6D>VD@oB4P^=~}Fc3_b zYSnx-fX%vd=ME_AlP2I`0+{eeKVgk<PdhR6M14*&%dmV6DV|8M3?{_u{;;qxa7WhE zmAkINiAVAIn#b=QFugMOr<Nr}X=!MHQmw$o1siu24N61sJOBq(><HW?@u1}e)xG>y zLr{*3;|suq)Vz&P2=-3*HB-wjz_f5X#7QvKxrTDHOshcpWvFh0Y<CM%(dY0IQ|TmY zFstw&JL*dhR&9$MDij;DjxI|PgXlFFI|B4m{`qsY_u}ed3ZZ}2E`B?xv3=!*gu-)# I_-o()1Lp=Wn*aa+ diff --git a/examples/correlation-matrix/build.xml b/examples/correlation-matrix/build.xml index 52ef4856..3cdd75d8 100644 --- a/examples/correlation-matrix/build.xml +++ b/examples/correlation-matrix/build.xml @@ -32,7 +32,7 @@ <property name="ant.build.javac.target" value="1.7" /> <path id="classpath"> - <pathelement path="${basedir}/../../com.syncleus.aparapi/dist/aparapi.jar" /> + <pathelement path="${basedir}/../../com.aparapi/dist/aparapi.jar" /> <pathelement path="${libs.root}/${commons.lang.jar}" /> <pathelement path="${libs.root}/${log4j.jar}" /> <pathelement path="${libs.root}/${lucene.jar}" /> @@ -79,7 +79,7 @@ <!-- Even though fork is slower we need to set the library path and this requires fork --> <junit printsummary="false" fork="true" haltonfailure="false" failureproperty="tests.failed" showoutput="true"> - <sysproperty key="java.library.path" value="${basedir}/../../com.syncleus.aparapi.jni/dist" /> + <sysproperty key="java.library.path" value="${basedir}/../../com.aparapi.jni/dist" /> <!-- USER DEFINED PROPERTIES --> <sysproperty key="numRows" value="1024" /> diff --git a/examples/correlation-matrix/src/java/gov/pnnl/aparapi/matrix/CorrMatrixHost.java b/examples/correlation-matrix/src/java/gov/pnnl/aparapi/matrix/CorrMatrixHost.java index 3569a9f4..e2a5a2ce 100644 --- a/examples/correlation-matrix/src/java/gov/pnnl/aparapi/matrix/CorrMatrixHost.java +++ b/examples/correlation-matrix/src/java/gov/pnnl/aparapi/matrix/CorrMatrixHost.java @@ -10,11 +10,11 @@ package gov.pnnl.aparapi.matrix; import org.apache.log4j.Logger; -import com.syncleus.aparapi.Kernel; -import com.syncleus.aparapi.Kernel.EXECUTION_MODE; -import com.syncleus.aparapi.Range; -import com.syncleus.aparapi.device.Device; -import com.syncleus.aparapi.device.OpenCLDevice; +import com.aparapi.Kernel; +import com.aparapi.Kernel.EXECUTION_MODE; +import com.aparapi.Range; +import com.aparapi.device.Device; +import com.aparapi.device.OpenCLDevice; /** * GPU calculations using OpenBitSet Intersection for OpenBitSets diff --git a/examples/correlation-matrix/src/java/gov/pnnl/aparapi/matrix/CorrMatrixKernel.java b/examples/correlation-matrix/src/java/gov/pnnl/aparapi/matrix/CorrMatrixKernel.java index da1bec4b..ba338a52 100644 --- a/examples/correlation-matrix/src/java/gov/pnnl/aparapi/matrix/CorrMatrixKernel.java +++ b/examples/correlation-matrix/src/java/gov/pnnl/aparapi/matrix/CorrMatrixKernel.java @@ -8,7 +8,7 @@ */ package gov.pnnl.aparapi.matrix; -import com.syncleus.aparapi.Kernel; +import com.aparapi.Kernel; /** * This kernel attempts to re-implement the Lucene OpenBitSet functionality on a GPU diff --git a/examples/correlation-matrix/src/test/gov/pnnl/aparapi/test/CorrMatrixTest.java b/examples/correlation-matrix/src/test/gov/pnnl/aparapi/test/CorrMatrixTest.java index bc4151bf..df57dce1 100644 --- a/examples/correlation-matrix/src/test/gov/pnnl/aparapi/test/CorrMatrixTest.java +++ b/examples/correlation-matrix/src/test/gov/pnnl/aparapi/test/CorrMatrixTest.java @@ -25,7 +25,7 @@ import org.junit.Assert; import org.junit.Before; import org.junit.Test; -import com.syncleus.aparapi.Kernel.EXECUTION_MODE; +import com.aparapi.Kernel.EXECUTION_MODE; /** * This test class performs the following functions: diff --git a/examples/movie/build.xml b/examples/movie/build.xml index 0aa4c9a5..bbfd7ae5 100644 --- a/examples/movie/build.xml +++ b/examples/movie/build.xml @@ -110,7 +110,7 @@ <mkdir dir="classes"/> <javac srcdir="src" destdir="classes" debug="on" includeantruntime="false" > <classpath> - <pathelement path="..\..\com.syncleus.aparapi\dist\aparapi.jar"/> + <pathelement path="..\..\com.aparapi\dist\aparapi.jar"/> <pathelement path="jjmpeg\jjmpeg-0.0\dist\jjmpeg.jar/"/> <pathelement path="..\jviolajones\jviolajones.jar/"/> </classpath> diff --git a/examples/movie/movie.bat b/examples/movie/movie.bat index 050eeb39..9273c3c2 100644 --- a/examples/movie/movie.bat +++ b/examples/movie/movie.bat @@ -9,7 +9,7 @@ echo "win32!" set PATH=%PATH%;ffmpeg\ffmpeg-git-9c2651a-win32-shared\bin set PATH=%PATH%;jjmpeg\jjmpeg-0.0\native\mswin-i386 :win64 -set PATH=%PATH%;..\..\com.syncleus.aparapi.jni\dist -java -classpath jjmpeg\jjmpeg-0.0\dist\jjmpeg.jar;..\..\com.syncleus.aparapi\dist\aparapi.jar;movie.jar; com.syncleus.aparapi.examples.movie.%1 %2 +set PATH=%PATH%;..\..\com.aparapi.jni\dist +java -classpath jjmpeg\jjmpeg-0.0\dist\jjmpeg.jar;..\..\com.aparapi\dist\aparapi.jar;movie.jar; com.aparapi.examples.movie.%1 %2 ENDLOCAL diff --git a/examples/movie/src/com/amd/aparapi/examples/movie/AparapiSolution.java b/examples/movie/src/com/amd/aparapi/examples/movie/AparapiSolution.java index 05e6b7bd..29fdc946 100644 --- a/examples/movie/src/com/amd/aparapi/examples/movie/AparapiSolution.java +++ b/examples/movie/src/com/amd/aparapi/examples/movie/AparapiSolution.java @@ -35,14 +35,14 @@ of EAR). For the most current Country Group listings, or for additional informa under those regulations, please refer to the U.S. Bureau of Industry and Security's website at http://www.bis.doc.gov/. */ -package com.syncleus.aparapi.examples.movie; +package com.aparapi.examples.movie; import java.awt.Graphics2D; import java.awt.image.BufferedImage; import java.awt.image.DataBufferByte; -import com.syncleus.aparapi.Kernel; -import com.syncleus.aparapi.Range; +import com.aparapi.Kernel; +import com.aparapi.Range; public class AparapiSolution{ diff --git a/examples/movie/src/com/amd/aparapi/examples/movie/ConvMatrix3x3Editor.java b/examples/movie/src/com/amd/aparapi/examples/movie/ConvMatrix3x3Editor.java index 252cd745..d3140806 100644 --- a/examples/movie/src/com/amd/aparapi/examples/movie/ConvMatrix3x3Editor.java +++ b/examples/movie/src/com/amd/aparapi/examples/movie/ConvMatrix3x3Editor.java @@ -36,7 +36,7 @@ under those regulations, please refer to the U.S. Bureau of Industry and Securit */ -package com.syncleus.aparapi.examples.movie; +package com.aparapi.examples.movie; import java.awt.BorderLayout; import java.awt.Component; diff --git a/examples/movie/src/com/amd/aparapi/examples/movie/JJMPEGPlayer.java b/examples/movie/src/com/amd/aparapi/examples/movie/JJMPEGPlayer.java index bf3e362c..79f546b6 100644 --- a/examples/movie/src/com/amd/aparapi/examples/movie/JJMPEGPlayer.java +++ b/examples/movie/src/com/amd/aparapi/examples/movie/JJMPEGPlayer.java @@ -35,7 +35,7 @@ of EAR). For the most current Country Group listings, or for additional informa under those regulations, please refer to the U.S. Bureau of Industry and Security's website at http://www.bis.doc.gov/. */ -package com.syncleus.aparapi.examples.movie; +package com.aparapi.examples.movie; import java.awt.BorderLayout; import java.awt.Graphics; diff --git a/examples/movie/src/com/amd/aparapi/examples/movie/PureJavaSolution.java b/examples/movie/src/com/amd/aparapi/examples/movie/PureJavaSolution.java index b38b5371..a7b32024 100644 --- a/examples/movie/src/com/amd/aparapi/examples/movie/PureJavaSolution.java +++ b/examples/movie/src/com/amd/aparapi/examples/movie/PureJavaSolution.java @@ -1,4 +1,4 @@ -package com.syncleus.aparapi.examples.movie; +package com.aparapi.examples.movie; import java.awt.Graphics2D; import java.awt.image.ConvolveOp; diff --git a/examples/movie/src/com/amd/aparapi/examples/movie/ReferenceSolution.java b/examples/movie/src/com/amd/aparapi/examples/movie/ReferenceSolution.java index 09680219..1c39d1d0 100644 --- a/examples/movie/src/com/amd/aparapi/examples/movie/ReferenceSolution.java +++ b/examples/movie/src/com/amd/aparapi/examples/movie/ReferenceSolution.java @@ -35,14 +35,14 @@ of EAR). For the most current Country Group listings, or for additional informa under those regulations, please refer to the U.S. Bureau of Industry and Security's website at http://www.bis.doc.gov/. */ -package com.syncleus.aparapi.examples.movie; +package com.aparapi.examples.movie; import java.awt.Graphics2D; import java.awt.image.BufferedImage; import java.awt.image.DataBufferByte; -import com.syncleus.aparapi.Kernel; -import com.syncleus.aparapi.Range; +import com.aparapi.Kernel; +import com.aparapi.Range; public class ReferenceSolution{ diff --git a/pom.xml b/pom.xml index f4eddb63..8d545376 100644 --- a/pom.xml +++ b/pom.xml @@ -8,9 +8,9 @@ <version>3</version> </parent> - <groupId>com.syncleus.aparapi</groupId> + <groupId>com.aparapi</groupId> <artifactId>aparapi-examples</artifactId> - <version>1.0.1-SNAPSHOT</version> + <version>1.1.0-SNAPSHOT</version> <packaging>jar</packaging> <properties> @@ -33,7 +33,7 @@ <organization> <name>Syncleus</name> - <url>http://www.syncleus.com</url> + <url>http://syncleus.com</url> </organization> <scm> @@ -54,7 +54,7 @@ <email>Jeffrey.Freeman@Syncleus.com</email> <url>http://JeffreyFreeman.me</url> <organization>Syncleus</organization> - <organizationUrl>http://www.syncleus.com</organizationUrl> + <organizationUrl>http://www.aparapi.com</organizationUrl> <roles> <role>Chief Technology Officer</role> <role>Project Owner</role> @@ -79,7 +79,7 @@ <dependencies> <dependency> - <groupId>com.syncleus.aparapi</groupId> + <groupId>com.aparapi</groupId> <artifactId>aparapi</artifactId> <version>1.0.0</version> </dependency> @@ -102,10 +102,10 @@ <groupId>org.codehaus.mojo</groupId> <artifactId>exec-maven-plugin</artifactId> <configuration> - <mainClass>com.syncleus.aparapi.examples.All</mainClass> + <mainClass>com.aparapi.examples.All</mainClass> <arguments> - <argument>com.syncleus.aparapi.executionMode=GPU</argument> - <argument>com.syncleus.aparapi.enableShowGeneratedOpenCL=true</argument> + <argument>com.aparapi.executionMode=GPU</argument> + <argument>com.aparapi.enableShowGeneratedOpenCL=true</argument> </arguments> </configuration> </plugin> diff --git a/src/main/java/com/syncleus/aparapi/examples/All.java b/src/main/java/com/syncleus/aparapi/examples/All.java index 084a40fb..86f05c86 100644 --- a/src/main/java/com/syncleus/aparapi/examples/All.java +++ b/src/main/java/com/syncleus/aparapi/examples/All.java @@ -8,7 +8,7 @@ * For additional credits (generally to people who reported problems) * see CREDITS file. */ -package com.syncleus.aparapi.examples; +package com.aparapi.examples; import java.util.Scanner; @@ -80,106 +80,106 @@ public class All { switch(line) { case "1": - com.syncleus.aparapi.examples.life.Main.main(args); + com.aparapi.examples.life.Main.main(args); break; case "2": - com.syncleus.aparapi.examples.mandel.Main.main(args); + com.aparapi.examples.mandel.Main.main(args); break; case "3": - com.syncleus.aparapi.examples.mandel.Main2D.main(args); + com.aparapi.examples.mandel.Main2D.main(args); break; case "4": - com.syncleus.aparapi.examples.convolution.Convolution.main(args); + com.aparapi.examples.convolution.Convolution.main(args); break; case "5": - com.syncleus.aparapi.examples.convolution.ConvolutionOpenCL.main(args); + com.aparapi.examples.convolution.ConvolutionOpenCL.main(args); break; case "6": - com.syncleus.aparapi.examples.convolution.PureJava.main(args); + com.aparapi.examples.convolution.PureJava.main(args); break; case "7": - com.syncleus.aparapi.examples.blackscholes.Main.main(args); + com.aparapi.examples.blackscholes.Main.main(args); break; case "8": - com.syncleus.aparapi.examples.squares.Main.main(args); + com.aparapi.examples.squares.Main.main(args); break; case "9": - com.syncleus.aparapi.examples.progress.MultiPassKernelSwingWorkerDemo.main(args); + com.aparapi.examples.progress.MultiPassKernelSwingWorkerDemo.main(args); break; case "10": - com.syncleus.aparapi.examples.progress.ProgressAndCancelDemo.main(args); + com.aparapi.examples.progress.ProgressAndCancelDemo.main(args); break; case "11": - com.syncleus.aparapi.examples.info.Main.main(args); + com.aparapi.examples.info.Main.main(args); break; case "12": - com.syncleus.aparapi.examples.median.MedianDemo.main(args); + com.aparapi.examples.median.MedianDemo.main(args); break; case "13": - com.syncleus.aparapi.examples.mdarray.MDArray.main(args); + com.aparapi.examples.mdarray.MDArray.main(args); break; case "14": - com.syncleus.aparapi.examples.add.Main.main(args); + com.aparapi.examples.add.Main.main(args); break; case "15": - com.syncleus.aparapi.examples.extension.FFTExample.main(args); + com.aparapi.examples.extension.FFTExample.main(args); break; case "16": - com.syncleus.aparapi.examples.extension.Histogram.main(args); + com.aparapi.examples.extension.Histogram.main(args); break; case "17": - com.syncleus.aparapi.examples.extension.HistogramIdeal.main(args); + com.aparapi.examples.extension.HistogramIdeal.main(args); break; case "18": - com.syncleus.aparapi.examples.extension.MandelExample.main(args); + com.aparapi.examples.extension.MandelExample.main(args); break; case "19": - com.syncleus.aparapi.examples.extension.SquareExample.main(args); + com.aparapi.examples.extension.SquareExample.main(args); break; case "20": - com.syncleus.aparapi.examples.configuration.AutoCleanUpArraysDemo.main(args); + com.aparapi.examples.configuration.AutoCleanUpArraysDemo.main(args); break; case "21": - com.syncleus.aparapi.examples.configuration.CleanUpArraysDemo.main(args); + com.aparapi.examples.configuration.CleanUpArraysDemo.main(args); break; case "22": - com.syncleus.aparapi.examples.configuration.ConfigurationDemo.main(args); + com.aparapi.examples.configuration.ConfigurationDemo.main(args); break; case "23": - com.syncleus.aparapi.examples.configuration.CustomConfigurationDemo.main(args); + com.aparapi.examples.configuration.CustomConfigurationDemo.main(args); break; case "24": - com.syncleus.aparapi.examples.configuration.LegacyConfigurationDemo.main(args); + com.aparapi.examples.configuration.LegacyConfigurationDemo.main(args); break; case "25": - com.syncleus.aparapi.examples.configuration.ProfilingDemo.main(args); + com.aparapi.examples.configuration.ProfilingDemo.main(args); break; case "26": - com.syncleus.aparapi.examples.configuration.ProfilingDemoNoBinaryCaching.main(args); + com.aparapi.examples.configuration.ProfilingDemoNoBinaryCaching.main(args); break; case "27": - com.syncleus.aparapi.examples.effects.Main.main(args); + com.aparapi.examples.effects.Main.main(args); break; case "28": - com.syncleus.aparapi.examples.javaonedemo.Life.main(args); + com.aparapi.examples.javaonedemo.Life.main(args); break; case "29": - com.syncleus.aparapi.examples.javaonedemo.Mandel.main(args); + com.aparapi.examples.javaonedemo.Mandel.main(args); break; case "30": - com.syncleus.aparapi.examples.javaonedemo.NBody.main(args); + com.aparapi.examples.javaonedemo.NBody.main(args); break; case "31": - com.syncleus.aparapi.examples.nbody.Main.main(args); + com.aparapi.examples.nbody.Main.main(args); break; case "32": - com.syncleus.aparapi.examples.nbody.Local.main(args); + com.aparapi.examples.nbody.Local.main(args); break; case "33": - com.syncleus.aparapi.examples.nbody.Seq.main(args); + com.aparapi.examples.nbody.Seq.main(args); break; case "34": - com.syncleus.aparapi.examples.oopnbody.Main.main(args); + com.aparapi.examples.oopnbody.Main.main(args); break; default: System.out.println("Invalid selection."); diff --git a/src/main/java/com/syncleus/aparapi/examples/add/Main.java b/src/main/java/com/syncleus/aparapi/examples/add/Main.java index 336f8acb..97a4c7e0 100644 --- a/src/main/java/com/syncleus/aparapi/examples/add/Main.java +++ b/src/main/java/com/syncleus/aparapi/examples/add/Main.java @@ -46,10 +46,10 @@ under those regulations, please refer to the U.S. Bureau of Industry and Securit */ -package com.syncleus.aparapi.examples.add; +package com.aparapi.examples.add; -import com.syncleus.aparapi.Kernel; -import com.syncleus.aparapi.Range; +import com.aparapi.Kernel; +import com.aparapi.Range; public class Main{ diff --git a/src/main/java/com/syncleus/aparapi/examples/blackscholes/Main.java b/src/main/java/com/syncleus/aparapi/examples/blackscholes/Main.java index 16c51722..c462d201 100644 --- a/src/main/java/com/syncleus/aparapi/examples/blackscholes/Main.java +++ b/src/main/java/com/syncleus/aparapi/examples/blackscholes/Main.java @@ -45,10 +45,10 @@ of EAR). For the most current Country Group listings, or for additional informa under those regulations, please refer to the U.S. Bureau of Industry and Security's website at http://www.bis.doc.gov/. */ -package com.syncleus.aparapi.examples.blackscholes; +package com.aparapi.examples.blackscholes; -import com.syncleus.aparapi.Kernel; -import com.syncleus.aparapi.Range; +import com.aparapi.Kernel; +import com.aparapi.Range; public class Main{ diff --git a/src/main/java/com/syncleus/aparapi/examples/configuration/AutoCleanUpArraysDemo.java b/src/main/java/com/syncleus/aparapi/examples/configuration/AutoCleanUpArraysDemo.java index 00178408..79ee611c 100644 --- a/src/main/java/com/syncleus/aparapi/examples/configuration/AutoCleanUpArraysDemo.java +++ b/src/main/java/com/syncleus/aparapi/examples/configuration/AutoCleanUpArraysDemo.java @@ -8,14 +8,14 @@ * For additional credits (generally to people who reported problems) * see CREDITS file. */ -package com.syncleus.aparapi.examples.configuration; +package com.aparapi.examples.configuration; -import com.syncleus.aparapi.examples.mandel.*; +import com.aparapi.examples.mandel.*; public class AutoCleanUpArraysDemo { public static void main(String[] ignored) { - System.setProperty("com.syncleus.aparapi.dumpProfileOnExecution", "true"); + System.setProperty("com.aparapi.dumpProfileOnExecution", "true"); int size = 1024; int[] rgbs = new int[size * size]; diff --git a/src/main/java/com/syncleus/aparapi/examples/configuration/CleanUpArraysDemo.java b/src/main/java/com/syncleus/aparapi/examples/configuration/CleanUpArraysDemo.java index 8e39e4dc..746df162 100644 --- a/src/main/java/com/syncleus/aparapi/examples/configuration/CleanUpArraysDemo.java +++ b/src/main/java/com/syncleus/aparapi/examples/configuration/CleanUpArraysDemo.java @@ -8,17 +8,17 @@ * For additional credits (generally to people who reported problems) * see CREDITS file. */ -package com.syncleus.aparapi.examples.configuration; +package com.aparapi.examples.configuration; -import com.syncleus.aparapi.examples.mandel.*; +import com.aparapi.examples.mandel.*; public class CleanUpArraysDemo { public static void main(String[] ignored) { - System.setProperty("com.syncleus.aparapi.enableVerboseJNI", "true"); - System.setProperty("com.syncleus.aparapi.enableVerboseJNIOpenCLResourceTracking", "true"); - System.setProperty("com.syncleus.aparapi.enableExecutionModeReporting", "true"); - System.setProperty("com.syncleus.aparapi.dumpProfileOnExecution", "true"); + System.setProperty("com.aparapi.enableVerboseJNI", "true"); + System.setProperty("com.aparapi.enableVerboseJNIOpenCLResourceTracking", "true"); + System.setProperty("com.aparapi.enableExecutionModeReporting", "true"); + System.setProperty("com.aparapi.dumpProfileOnExecution", "true"); int size = 1024; int[] rgbs = new int[size * size]; diff --git a/src/main/java/com/syncleus/aparapi/examples/configuration/ConfigurationDemo.java b/src/main/java/com/syncleus/aparapi/examples/configuration/ConfigurationDemo.java index 0aef950c..6ad8894c 100644 --- a/src/main/java/com/syncleus/aparapi/examples/configuration/ConfigurationDemo.java +++ b/src/main/java/com/syncleus/aparapi/examples/configuration/ConfigurationDemo.java @@ -8,15 +8,15 @@ * For additional credits (generally to people who reported problems) * see CREDITS file. */ -package com.syncleus.aparapi.examples.configuration; +package com.aparapi.examples.configuration; -import com.syncleus.aparapi.*; -import com.syncleus.aparapi.internal.kernel.*; +import com.aparapi.*; +import com.aparapi.internal.kernel.*; import java.util.*; /** - * Tests device selection via {@link com.syncleus.aparapi.internal.kernel.KernelManager}. + * Tests device selection via {@link com.aparapi.internal.kernel.KernelManager}. */ public class ConfigurationDemo { public static void main(String[] ignored) { diff --git a/src/main/java/com/syncleus/aparapi/examples/configuration/CustomConfigurationDemo.java b/src/main/java/com/syncleus/aparapi/examples/configuration/CustomConfigurationDemo.java index ad22f1fa..86f30f71 100644 --- a/src/main/java/com/syncleus/aparapi/examples/configuration/CustomConfigurationDemo.java +++ b/src/main/java/com/syncleus/aparapi/examples/configuration/CustomConfigurationDemo.java @@ -8,10 +8,10 @@ * For additional credits (generally to people who reported problems) * see CREDITS file. */ -package com.syncleus.aparapi.examples.configuration; +package com.aparapi.examples.configuration; -import com.syncleus.aparapi.device.*; -import com.syncleus.aparapi.internal.kernel.*; +import com.aparapi.device.*; +import com.aparapi.internal.kernel.*; import java.util.*; @@ -21,7 +21,7 @@ import java.util.*; public class CustomConfigurationDemo { public static void main(String[] ignored) { - System.setProperty("com.syncleus.aparapi.dumpProfilesOnExit", "true"); + System.setProperty("com.aparapi.dumpProfilesOnExit", "true"); KernelManager manager = new KernelManager() { @Override protected List<Device.TYPE> getPreferredDeviceTypes() { diff --git a/src/main/java/com/syncleus/aparapi/examples/configuration/KernelOkayInOpenCL.java b/src/main/java/com/syncleus/aparapi/examples/configuration/KernelOkayInOpenCL.java index c4f8b2b2..1e6dc5f8 100644 --- a/src/main/java/com/syncleus/aparapi/examples/configuration/KernelOkayInOpenCL.java +++ b/src/main/java/com/syncleus/aparapi/examples/configuration/KernelOkayInOpenCL.java @@ -8,12 +8,12 @@ * For additional credits (generally to people who reported problems) * see CREDITS file. */ -package com.syncleus.aparapi.examples.configuration; +package com.aparapi.examples.configuration; /** * Created by Barney on 24/08/2015. */ -public class KernelOkayInOpenCL extends com.syncleus.aparapi.Kernel { +public class KernelOkayInOpenCL extends com.aparapi.Kernel { char[] inChars = "KernelOkayInOpenCL".toCharArray(); char[] outChars = new char[inChars.length]; diff --git a/src/main/java/com/syncleus/aparapi/examples/configuration/KernelWithAlternateFallbackAlgorithm.java b/src/main/java/com/syncleus/aparapi/examples/configuration/KernelWithAlternateFallbackAlgorithm.java index e91947ff..e7d4cb59 100644 --- a/src/main/java/com/syncleus/aparapi/examples/configuration/KernelWithAlternateFallbackAlgorithm.java +++ b/src/main/java/com/syncleus/aparapi/examples/configuration/KernelWithAlternateFallbackAlgorithm.java @@ -8,9 +8,9 @@ * For additional credits (generally to people who reported problems) * see CREDITS file. */ -package com.syncleus.aparapi.examples.configuration; +package com.aparapi.examples.configuration; -import com.syncleus.aparapi.*; +import com.aparapi.*; /** * Kernel which will always fail to run on an OpenCLDevice but has an alternative fallback algorithm. diff --git a/src/main/java/com/syncleus/aparapi/examples/configuration/KernelWithoutAlternateFallbackAlgorithm.java b/src/main/java/com/syncleus/aparapi/examples/configuration/KernelWithoutAlternateFallbackAlgorithm.java index 13df43d5..8253af72 100644 --- a/src/main/java/com/syncleus/aparapi/examples/configuration/KernelWithoutAlternateFallbackAlgorithm.java +++ b/src/main/java/com/syncleus/aparapi/examples/configuration/KernelWithoutAlternateFallbackAlgorithm.java @@ -8,9 +8,9 @@ * For additional credits (generally to people who reported problems) * see CREDITS file. */ -package com.syncleus.aparapi.examples.configuration; +package com.aparapi.examples.configuration; -import com.syncleus.aparapi.*; +import com.aparapi.*; /** * Kernel which will always fail to run on an OpenCLDevice but has an alternative fallback algorithm. diff --git a/src/main/java/com/syncleus/aparapi/examples/configuration/LegacyConfigurationDemo.java b/src/main/java/com/syncleus/aparapi/examples/configuration/LegacyConfigurationDemo.java index e68967dd..02f8bfa7 100644 --- a/src/main/java/com/syncleus/aparapi/examples/configuration/LegacyConfigurationDemo.java +++ b/src/main/java/com/syncleus/aparapi/examples/configuration/LegacyConfigurationDemo.java @@ -8,21 +8,21 @@ * For additional credits (generally to people who reported problems) * see CREDITS file. */ -package com.syncleus.aparapi.examples.configuration; +package com.aparapi.examples.configuration; -import com.syncleus.aparapi.*; -import com.syncleus.aparapi.internal.kernel.*; +import com.aparapi.*; +import com.aparapi.internal.kernel.*; /** - * Tests device selection when circumventing the {@link com.syncleus.aparapi.internal.kernel.KernelManager} by using the legacy mechanism + * Tests device selection when circumventing the {@link com.aparapi.internal.kernel.KernelManager} by using the legacy mechanism * (setExecutionMode, etc.). */ public class LegacyConfigurationDemo { @SuppressWarnings("deprecation") public static void main(String[] ignored) { - System.setProperty("com.syncleus.aparapi.executionMode", "GPU,CPU,SEQ"); - System.setProperty("com.syncleus.aparapi.dumpProfilesOnExit", "true"); + System.setProperty("com.aparapi.executionMode", "GPU,CPU,SEQ"); + System.setProperty("com.aparapi.dumpProfilesOnExit", "true"); KernelWithAlternateFallbackAlgorithm kernel = new KernelWithAlternateFallbackAlgorithm(); kernel.setExecutionMode(Kernel.EXECUTION_MODE.GPU); diff --git a/src/main/java/com/syncleus/aparapi/examples/configuration/ProfilingDemo.java b/src/main/java/com/syncleus/aparapi/examples/configuration/ProfilingDemo.java index dcec233a..202a83f3 100644 --- a/src/main/java/com/syncleus/aparapi/examples/configuration/ProfilingDemo.java +++ b/src/main/java/com/syncleus/aparapi/examples/configuration/ProfilingDemo.java @@ -8,12 +8,12 @@ * For additional credits (generally to people who reported problems) * see CREDITS file. */ -package com.syncleus.aparapi.examples.configuration; +package com.aparapi.examples.configuration; -import com.syncleus.aparapi.*; -import com.syncleus.aparapi.internal.kernel.*; -import com.syncleus.aparapi.examples.blackscholes.Main.*; -import com.syncleus.aparapi.examples.mandel.*; +import com.aparapi.*; +import com.aparapi.internal.kernel.*; +import com.aparapi.examples.blackscholes.Main.*; +import com.aparapi.examples.mandel.*; /** * Demonstrate new enhanced profiling capability, profiling the kernel from the blackscholes sample. diff --git a/src/main/java/com/syncleus/aparapi/examples/configuration/ProfilingDemoNoBinaryCaching.java b/src/main/java/com/syncleus/aparapi/examples/configuration/ProfilingDemoNoBinaryCaching.java index 7ff4c23e..ca0c36a8 100644 --- a/src/main/java/com/syncleus/aparapi/examples/configuration/ProfilingDemoNoBinaryCaching.java +++ b/src/main/java/com/syncleus/aparapi/examples/configuration/ProfilingDemoNoBinaryCaching.java @@ -8,9 +8,9 @@ * For additional credits (generally to people who reported problems) * see CREDITS file. */ -package com.syncleus.aparapi.examples.configuration; +package com.aparapi.examples.configuration; -import com.syncleus.aparapi.internal.kernel.*; +import com.aparapi.internal.kernel.*; /** * Created by Barney on 13/09/2015. diff --git a/src/main/java/com/syncleus/aparapi/examples/convolution/ConvMatrix3x3Editor.java b/src/main/java/com/syncleus/aparapi/examples/convolution/ConvMatrix3x3Editor.java index 39a22504..9c0abc0c 100644 --- a/src/main/java/com/syncleus/aparapi/examples/convolution/ConvMatrix3x3Editor.java +++ b/src/main/java/com/syncleus/aparapi/examples/convolution/ConvMatrix3x3Editor.java @@ -46,7 +46,7 @@ under those regulations, please refer to the U.S. Bureau of Industry and Securit */ -package com.syncleus.aparapi.examples.convolution; +package com.aparapi.examples.convolution; import java.awt.BorderLayout; import java.awt.Component; diff --git a/src/main/java/com/syncleus/aparapi/examples/convolution/Convolution.java b/src/main/java/com/syncleus/aparapi/examples/convolution/Convolution.java index 4e8a7f52..c7ed5495 100644 --- a/src/main/java/com/syncleus/aparapi/examples/convolution/Convolution.java +++ b/src/main/java/com/syncleus/aparapi/examples/convolution/Convolution.java @@ -46,9 +46,9 @@ under those regulations, please refer to the U.S. Bureau of Industry and Securit */ -package com.syncleus.aparapi.examples.convolution; +package com.aparapi.examples.convolution; -import com.syncleus.aparapi.*; +import com.aparapi.*; import java.io.*; diff --git a/src/main/java/com/syncleus/aparapi/examples/convolution/ConvolutionOpenCL.java b/src/main/java/com/syncleus/aparapi/examples/convolution/ConvolutionOpenCL.java index e611395d..1896c199 100644 --- a/src/main/java/com/syncleus/aparapi/examples/convolution/ConvolutionOpenCL.java +++ b/src/main/java/com/syncleus/aparapi/examples/convolution/ConvolutionOpenCL.java @@ -46,19 +46,19 @@ under those regulations, please refer to the U.S. Bureau of Industry and Securit */ -package com.syncleus.aparapi.examples.convolution; +package com.aparapi.examples.convolution; -import com.syncleus.aparapi.*; -import com.syncleus.aparapi.device.*; -import com.syncleus.aparapi.internal.kernel.*; -import com.syncleus.aparapi.opencl.*; -import com.syncleus.aparapi.opencl.OpenCL.*; +import com.aparapi.*; +import com.aparapi.device.*; +import com.aparapi.internal.kernel.*; +import com.aparapi.opencl.*; +import com.aparapi.opencl.OpenCL.*; import java.io.*; public class ConvolutionOpenCL{ - @Resource("com/syncleus/aparapi/examples/convolution/convolution.cl") interface Convolution extends OpenCL<Convolution>{ + @Resource("com/aparapi/aparapi/examples/convolution/convolution.cl") interface Convolution extends OpenCL<Convolution>{ Convolution applyConvolution(// Range range, // @GlobalReadOnly("_convMatrix3x3") float[] _convMatrix3x3,//// only read from kernel diff --git a/src/main/java/com/syncleus/aparapi/examples/convolution/ConvolutionViewer.java b/src/main/java/com/syncleus/aparapi/examples/convolution/ConvolutionViewer.java index c5773344..53cc34c1 100644 --- a/src/main/java/com/syncleus/aparapi/examples/convolution/ConvolutionViewer.java +++ b/src/main/java/com/syncleus/aparapi/examples/convolution/ConvolutionViewer.java @@ -46,7 +46,7 @@ under those regulations, please refer to the U.S. Bureau of Industry and Securit */ -package com.syncleus.aparapi.examples.convolution; +package com.aparapi.examples.convolution; import java.awt.BorderLayout; import java.awt.Color; diff --git a/src/main/java/com/syncleus/aparapi/examples/convolution/PureJava.java b/src/main/java/com/syncleus/aparapi/examples/convolution/PureJava.java index 4ac820fb..e76f313f 100644 --- a/src/main/java/com/syncleus/aparapi/examples/convolution/PureJava.java +++ b/src/main/java/com/syncleus/aparapi/examples/convolution/PureJava.java @@ -46,11 +46,11 @@ under those regulations, please refer to the U.S. Bureau of Industry and Securit */ -package com.syncleus.aparapi.examples.convolution; +package com.aparapi.examples.convolution; import java.io.File; -import com.syncleus.aparapi.Kernel; +import com.aparapi.Kernel; public class PureJava{ diff --git a/src/main/java/com/syncleus/aparapi/examples/effects/Main.java b/src/main/java/com/syncleus/aparapi/examples/effects/Main.java index 3286f51b..b64abba7 100644 --- a/src/main/java/com/syncleus/aparapi/examples/effects/Main.java +++ b/src/main/java/com/syncleus/aparapi/examples/effects/Main.java @@ -46,7 +46,7 @@ under those regulations, please refer to the U.S. Bureau of Industry and Securit */ -package com.syncleus.aparapi.examples.effects; +package com.aparapi.examples.effects; import java.awt.Color; import java.awt.Dimension; @@ -62,8 +62,8 @@ import java.awt.image.DataBufferInt; import javax.swing.JComponent; import javax.swing.JFrame; -import com.syncleus.aparapi.Kernel; -import com.syncleus.aparapi.Range; +import com.aparapi.Kernel; +import com.aparapi.Range; /** * An example Aparapi application which tracks the mouse and updates the color pallete of the window based on the distance from the mouse pointer. diff --git a/src/main/java/com/syncleus/aparapi/examples/extension/FFTExample.java b/src/main/java/com/syncleus/aparapi/examples/extension/FFTExample.java index de3975e4..9500dc35 100644 --- a/src/main/java/com/syncleus/aparapi/examples/extension/FFTExample.java +++ b/src/main/java/com/syncleus/aparapi/examples/extension/FFTExample.java @@ -8,19 +8,19 @@ * For additional credits (generally to people who reported problems) * see CREDITS file. */ -package com.syncleus.aparapi.examples.extension; +package com.aparapi.examples.extension; -import com.syncleus.aparapi.*; -import com.syncleus.aparapi.device.*; -import com.syncleus.aparapi.internal.kernel.*; -import com.syncleus.aparapi.opencl.*; -import com.syncleus.aparapi.opencl.OpenCL.*; +import com.aparapi.*; +import com.aparapi.device.*; +import com.aparapi.internal.kernel.*; +import com.aparapi.opencl.*; +import com.aparapi.opencl.OpenCL.*; import java.util.*; public class FFTExample{ - @Resource("com/syncleus/aparapi/examples/extension/fft.cl") interface FFT extends OpenCL<FFT>{ + @Resource("com/aparapi/aparapi/examples/extension/fft.cl") interface FFT extends OpenCL<FFT>{ public FFT forward(// Range _range,// diff --git a/src/main/java/com/syncleus/aparapi/examples/extension/Histogram.java b/src/main/java/com/syncleus/aparapi/examples/extension/Histogram.java index 3a57f14e..b862072c 100644 --- a/src/main/java/com/syncleus/aparapi/examples/extension/Histogram.java +++ b/src/main/java/com/syncleus/aparapi/examples/extension/Histogram.java @@ -8,18 +8,18 @@ * For additional credits (generally to people who reported problems) * see CREDITS file. */ -package com.syncleus.aparapi.examples.extension; +package com.aparapi.examples.extension; -import com.syncleus.aparapi.Kernel; -import com.syncleus.aparapi.Range; -import com.syncleus.aparapi.device.Device; -import com.syncleus.aparapi.device.OpenCLDevice; -import com.syncleus.aparapi.opencl.OpenCL; -import com.syncleus.aparapi.opencl.OpenCL.Resource; +import com.aparapi.Kernel; +import com.aparapi.Range; +import com.aparapi.device.Device; +import com.aparapi.device.OpenCLDevice; +import com.aparapi.opencl.OpenCL; +import com.aparapi.opencl.OpenCL.Resource; public class Histogram{ - @Resource("com/syncleus/aparapi/examples/extension/HistogramKernel.cl") interface HistogramKernel extends OpenCL<HistogramKernel>{ + @Resource("com/aparapi/aparapi/examples/extension/HistogramKernel.cl") interface HistogramKernel extends OpenCL<HistogramKernel>{ public HistogramKernel histogram256(// Range _range,// diff --git a/src/main/java/com/syncleus/aparapi/examples/extension/HistogramIdeal.java b/src/main/java/com/syncleus/aparapi/examples/extension/HistogramIdeal.java index 888c78f2..986f45f7 100644 --- a/src/main/java/com/syncleus/aparapi/examples/extension/HistogramIdeal.java +++ b/src/main/java/com/syncleus/aparapi/examples/extension/HistogramIdeal.java @@ -8,17 +8,17 @@ * For additional credits (generally to people who reported problems) * see CREDITS file. */ -package com.syncleus.aparapi.examples.extension; +package com.aparapi.examples.extension; -import com.syncleus.aparapi.Range; -import com.syncleus.aparapi.device.Device; -import com.syncleus.aparapi.device.OpenCLDevice; -import com.syncleus.aparapi.internal.kernel.*; -import com.syncleus.aparapi.opencl.OpenCL; +import com.aparapi.Range; +import com.aparapi.device.Device; +import com.aparapi.device.OpenCLDevice; +import com.aparapi.internal.kernel.*; +import com.aparapi.opencl.OpenCL; public class HistogramIdeal{ - // @Resource("com/amd/aparapi/sample/extension/HistogramKernel.cl") + // @Resource("com/aparapi/sample/extension/HistogramKernel.cl") interface HistogramKernel extends OpenCL<HistogramKernel>{ public HistogramKernel histogram256(// @@ -63,7 +63,7 @@ public class HistogramIdeal{ final OpenCLDevice openclDevice = (OpenCLDevice) device; final HistogramKernel histogram = openclDevice.bind(HistogramKernel.class, Histogram.class.getClassLoader() - .getResourceAsStream("com/amd/aparapi/sample/extension/HistogramKernel.cl")); + .getResourceAsStream("com/aparapi/sample/extension/HistogramKernel.cl")); long start = System.nanoTime(); histogram.begin()// .put(data)// diff --git a/src/main/java/com/syncleus/aparapi/examples/extension/JavaMandelBrot.java b/src/main/java/com/syncleus/aparapi/examples/extension/JavaMandelBrot.java index e595e2ec..bb299d17 100644 --- a/src/main/java/com/syncleus/aparapi/examples/extension/JavaMandelBrot.java +++ b/src/main/java/com/syncleus/aparapi/examples/extension/JavaMandelBrot.java @@ -8,12 +8,12 @@ * For additional credits (generally to people who reported problems) * see CREDITS file. */ -package com.syncleus.aparapi.examples.extension; +package com.aparapi.examples.extension; -import com.syncleus.aparapi.*; -import com.syncleus.aparapi.device.*; -import com.syncleus.aparapi.internal.kernel.*; -import com.syncleus.aparapi.opencl.*; +import com.aparapi.*; +import com.aparapi.device.*; +import com.aparapi.internal.kernel.*; +import com.aparapi.opencl.*; public class JavaMandelBrot extends OpenCLAdapter<MandelBrot> implements MandelBrot{ final int MAX_ITERATIONS = 64; diff --git a/src/main/java/com/syncleus/aparapi/examples/extension/JavaMandelBrotMultiThread.java b/src/main/java/com/syncleus/aparapi/examples/extension/JavaMandelBrotMultiThread.java index 45a4fbb3..5dab1b4f 100644 --- a/src/main/java/com/syncleus/aparapi/examples/extension/JavaMandelBrotMultiThread.java +++ b/src/main/java/com/syncleus/aparapi/examples/extension/JavaMandelBrotMultiThread.java @@ -8,15 +8,15 @@ * For additional credits (generally to people who reported problems) * see CREDITS file. */ -package com.syncleus.aparapi.examples.extension; +package com.aparapi.examples.extension; import java.util.concurrent.BrokenBarrierException; import java.util.concurrent.CyclicBarrier; -import com.syncleus.aparapi.*; -import com.syncleus.aparapi.device.*; -import com.syncleus.aparapi.internal.kernel.*; -import com.syncleus.aparapi.opencl.*; -import com.syncleus.aparapi.Range; +import com.aparapi.*; +import com.aparapi.device.*; +import com.aparapi.internal.kernel.*; +import com.aparapi.opencl.*; +import com.aparapi.Range; public class JavaMandelBrotMultiThread extends OpenCLAdapter<MandelBrot> implements MandelBrot{ final int MAX_ITERATIONS = 64; diff --git a/src/main/java/com/syncleus/aparapi/examples/extension/Mandel.java b/src/main/java/com/syncleus/aparapi/examples/extension/Mandel.java index 59c29dab..7a106d4c 100644 --- a/src/main/java/com/syncleus/aparapi/examples/extension/Mandel.java +++ b/src/main/java/com/syncleus/aparapi/examples/extension/Mandel.java @@ -8,20 +8,20 @@ * For additional credits (generally to people who reported problems) * see CREDITS file. */ -package com.syncleus.aparapi.examples.extension; +package com.aparapi.examples.extension; -import com.syncleus.aparapi.*; -import com.syncleus.aparapi.device.*; -import com.syncleus.aparapi.internal.kernel.*; -import com.syncleus.aparapi.opencl.*; -import com.syncleus.aparapi.opencl.OpenCL.*; +import com.aparapi.*; +import com.aparapi.device.*; +import com.aparapi.internal.kernel.*; +import com.aparapi.opencl.*; +import com.aparapi.opencl.OpenCL.*; import javax.swing.*; import java.awt.*; import java.awt.event.*; import java.awt.image.*; import java.util.concurrent.*; -import com.syncleus.aparapi.opencl.OpenCL.Resource; +import com.aparapi.opencl.OpenCL.Resource; /** * An example Aparapi application which displays a view of the Mandelbrot set and lets the user zoom in to a particular point. @@ -34,9 +34,9 @@ import com.syncleus.aparapi.opencl.OpenCL.Resource; * */ -@Resource("com/syncleus/aparapi/examples/extension/mandel2.cl") -public interface Mandel extends OpenCL<com.syncleus.aparapi.examples.extension.Mandel>{ - com.syncleus.aparapi.examples.extension.Mandel createMandleBrot(// +@Resource("com/aparapi/aparapi/examples/extension/mandel2.cl") +public interface Mandel extends OpenCL<com.aparapi.examples.extension.Mandel>{ + com.aparapi.examples.extension.Mandel createMandleBrot(// Range range,// @Arg("scale") float scale, // @Arg("offsetx") float offsetx, // diff --git a/src/main/java/com/syncleus/aparapi/examples/extension/MandelBrot.java b/src/main/java/com/syncleus/aparapi/examples/extension/MandelBrot.java index 691727e5..da2eacf4 100644 --- a/src/main/java/com/syncleus/aparapi/examples/extension/MandelBrot.java +++ b/src/main/java/com/syncleus/aparapi/examples/extension/MandelBrot.java @@ -8,13 +8,13 @@ * For additional credits (generally to people who reported problems) * see CREDITS file. */ -package com.syncleus.aparapi.examples.extension; +package com.aparapi.examples.extension; -import com.syncleus.aparapi.*; -import com.syncleus.aparapi.device.*; -import com.syncleus.aparapi.internal.kernel.*; -import com.syncleus.aparapi.opencl.*; -import com.syncleus.aparapi.opencl.OpenCL.Resource; +import com.aparapi.*; +import com.aparapi.device.*; +import com.aparapi.internal.kernel.*; +import com.aparapi.opencl.*; +import com.aparapi.opencl.OpenCL.Resource; /** * An example Aparapi application which displays a view of the Mandelbrot set and lets the user zoom in to a particular point. @@ -27,7 +27,7 @@ import com.syncleus.aparapi.opencl.OpenCL.Resource; * */ -@Resource("com/syncleus/aparapi/examples/extension/mandel2.cl") +@Resource("com/aparapi/aparapi/examples/extension/mandel2.cl") public interface MandelBrot extends OpenCL<MandelBrot>{ MandelBrot createMandleBrot(// Range range,// diff --git a/src/main/java/com/syncleus/aparapi/examples/extension/MandelExample.java b/src/main/java/com/syncleus/aparapi/examples/extension/MandelExample.java index 27394d96..bcf244ff 100644 --- a/src/main/java/com/syncleus/aparapi/examples/extension/MandelExample.java +++ b/src/main/java/com/syncleus/aparapi/examples/extension/MandelExample.java @@ -46,13 +46,13 @@ under those regulations, please refer to the U.S. Bureau of Industry and Securit */ -package com.syncleus.aparapi.examples.extension; +package com.aparapi.examples.extension; -import com.syncleus.aparapi.*; -import com.syncleus.aparapi.device.*; -import com.syncleus.aparapi.internal.kernel.*; -import com.syncleus.aparapi.opencl.*; -import com.syncleus.aparapi.opencl.OpenCL.*; +import com.aparapi.*; +import com.aparapi.device.*; +import com.aparapi.internal.kernel.*; +import com.aparapi.opencl.*; +import com.aparapi.opencl.OpenCL.*; import javax.swing.*; import java.awt.*; diff --git a/src/main/java/com/syncleus/aparapi/examples/extension/MandelSimple.java b/src/main/java/com/syncleus/aparapi/examples/extension/MandelSimple.java index b976e2d6..ec895fa2 100644 --- a/src/main/java/com/syncleus/aparapi/examples/extension/MandelSimple.java +++ b/src/main/java/com/syncleus/aparapi/examples/extension/MandelSimple.java @@ -46,14 +46,14 @@ under those regulations, please refer to the U.S. Bureau of Industry and Securit */ -package com.syncleus.aparapi.examples.extension; - -import com.syncleus.aparapi.device.*; -import com.syncleus.aparapi.examples.extension.Mandel; -import com.syncleus.aparapi.internal.kernel.*; -import com.syncleus.aparapi.opencl.*; -import com.syncleus.aparapi.opencl.OpenCL.*; -import com.syncleus.aparapi.Range; +package com.aparapi.examples.extension; + +import com.aparapi.device.*; +import com.aparapi.examples.extension.Mandel; +import com.aparapi.internal.kernel.*; +import com.aparapi.opencl.*; +import com.aparapi.opencl.OpenCL.*; +import com.aparapi.Range; import javax.swing.*; import java.awt.*; diff --git a/src/main/java/com/syncleus/aparapi/examples/extension/Pow4Example.java b/src/main/java/com/syncleus/aparapi/examples/extension/Pow4Example.java index 67bad08a..6e065d79 100644 --- a/src/main/java/com/syncleus/aparapi/examples/extension/Pow4Example.java +++ b/src/main/java/com/syncleus/aparapi/examples/extension/Pow4Example.java @@ -8,18 +8,18 @@ * For additional credits (generally to people who reported problems) * see CREDITS file. */ -package com.syncleus.aparapi.examples.extension; +package com.aparapi.examples.extension; -import com.syncleus.aparapi.Range; -import com.syncleus.aparapi.device.Device; -import com.syncleus.aparapi.device.OpenCLDevice; -import com.syncleus.aparapi.internal.kernel.*; -import com.syncleus.aparapi.opencl.OpenCL; -import com.syncleus.aparapi.opencl.OpenCL.Resource; +import com.aparapi.Range; +import com.aparapi.device.Device; +import com.aparapi.device.OpenCLDevice; +import com.aparapi.internal.kernel.*; +import com.aparapi.opencl.OpenCL; +import com.aparapi.opencl.OpenCL.Resource; public class Pow4Example{ - @Resource("com/syncleus/aparapi/examples/extension/squarer.cl") + @Resource("com/aparapi/aparapi/examples/extension/squarer.cl") interface Squarer extends OpenCL<Squarer>{ public Squarer square(// diff --git a/src/main/java/com/syncleus/aparapi/examples/extension/SquareExample.java b/src/main/java/com/syncleus/aparapi/examples/extension/SquareExample.java index cb9efe41..7361d949 100644 --- a/src/main/java/com/syncleus/aparapi/examples/extension/SquareExample.java +++ b/src/main/java/com/syncleus/aparapi/examples/extension/SquareExample.java @@ -8,16 +8,16 @@ * For additional credits (generally to people who reported problems) * see CREDITS file. */ -package com.syncleus.aparapi.examples.extension; +package com.aparapi.examples.extension; -import com.syncleus.aparapi.ProfileInfo; -import com.syncleus.aparapi.Range; -import com.syncleus.aparapi.device.Device; -import com.syncleus.aparapi.device.OpenCLDevice; -import com.syncleus.aparapi.internal.kernel.*; -import com.syncleus.aparapi.opencl.OpenCL; -import com.syncleus.aparapi.opencl.OpenCL.Resource; -import com.syncleus.aparapi.opencl.OpenCL.Source; +import com.aparapi.ProfileInfo; +import com.aparapi.Range; +import com.aparapi.device.Device; +import com.aparapi.device.OpenCLDevice; +import com.aparapi.internal.kernel.*; +import com.aparapi.opencl.OpenCL; +import com.aparapi.opencl.OpenCL.Resource; +import com.aparapi.opencl.OpenCL.Source; import java.util.List; public class SquareExample{ @@ -33,7 +33,7 @@ public class SquareExample{ @GlobalReadWrite("out") float[] out); } - @Resource("com/syncleus/aparapi/examples/extension/squarer.cl") interface SquarerWithResource extends OpenCL<SquarerWithResource>{ + @Resource("com/aparapi/aparapi/examples/extension/squarer.cl") interface SquarerWithResource extends OpenCL<SquarerWithResource>{ public SquarerWithResource square(// Range _range,// @GlobalReadWrite("in") float[] in,// diff --git a/src/main/java/com/syncleus/aparapi/examples/extension/StopWatch.java b/src/main/java/com/syncleus/aparapi/examples/extension/StopWatch.java index eb32e1e6..a5ac4b26 100644 --- a/src/main/java/com/syncleus/aparapi/examples/extension/StopWatch.java +++ b/src/main/java/com/syncleus/aparapi/examples/extension/StopWatch.java @@ -8,7 +8,7 @@ * For additional credits (generally to people who reported problems) * see CREDITS file. */ -package com.syncleus.aparapi.examples.extension; +package com.aparapi.examples.extension; public class StopWatch{ long start = 0L; diff --git a/src/main/java/com/syncleus/aparapi/examples/extension/SwapExample.java b/src/main/java/com/syncleus/aparapi/examples/extension/SwapExample.java index dbb87fa0..beafe59a 100644 --- a/src/main/java/com/syncleus/aparapi/examples/extension/SwapExample.java +++ b/src/main/java/com/syncleus/aparapi/examples/extension/SwapExample.java @@ -8,13 +8,13 @@ * For additional credits (generally to people who reported problems) * see CREDITS file. */ -package com.syncleus.aparapi.examples.extension; +package com.aparapi.examples.extension; -import com.syncleus.aparapi.Range; -import com.syncleus.aparapi.device.Device; -import com.syncleus.aparapi.device.OpenCLDevice; -import com.syncleus.aparapi.internal.kernel.*; -import com.syncleus.aparapi.opencl.OpenCL; +import com.aparapi.Range; +import com.aparapi.device.Device; +import com.aparapi.device.OpenCLDevice; +import com.aparapi.internal.kernel.*; +import com.aparapi.opencl.OpenCL; public class SwapExample{ diff --git a/src/main/java/com/syncleus/aparapi/examples/info/Main.java b/src/main/java/com/syncleus/aparapi/examples/info/Main.java index 9d560b34..0b835133 100644 --- a/src/main/java/com/syncleus/aparapi/examples/info/Main.java +++ b/src/main/java/com/syncleus/aparapi/examples/info/Main.java @@ -46,17 +46,17 @@ under those regulations, please refer to the U.S. Bureau of Industry and Securit */ -package com.syncleus.aparapi.examples.info; +package com.aparapi.examples.info; -import com.syncleus.aparapi.device.*; -import com.syncleus.aparapi.internal.kernel.*; -import com.syncleus.aparapi.internal.opencl.*; +import com.aparapi.device.*; +import com.aparapi.internal.kernel.*; +import com.aparapi.internal.opencl.*; import java.util.*; public class Main{ public static void main(String[] _args) { - System.out.println("com.syncleus.aparapi.examples.info.Main"); + System.out.println("com.aparapi.examples.info.Main"); List<OpenCLPlatform> platforms = (new OpenCLPlatform()).getOpenCLPlatforms(); System.out.println("Machine contains " + platforms.size() + " OpenCL platforms"); int platformc = 0; diff --git a/src/main/java/com/syncleus/aparapi/examples/javaonedemo/Life.java b/src/main/java/com/syncleus/aparapi/examples/javaonedemo/Life.java index d7f471b1..c0559259 100644 --- a/src/main/java/com/syncleus/aparapi/examples/javaonedemo/Life.java +++ b/src/main/java/com/syncleus/aparapi/examples/javaonedemo/Life.java @@ -46,7 +46,7 @@ under those regulations, please refer to the U.S. Bureau of Industry and Securit */ -package com.syncleus.aparapi.examples.javaonedemo; +package com.aparapi.examples.javaonedemo; import java.awt.BorderLayout; import java.awt.Color; @@ -70,9 +70,9 @@ import javax.swing.JFrame; import javax.swing.JPanel; import javax.swing.WindowConstants; -import com.syncleus.aparapi.Kernel; -import com.syncleus.aparapi.ProfileInfo; -import com.syncleus.aparapi.Range; +import com.aparapi.Kernel; +import com.aparapi.ProfileInfo; +import com.aparapi.Range; /** * An example Aparapi application which demonstrates Conways 'Game Of Life'. diff --git a/src/main/java/com/syncleus/aparapi/examples/javaonedemo/Mandel.java b/src/main/java/com/syncleus/aparapi/examples/javaonedemo/Mandel.java index 84ad9384..fe73d360 100644 --- a/src/main/java/com/syncleus/aparapi/examples/javaonedemo/Mandel.java +++ b/src/main/java/com/syncleus/aparapi/examples/javaonedemo/Mandel.java @@ -46,7 +46,7 @@ under those regulations, please refer to the U.S. Bureau of Industry and Securit */ -package com.syncleus.aparapi.examples.javaonedemo; +package com.aparapi.examples.javaonedemo; import java.awt.BorderLayout; import java.awt.Color; @@ -70,10 +70,10 @@ import javax.swing.JComponent; import javax.swing.JFrame; import javax.swing.JPanel; -import com.syncleus.aparapi.annotation.*; -import com.syncleus.aparapi.Kernel; -import com.syncleus.aparapi.ProfileInfo; -import com.syncleus.aparapi.Range; +import com.aparapi.annotation.*; +import com.aparapi.Kernel; +import com.aparapi.ProfileInfo; +import com.aparapi.Range; /** * An example Aparapi application which displays a view of the Mandelbrot set and lets the user zoom in to a particular point. diff --git a/src/main/java/com/syncleus/aparapi/examples/javaonedemo/NBody.java b/src/main/java/com/syncleus/aparapi/examples/javaonedemo/NBody.java index a06d8e0d..0bdc8d2d 100644 --- a/src/main/java/com/syncleus/aparapi/examples/javaonedemo/NBody.java +++ b/src/main/java/com/syncleus/aparapi/examples/javaonedemo/NBody.java @@ -45,7 +45,7 @@ of EAR). For the most current Country Group listings, or for additional informa under those regulations, please refer to the U.S. Bureau of Industry and Security's website at http://www.bis.doc.gov/. */ -package com.syncleus.aparapi.examples.javaonedemo; +package com.aparapi.examples.javaonedemo; import java.awt.BorderLayout; import java.awt.Dimension; @@ -75,9 +75,9 @@ import javax.swing.JLabel; import javax.swing.JPanel; import javax.swing.WindowConstants; -import com.syncleus.aparapi.Kernel; -import com.syncleus.aparapi.ProfileInfo; -import com.syncleus.aparapi.Range; +import com.aparapi.Kernel; +import com.aparapi.ProfileInfo; +import com.aparapi.Range; import com.jogamp.opengl.util.FPSAnimator; import com.jogamp.opengl.util.gl2.GLUT; import com.jogamp.opengl.util.texture.Texture; diff --git a/src/main/java/com/syncleus/aparapi/examples/life/Main.java b/src/main/java/com/syncleus/aparapi/examples/life/Main.java index 09f05c4c..263b9061 100644 --- a/src/main/java/com/syncleus/aparapi/examples/life/Main.java +++ b/src/main/java/com/syncleus/aparapi/examples/life/Main.java @@ -46,10 +46,10 @@ under those regulations, please refer to the U.S. Bureau of Industry and Securit */ -package com.syncleus.aparapi.examples.life; +package com.aparapi.examples.life; -import com.syncleus.aparapi.Kernel; -import com.syncleus.aparapi.*; +import com.aparapi.Kernel; +import com.aparapi.*; import javax.swing.*; import java.awt.*; @@ -113,7 +113,7 @@ public class Main{ width = _width; height = _height; - final String executionMode = System.getProperty("com.syncleus.aparapi.executionMode"); + final String executionMode = System.getProperty("com.aparapi.executionMode"); if ((executionMode != null) && executionMode.equals("JTP")) { range = Range.create(width * height, 4); } else { diff --git a/src/main/java/com/syncleus/aparapi/examples/mandel/Main.java b/src/main/java/com/syncleus/aparapi/examples/mandel/Main.java index c70ca65d..a9bd900d 100644 --- a/src/main/java/com/syncleus/aparapi/examples/mandel/Main.java +++ b/src/main/java/com/syncleus/aparapi/examples/mandel/Main.java @@ -46,10 +46,10 @@ under those regulations, please refer to the U.S. Bureau of Industry and Securit */ -package com.syncleus.aparapi.examples.mandel; +package com.aparapi.examples.mandel; -import com.syncleus.aparapi.Kernel; -import com.syncleus.aparapi.*; +import com.aparapi.Kernel; +import com.aparapi.*; import javax.swing.*; import java.awt.*; @@ -71,7 +71,7 @@ import java.util.List; public class Main{ static { - System.setProperty("com.syncleus.aparapi.dumpProfilesOnExit", "true"); + System.setProperty("com.aparapi.dumpProfilesOnExit", "true"); // KernelManager.setKernelManager(new KernelManager() { // @Override // protected List<Device.TYPE> getPreferredDeviceTypes() { diff --git a/src/main/java/com/syncleus/aparapi/examples/mandel/Main2D.java b/src/main/java/com/syncleus/aparapi/examples/mandel/Main2D.java index 46114eb4..782f27be 100644 --- a/src/main/java/com/syncleus/aparapi/examples/mandel/Main2D.java +++ b/src/main/java/com/syncleus/aparapi/examples/mandel/Main2D.java @@ -46,10 +46,10 @@ under those regulations, please refer to the U.S. Bureau of Industry and Securit */ -package com.syncleus.aparapi.examples.mandel; +package com.aparapi.examples.mandel; -import com.syncleus.aparapi.Kernel; -import com.syncleus.aparapi.*; +import com.aparapi.Kernel; +import com.aparapi.*; import javax.swing.*; import java.awt.*; diff --git a/src/main/java/com/syncleus/aparapi/examples/mdarray/BMatMul1D.java b/src/main/java/com/syncleus/aparapi/examples/mdarray/BMatMul1D.java index 30515e70..82e5180b 100644 --- a/src/main/java/com/syncleus/aparapi/examples/mdarray/BMatMul1D.java +++ b/src/main/java/com/syncleus/aparapi/examples/mdarray/BMatMul1D.java @@ -8,9 +8,9 @@ * For additional credits (generally to people who reported problems) * see CREDITS file. */ -package com.syncleus.aparapi.examples.mdarray; +package com.aparapi.examples.mdarray; -import com.syncleus.aparapi.Kernel; +import com.aparapi.Kernel; class BMatMul1D extends Kernel{ byte[] A; diff --git a/src/main/java/com/syncleus/aparapi/examples/mdarray/BMatMul2D.java b/src/main/java/com/syncleus/aparapi/examples/mdarray/BMatMul2D.java index d03e80c9..be315fbe 100644 --- a/src/main/java/com/syncleus/aparapi/examples/mdarray/BMatMul2D.java +++ b/src/main/java/com/syncleus/aparapi/examples/mdarray/BMatMul2D.java @@ -8,9 +8,9 @@ * For additional credits (generally to people who reported problems) * see CREDITS file. */ -package com.syncleus.aparapi.examples.mdarray; +package com.aparapi.examples.mdarray; -import com.syncleus.aparapi.Kernel; +import com.aparapi.Kernel; class BMatMul2D extends Kernel{ byte[][] A; diff --git a/src/main/java/com/syncleus/aparapi/examples/mdarray/BMatMul3D.java b/src/main/java/com/syncleus/aparapi/examples/mdarray/BMatMul3D.java index 244a8a90..7f7cf58b 100644 --- a/src/main/java/com/syncleus/aparapi/examples/mdarray/BMatMul3D.java +++ b/src/main/java/com/syncleus/aparapi/examples/mdarray/BMatMul3D.java @@ -8,9 +8,9 @@ * For additional credits (generally to people who reported problems) * see CREDITS file. */ -package com.syncleus.aparapi.examples.mdarray; +package com.aparapi.examples.mdarray; -import com.syncleus.aparapi.Kernel; +import com.aparapi.Kernel; class BMatMul3D extends Kernel{ byte[][][] A; diff --git a/src/main/java/com/syncleus/aparapi/examples/mdarray/DMatMul1D.java b/src/main/java/com/syncleus/aparapi/examples/mdarray/DMatMul1D.java index 0752d299..8a463d77 100644 --- a/src/main/java/com/syncleus/aparapi/examples/mdarray/DMatMul1D.java +++ b/src/main/java/com/syncleus/aparapi/examples/mdarray/DMatMul1D.java @@ -8,9 +8,9 @@ * For additional credits (generally to people who reported problems) * see CREDITS file. */ -package com.syncleus.aparapi.examples.mdarray; +package com.aparapi.examples.mdarray; -import com.syncleus.aparapi.Kernel; +import com.aparapi.Kernel; class DMatMul1D extends Kernel{ double[] A; diff --git a/src/main/java/com/syncleus/aparapi/examples/mdarray/DMatMul2D.java b/src/main/java/com/syncleus/aparapi/examples/mdarray/DMatMul2D.java index de6c240f..a30c901e 100644 --- a/src/main/java/com/syncleus/aparapi/examples/mdarray/DMatMul2D.java +++ b/src/main/java/com/syncleus/aparapi/examples/mdarray/DMatMul2D.java @@ -8,9 +8,9 @@ * For additional credits (generally to people who reported problems) * see CREDITS file. */ -package com.syncleus.aparapi.examples.mdarray; +package com.aparapi.examples.mdarray; -import com.syncleus.aparapi.Kernel; +import com.aparapi.Kernel; class DMatMul2D extends Kernel{ double[][] A; diff --git a/src/main/java/com/syncleus/aparapi/examples/mdarray/DMatMul3D.java b/src/main/java/com/syncleus/aparapi/examples/mdarray/DMatMul3D.java index f4b97f88..6c745a5a 100644 --- a/src/main/java/com/syncleus/aparapi/examples/mdarray/DMatMul3D.java +++ b/src/main/java/com/syncleus/aparapi/examples/mdarray/DMatMul3D.java @@ -8,9 +8,9 @@ * For additional credits (generally to people who reported problems) * see CREDITS file. */ -package com.syncleus.aparapi.examples.mdarray; +package com.aparapi.examples.mdarray; -import com.syncleus.aparapi.Kernel; +import com.aparapi.Kernel; class DMatMul3D extends Kernel{ double[][][] A; diff --git a/src/main/java/com/syncleus/aparapi/examples/mdarray/FMatMul1D.java b/src/main/java/com/syncleus/aparapi/examples/mdarray/FMatMul1D.java index 4596efb0..49562376 100644 --- a/src/main/java/com/syncleus/aparapi/examples/mdarray/FMatMul1D.java +++ b/src/main/java/com/syncleus/aparapi/examples/mdarray/FMatMul1D.java @@ -8,9 +8,9 @@ * For additional credits (generally to people who reported problems) * see CREDITS file. */ -package com.syncleus.aparapi.examples.mdarray; +package com.aparapi.examples.mdarray; -import com.syncleus.aparapi.Kernel; +import com.aparapi.Kernel; class FMatMul1D extends Kernel{ float[] A; diff --git a/src/main/java/com/syncleus/aparapi/examples/mdarray/FMatMul2D.java b/src/main/java/com/syncleus/aparapi/examples/mdarray/FMatMul2D.java index 1d4daf28..eba56715 100644 --- a/src/main/java/com/syncleus/aparapi/examples/mdarray/FMatMul2D.java +++ b/src/main/java/com/syncleus/aparapi/examples/mdarray/FMatMul2D.java @@ -8,9 +8,9 @@ * For additional credits (generally to people who reported problems) * see CREDITS file. */ -package com.syncleus.aparapi.examples.mdarray; +package com.aparapi.examples.mdarray; -import com.syncleus.aparapi.Kernel; +import com.aparapi.Kernel; class FMatMul2D extends Kernel{ float[][] A; diff --git a/src/main/java/com/syncleus/aparapi/examples/mdarray/FMatMul3D.java b/src/main/java/com/syncleus/aparapi/examples/mdarray/FMatMul3D.java index c1360b53..a4fd8a09 100644 --- a/src/main/java/com/syncleus/aparapi/examples/mdarray/FMatMul3D.java +++ b/src/main/java/com/syncleus/aparapi/examples/mdarray/FMatMul3D.java @@ -8,9 +8,9 @@ * For additional credits (generally to people who reported problems) * see CREDITS file. */ -package com.syncleus.aparapi.examples.mdarray; +package com.aparapi.examples.mdarray; -import com.syncleus.aparapi.Kernel; +import com.aparapi.Kernel; class FMatMul3D extends Kernel{ float[][][] A; diff --git a/src/main/java/com/syncleus/aparapi/examples/mdarray/IMatMul1D.java b/src/main/java/com/syncleus/aparapi/examples/mdarray/IMatMul1D.java index 0d7a5794..dbd7fe42 100644 --- a/src/main/java/com/syncleus/aparapi/examples/mdarray/IMatMul1D.java +++ b/src/main/java/com/syncleus/aparapi/examples/mdarray/IMatMul1D.java @@ -8,9 +8,9 @@ * For additional credits (generally to people who reported problems) * see CREDITS file. */ -package com.syncleus.aparapi.examples.mdarray; +package com.aparapi.examples.mdarray; -import com.syncleus.aparapi.Kernel; +import com.aparapi.Kernel; class IMatMul1D extends Kernel{ int[] A; diff --git a/src/main/java/com/syncleus/aparapi/examples/mdarray/IMatMul2D.java b/src/main/java/com/syncleus/aparapi/examples/mdarray/IMatMul2D.java index 0f23dc8c..69cf36fa 100644 --- a/src/main/java/com/syncleus/aparapi/examples/mdarray/IMatMul2D.java +++ b/src/main/java/com/syncleus/aparapi/examples/mdarray/IMatMul2D.java @@ -8,9 +8,9 @@ * For additional credits (generally to people who reported problems) * see CREDITS file. */ -package com.syncleus.aparapi.examples.mdarray; +package com.aparapi.examples.mdarray; -import com.syncleus.aparapi.Kernel; +import com.aparapi.Kernel; class IMatMul2D extends Kernel{ int[][] A; diff --git a/src/main/java/com/syncleus/aparapi/examples/mdarray/IMatMul3D.java b/src/main/java/com/syncleus/aparapi/examples/mdarray/IMatMul3D.java index 71f83ef8..44017bcb 100644 --- a/src/main/java/com/syncleus/aparapi/examples/mdarray/IMatMul3D.java +++ b/src/main/java/com/syncleus/aparapi/examples/mdarray/IMatMul3D.java @@ -8,9 +8,9 @@ * For additional credits (generally to people who reported problems) * see CREDITS file. */ -package com.syncleus.aparapi.examples.mdarray; +package com.aparapi.examples.mdarray; -import com.syncleus.aparapi.Kernel; +import com.aparapi.Kernel; class IMatMul3D extends Kernel{ int[][][] A; diff --git a/src/main/java/com/syncleus/aparapi/examples/mdarray/LMatMul1D.java b/src/main/java/com/syncleus/aparapi/examples/mdarray/LMatMul1D.java index b1e08cb9..7b013f93 100644 --- a/src/main/java/com/syncleus/aparapi/examples/mdarray/LMatMul1D.java +++ b/src/main/java/com/syncleus/aparapi/examples/mdarray/LMatMul1D.java @@ -8,9 +8,9 @@ * For additional credits (generally to people who reported problems) * see CREDITS file. */ -package com.syncleus.aparapi.examples.mdarray; +package com.aparapi.examples.mdarray; -import com.syncleus.aparapi.Kernel; +import com.aparapi.Kernel; class LMatMul1D extends Kernel{ long[] A; diff --git a/src/main/java/com/syncleus/aparapi/examples/mdarray/LMatMul2D.java b/src/main/java/com/syncleus/aparapi/examples/mdarray/LMatMul2D.java index 65d16c49..c541c8e5 100644 --- a/src/main/java/com/syncleus/aparapi/examples/mdarray/LMatMul2D.java +++ b/src/main/java/com/syncleus/aparapi/examples/mdarray/LMatMul2D.java @@ -8,9 +8,9 @@ * For additional credits (generally to people who reported problems) * see CREDITS file. */ -package com.syncleus.aparapi.examples.mdarray; +package com.aparapi.examples.mdarray; -import com.syncleus.aparapi.Kernel; +import com.aparapi.Kernel; class LMatMul2D extends Kernel{ long[][] A; diff --git a/src/main/java/com/syncleus/aparapi/examples/mdarray/LMatMul3D.java b/src/main/java/com/syncleus/aparapi/examples/mdarray/LMatMul3D.java index 98c08419..b5460e8f 100644 --- a/src/main/java/com/syncleus/aparapi/examples/mdarray/LMatMul3D.java +++ b/src/main/java/com/syncleus/aparapi/examples/mdarray/LMatMul3D.java @@ -8,9 +8,9 @@ * For additional credits (generally to people who reported problems) * see CREDITS file. */ -package com.syncleus.aparapi.examples.mdarray; +package com.aparapi.examples.mdarray; -import com.syncleus.aparapi.Kernel; +import com.aparapi.Kernel; class LMatMul3D extends Kernel{ long[][][] A; diff --git a/src/main/java/com/syncleus/aparapi/examples/mdarray/MDArray.java b/src/main/java/com/syncleus/aparapi/examples/mdarray/MDArray.java index 38819b16..ff08012e 100644 --- a/src/main/java/com/syncleus/aparapi/examples/mdarray/MDArray.java +++ b/src/main/java/com/syncleus/aparapi/examples/mdarray/MDArray.java @@ -8,9 +8,9 @@ * For additional credits (generally to people who reported problems) * see CREDITS file. */ -package com.syncleus.aparapi.examples.mdarray; +package com.aparapi.examples.mdarray; -import com.syncleus.aparapi.Kernel; +import com.aparapi.Kernel; public class MDArray { diff --git a/src/main/java/com/syncleus/aparapi/examples/mdarray/SMatMul1D.java b/src/main/java/com/syncleus/aparapi/examples/mdarray/SMatMul1D.java index 71e4ab4b..9dfbf467 100644 --- a/src/main/java/com/syncleus/aparapi/examples/mdarray/SMatMul1D.java +++ b/src/main/java/com/syncleus/aparapi/examples/mdarray/SMatMul1D.java @@ -8,9 +8,9 @@ * For additional credits (generally to people who reported problems) * see CREDITS file. */ -package com.syncleus.aparapi.examples.mdarray; +package com.aparapi.examples.mdarray; -import com.syncleus.aparapi.Kernel; +import com.aparapi.Kernel; class SMatMul1D extends Kernel{ short[] A; diff --git a/src/main/java/com/syncleus/aparapi/examples/mdarray/SMatMul2D.java b/src/main/java/com/syncleus/aparapi/examples/mdarray/SMatMul2D.java index 2d46af4f..c5e829c8 100644 --- a/src/main/java/com/syncleus/aparapi/examples/mdarray/SMatMul2D.java +++ b/src/main/java/com/syncleus/aparapi/examples/mdarray/SMatMul2D.java @@ -8,9 +8,9 @@ * For additional credits (generally to people who reported problems) * see CREDITS file. */ -package com.syncleus.aparapi.examples.mdarray; +package com.aparapi.examples.mdarray; -import com.syncleus.aparapi.Kernel; +import com.aparapi.Kernel; class SMatMul2D extends Kernel{ short[][] A; diff --git a/src/main/java/com/syncleus/aparapi/examples/mdarray/SMatMul3D.java b/src/main/java/com/syncleus/aparapi/examples/mdarray/SMatMul3D.java index 8558a669..8828e557 100644 --- a/src/main/java/com/syncleus/aparapi/examples/mdarray/SMatMul3D.java +++ b/src/main/java/com/syncleus/aparapi/examples/mdarray/SMatMul3D.java @@ -8,9 +8,9 @@ * For additional credits (generally to people who reported problems) * see CREDITS file. */ -package com.syncleus.aparapi.examples.mdarray; +package com.aparapi.examples.mdarray; -import com.syncleus.aparapi.Kernel; +import com.aparapi.Kernel; class SMatMul3D extends Kernel{ short[][][] A; diff --git a/src/main/java/com/syncleus/aparapi/examples/mdarray/ZMatMul1D.java b/src/main/java/com/syncleus/aparapi/examples/mdarray/ZMatMul1D.java index f9409254..3f0dd511 100644 --- a/src/main/java/com/syncleus/aparapi/examples/mdarray/ZMatMul1D.java +++ b/src/main/java/com/syncleus/aparapi/examples/mdarray/ZMatMul1D.java @@ -8,9 +8,9 @@ * For additional credits (generally to people who reported problems) * see CREDITS file. */ -package com.syncleus.aparapi.examples.mdarray; +package com.aparapi.examples.mdarray; -import com.syncleus.aparapi.Kernel; +import com.aparapi.Kernel; class ZMatMul1D extends Kernel{ boolean[] A; diff --git a/src/main/java/com/syncleus/aparapi/examples/mdarray/ZMatMul2D.java b/src/main/java/com/syncleus/aparapi/examples/mdarray/ZMatMul2D.java index 0ddd5913..b60a4fc9 100644 --- a/src/main/java/com/syncleus/aparapi/examples/mdarray/ZMatMul2D.java +++ b/src/main/java/com/syncleus/aparapi/examples/mdarray/ZMatMul2D.java @@ -8,9 +8,9 @@ * For additional credits (generally to people who reported problems) * see CREDITS file. */ -package com.syncleus.aparapi.examples.mdarray; +package com.aparapi.examples.mdarray; -import com.syncleus.aparapi.Kernel; +import com.aparapi.Kernel; class ZMatMul2D extends Kernel{ boolean[][] A; diff --git a/src/main/java/com/syncleus/aparapi/examples/mdarray/ZMatMul3D.java b/src/main/java/com/syncleus/aparapi/examples/mdarray/ZMatMul3D.java index d0a0940f..5d3f27f1 100644 --- a/src/main/java/com/syncleus/aparapi/examples/mdarray/ZMatMul3D.java +++ b/src/main/java/com/syncleus/aparapi/examples/mdarray/ZMatMul3D.java @@ -8,9 +8,9 @@ * For additional credits (generally to people who reported problems) * see CREDITS file. */ -package com.syncleus.aparapi.examples.mdarray; +package com.aparapi.examples.mdarray; -import com.syncleus.aparapi.Kernel; +import com.aparapi.Kernel; class ZMatMul3D extends Kernel{ boolean[][][] A; diff --git a/src/main/java/com/syncleus/aparapi/examples/median/MedianDemo.java b/src/main/java/com/syncleus/aparapi/examples/median/MedianDemo.java index bbff9bbd..230815ac 100644 --- a/src/main/java/com/syncleus/aparapi/examples/median/MedianDemo.java +++ b/src/main/java/com/syncleus/aparapi/examples/median/MedianDemo.java @@ -8,9 +8,9 @@ * For additional credits (generally to people who reported problems) * see CREDITS file. */ -package com.syncleus.aparapi.examples.median; +package com.aparapi.examples.median; -import com.syncleus.aparapi.internal.kernel.*; +import com.aparapi.internal.kernel.*; import javax.imageio.*; import javax.swing.*; @@ -37,15 +37,15 @@ public class MedianDemo { public static void main(String[] ignored) { final int size = 5; - System.setProperty("com.syncleus.aparapi.dumpProfilesOnExit", "true"); + System.setProperty("com.aparapi.dumpProfilesOnExit", "true"); boolean verbose = false; if (verbose) { - System.setProperty("com.syncleus.aparapi.enableVerboseJNI", "true"); - System.setProperty("com.syncleus.aparapi.dumpFlags", "true"); - System.setProperty("com.syncleus.aparapi.enableShowGeneratedOpenCL", "true"); - System.setProperty("com.syncleus.aparapi.enableVerboseJNIOpenCLResourceTracking", "true"); - System.setProperty("com.syncleus.aparapi.enableExecutionModeReporting", "true"); + System.setProperty("com.aparapi.enableVerboseJNI", "true"); + System.setProperty("com.aparapi.dumpFlags", "true"); + System.setProperty("com.aparapi.enableShowGeneratedOpenCL", "true"); + System.setProperty("com.aparapi.enableVerboseJNIOpenCLResourceTracking", "true"); + System.setProperty("com.aparapi.enableExecutionModeReporting", "true"); } // KernelManager.setKernelManager(new KernelManager(){ diff --git a/src/main/java/com/syncleus/aparapi/examples/median/MedianKernel7x7.java b/src/main/java/com/syncleus/aparapi/examples/median/MedianKernel7x7.java index 349c2eec..48903ca6 100644 --- a/src/main/java/com/syncleus/aparapi/examples/median/MedianKernel7x7.java +++ b/src/main/java/com/syncleus/aparapi/examples/median/MedianKernel7x7.java @@ -8,9 +8,9 @@ * For additional credits (generally to people who reported problems) * see CREDITS file. */ -package com.syncleus.aparapi.examples.median; +package com.aparapi.examples.median; -import com.syncleus.aparapi.*; +import com.aparapi.*; /** * Provides support for pixel windows of size no greater than 49 (e.g. 7x7). diff --git a/src/main/java/com/syncleus/aparapi/examples/median/MedianSettings.java b/src/main/java/com/syncleus/aparapi/examples/median/MedianSettings.java index 76068c4a..948042de 100644 --- a/src/main/java/com/syncleus/aparapi/examples/median/MedianSettings.java +++ b/src/main/java/com/syncleus/aparapi/examples/median/MedianSettings.java @@ -8,7 +8,7 @@ * For additional credits (generally to people who reported problems) * see CREDITS file. */ -package com.syncleus.aparapi.examples.median; +package com.aparapi.examples.median; public class MedianSettings { public final int windowWidth; diff --git a/src/main/java/com/syncleus/aparapi/examples/nbody/Local.java b/src/main/java/com/syncleus/aparapi/examples/nbody/Local.java index 9c76bd7d..f5153d59 100644 --- a/src/main/java/com/syncleus/aparapi/examples/nbody/Local.java +++ b/src/main/java/com/syncleus/aparapi/examples/nbody/Local.java @@ -45,7 +45,7 @@ of EAR). For the most current Country Group listings, or for additional informa under those regulations, please refer to the U.S. Bureau of Industry and Security's website at http://www.bis.doc.gov/. */ -package com.syncleus.aparapi.examples.nbody; +package com.aparapi.examples.nbody; import java.awt.BorderLayout; import java.awt.Dimension; @@ -72,9 +72,9 @@ import javax.swing.JPanel; import javax.swing.JTextField; import javax.swing.WindowConstants; -import com.syncleus.aparapi.Kernel; -import com.syncleus.aparapi.ProfileInfo; -import com.syncleus.aparapi.Range; +import com.aparapi.Kernel; +import com.aparapi.ProfileInfo; +import com.aparapi.Range; import com.jogamp.opengl.util.FPSAnimator; import com.jogamp.opengl.util.texture.Texture; import com.jogamp.opengl.util.texture.TextureIO; @@ -84,7 +84,7 @@ import com.jogamp.opengl.util.texture.TextureIO; * * http://www.browndeertechnology.com/docs/BDT_OpenCL_Tutorial_NBody-rev3.html * - * @see com.syncleus.aparapi.examples.nbody.Main + * @see com.aparapi.examples.nbody.Main * * @author gfrost * diff --git a/src/main/java/com/syncleus/aparapi/examples/nbody/Main.java b/src/main/java/com/syncleus/aparapi/examples/nbody/Main.java index 5ca45361..85e3f8f3 100644 --- a/src/main/java/com/syncleus/aparapi/examples/nbody/Main.java +++ b/src/main/java/com/syncleus/aparapi/examples/nbody/Main.java @@ -45,7 +45,7 @@ of EAR). For the most current Country Group listings, or for additional informa under those regulations, please refer to the U.S. Bureau of Industry and Security's website at http://www.bis.doc.gov/. */ -package com.syncleus.aparapi.examples.nbody; +package com.aparapi.examples.nbody; import java.awt.BorderLayout; import java.awt.Dimension; @@ -73,9 +73,9 @@ import javax.swing.JPanel; import javax.swing.JTextField; import javax.swing.WindowConstants; -import com.syncleus.aparapi.Kernel; -import com.syncleus.aparapi.ProfileInfo; -import com.syncleus.aparapi.Range; +import com.aparapi.Kernel; +import com.aparapi.ProfileInfo; +import com.aparapi.Range; import com.jogamp.opengl.util.FPSAnimator; import com.jogamp.opengl.util.texture.Texture; import com.jogamp.opengl.util.texture.TextureData; diff --git a/src/main/java/com/syncleus/aparapi/examples/nbody/Seq.java b/src/main/java/com/syncleus/aparapi/examples/nbody/Seq.java index b2cb2529..b5e269e3 100644 --- a/src/main/java/com/syncleus/aparapi/examples/nbody/Seq.java +++ b/src/main/java/com/syncleus/aparapi/examples/nbody/Seq.java @@ -45,7 +45,7 @@ of EAR). For the most current Country Group listings, or for additional informa under those regulations, please refer to the U.S. Bureau of Industry and Security's website at http://www.bis.doc.gov/. */ -package com.syncleus.aparapi.examples.nbody; +package com.aparapi.examples.nbody; import java.awt.BorderLayout; import java.awt.Dimension; @@ -73,9 +73,9 @@ import javax.swing.JPanel; import javax.swing.JTextField; import javax.swing.WindowConstants; -import com.syncleus.aparapi.Kernel; -import com.syncleus.aparapi.ProfileInfo; -import com.syncleus.aparapi.Range; +import com.aparapi.Kernel; +import com.aparapi.ProfileInfo; +import com.aparapi.Range; import com.jogamp.opengl.util.FPSAnimator; import com.jogamp.opengl.util.texture.Texture; import com.jogamp.opengl.util.texture.TextureData; diff --git a/src/main/java/com/syncleus/aparapi/examples/oopnbody/Body.java b/src/main/java/com/syncleus/aparapi/examples/oopnbody/Body.java index 36bf2e31..2f2fb9a4 100644 --- a/src/main/java/com/syncleus/aparapi/examples/oopnbody/Body.java +++ b/src/main/java/com/syncleus/aparapi/examples/oopnbody/Body.java @@ -8,7 +8,7 @@ * For additional credits (generally to people who reported problems) * see CREDITS file. */ -package com.syncleus.aparapi.examples.oopnbody; +package com.aparapi.examples.oopnbody; import java.util.List; diff --git a/src/main/java/com/syncleus/aparapi/examples/oopnbody/Main.java b/src/main/java/com/syncleus/aparapi/examples/oopnbody/Main.java index 7c6b8d48..2b6d4046 100644 --- a/src/main/java/com/syncleus/aparapi/examples/oopnbody/Main.java +++ b/src/main/java/com/syncleus/aparapi/examples/oopnbody/Main.java @@ -45,7 +45,7 @@ of EAR). For the most current Country Group listings, or for additional informa under those regulations, please refer to the U.S. Bureau of Industry and Security's website at http://www.bis.doc.gov/. */ -package com.syncleus.aparapi.examples.oopnbody; +package com.aparapi.examples.oopnbody; import java.awt.BorderLayout; import java.awt.Dimension; @@ -75,9 +75,9 @@ import javax.swing.JPanel; import javax.swing.JTextField; import javax.swing.WindowConstants; -import com.syncleus.aparapi.Kernel; -import com.syncleus.aparapi.ProfileInfo; -import com.syncleus.aparapi.Range; +import com.aparapi.Kernel; +import com.aparapi.ProfileInfo; +import com.aparapi.Range; import com.jogamp.opengl.util.FPSAnimator; import com.jogamp.opengl.util.texture.Texture; diff --git a/src/main/java/com/syncleus/aparapi/examples/progress/LongRunningKernel.java b/src/main/java/com/syncleus/aparapi/examples/progress/LongRunningKernel.java index e3799f01..a510b643 100644 --- a/src/main/java/com/syncleus/aparapi/examples/progress/LongRunningKernel.java +++ b/src/main/java/com/syncleus/aparapi/examples/progress/LongRunningKernel.java @@ -8,9 +8,9 @@ * For additional credits (generally to people who reported problems) * see CREDITS file. */ -package com.syncleus.aparapi.examples.progress; +package com.aparapi.examples.progress; -import com.syncleus.aparapi.Kernel; +import com.aparapi.Kernel; /** * Kernel which performs very many meaningless calculations, used to demonstrate progress tracking and cancellation of multi-pass Kernels. diff --git a/src/main/java/com/syncleus/aparapi/examples/progress/MultiPassKernelSwingWorkerDemo.java b/src/main/java/com/syncleus/aparapi/examples/progress/MultiPassKernelSwingWorkerDemo.java index 0cf5ef16..87bac218 100644 --- a/src/main/java/com/syncleus/aparapi/examples/progress/MultiPassKernelSwingWorkerDemo.java +++ b/src/main/java/com/syncleus/aparapi/examples/progress/MultiPassKernelSwingWorkerDemo.java @@ -8,11 +8,11 @@ * For additional credits (generally to people who reported problems) * see CREDITS file. */ -package com.syncleus.aparapi.examples.progress; +package com.aparapi.examples.progress; -import com.syncleus.aparapi.*; -import com.syncleus.aparapi.internal.kernel.*; -import com.syncleus.aparapi.util.swing.MultiPassKernelSwingWorker; +import com.aparapi.*; +import com.aparapi.internal.kernel.*; +import com.aparapi.util.swing.MultiPassKernelSwingWorker; import javax.swing.*; import javax.swing.plaf.nimbus.NimbusLookAndFeel; diff --git a/src/main/java/com/syncleus/aparapi/examples/progress/ProgressAndCancelDemo.java b/src/main/java/com/syncleus/aparapi/examples/progress/ProgressAndCancelDemo.java index c09c510e..6dcd759a 100644 --- a/src/main/java/com/syncleus/aparapi/examples/progress/ProgressAndCancelDemo.java +++ b/src/main/java/com/syncleus/aparapi/examples/progress/ProgressAndCancelDemo.java @@ -8,9 +8,9 @@ * For additional credits (generally to people who reported problems) * see CREDITS file. */ -package com.syncleus.aparapi.examples.progress; +package com.aparapi.examples.progress; -import com.syncleus.aparapi.internal.kernel.*; +import com.aparapi.internal.kernel.*; import javax.swing.*; import javax.swing.plaf.nimbus.*; @@ -36,11 +36,11 @@ public class ProgressAndCancelDemo { public static void main(String[] ignored) throws Exception { - System.setProperty("com.syncleus.aparapi.enableShowGeneratedOpenCL", "true"); - System.setProperty("com.syncleus.aparapi.enableVerboseJNI", "true"); - System.setProperty("com.syncleus.aparapi.dumpFlags", "true"); - System.setProperty("com.syncleus.aparapi.enableVerboseJNIOpenCLResourceTracking", "true"); - System.setProperty("com.syncleus.aparapi.enableExecutionModeReporting", "true"); + System.setProperty("com.aparapi.enableShowGeneratedOpenCL", "true"); + System.setProperty("com.aparapi.enableVerboseJNI", "true"); + System.setProperty("com.aparapi.dumpFlags", "true"); + System.setProperty("com.aparapi.enableVerboseJNIOpenCLResourceTracking", "true"); + System.setProperty("com.aparapi.enableExecutionModeReporting", "true"); kernel = new LongRunningKernel(); if (TEST_JTP) { diff --git a/src/main/java/com/syncleus/aparapi/examples/squares/Main.java b/src/main/java/com/syncleus/aparapi/examples/squares/Main.java index 7b8bc238..e7f3bf8e 100644 --- a/src/main/java/com/syncleus/aparapi/examples/squares/Main.java +++ b/src/main/java/com/syncleus/aparapi/examples/squares/Main.java @@ -46,10 +46,10 @@ under those regulations, please refer to the U.S. Bureau of Industry and Securit */ -package com.syncleus.aparapi.examples.squares; +package com.aparapi.examples.squares; -import com.syncleus.aparapi.Kernel; -import com.syncleus.aparapi.Range; +import com.aparapi.Kernel; +import com.aparapi.Range; /** * An example Aparapi application which computes and displays squares of a set of 512 input values. diff --git a/test/codegen/build.xml b/test/codegen/build.xml index 88d41a88..350f54b0 100644 --- a/test/codegen/build.xml +++ b/test/codegen/build.xml @@ -44,7 +44,7 @@ </target> <path id="classpath"> - <pathelement path="${basedir}/../../com.syncleus.aparapi/dist/aparapi.jar" /> + <pathelement path="${basedir}/../../com.aparapi/dist/aparapi.jar" /> <pathelement path="${junit.home}/${junit.jar.name}" /> <pathelement path="classes" /> </path> @@ -56,7 +56,7 @@ <compilerarg value="-Xlint:-path" /> </javac> - <java classname="com.syncleus.aparapi.CreateJUnitTests" classpathref="classpath"> + <java classname="com.aparapi.CreateJUnitTests" classpathref="classpath"> <sysproperty key="root" value="${basedir}" /> </java> diff --git a/test/codegen/src/java/com/amd/aparapi/CodeGenJUnitBase.java b/test/codegen/src/java/com/amd/aparapi/CodeGenJUnitBase.java index 6e02f730..746b6da7 100644 --- a/test/codegen/src/java/com/amd/aparapi/CodeGenJUnitBase.java +++ b/test/codegen/src/java/com/amd/aparapi/CodeGenJUnitBase.java @@ -35,17 +35,17 @@ of EAR). For the most current Country Group listings, or for additional informa under those regulations, please refer to the U.S. Bureau of Industry and Security's website at http://www.bis.doc.gov/. */ -package com.syncleus.aparapi; +package com.aparapi; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertTrue; import java.util.Arrays; -import com.syncleus.aparapi.internal.exception.AparapiException; -import com.syncleus.aparapi.internal.model.ClassModel; -import com.syncleus.aparapi.internal.model.Entrypoint; -import com.syncleus.aparapi.internal.writer.KernelWriter; +import com.aparapi.internal.exception.AparapiException; +import com.aparapi.internal.model.ClassModel; +import com.aparapi.internal.model.Entrypoint; +import com.aparapi.internal.writer.KernelWriter; public class CodeGenJUnitBase { diff --git a/test/codegen/src/java/com/amd/aparapi/CreateJUnitTests.java b/test/codegen/src/java/com/amd/aparapi/CreateJUnitTests.java index 874b0cf8..e75c22c9 100644 --- a/test/codegen/src/java/com/amd/aparapi/CreateJUnitTests.java +++ b/test/codegen/src/java/com/amd/aparapi/CreateJUnitTests.java @@ -35,7 +35,7 @@ of EAR). For the most current Country Group listings, or for additional informa under those regulations, please refer to the U.S. Bureau of Industry and Security's website at http://www.bis.doc.gov/. */ -package com.syncleus.aparapi; +package com.aparapi; import java.io.File; import java.io.FileNotFoundException; @@ -78,7 +78,7 @@ public class CreateJUnitTests { Source source = new Source(Class.forName(testPackageName + "." + className), sourceDir); StringBuilder sb = new StringBuilder(); - sb.append("package com.syncleus.aparapi.test.junit.codegen;\n"); + sb.append("package com.aparapi.test.junit.codegen;\n"); sb.append("import org.junit.Test;\n"); String doc = source.getDocString(); if (doc.length() > 0) { @@ -86,7 +86,7 @@ public class CreateJUnitTests { sb.append(doc); sb.append("\n */\n"); } - sb.append("public class " + className + " extends com.syncleus.aparapi.CodeGenJUnitBase{\n"); + sb.append("public class " + className + " extends com.aparapi.CodeGenJUnitBase{\n"); appendExpectedOpenCL(source, sb); appendExpectedExceptions(source, sb); appendTest(testPackageName, className, "", sb); @@ -112,12 +112,12 @@ public class CreateJUnitTests { private static void appendExpectedExceptions(Source source, StringBuilder sb) { String exceptions = source.getExceptionsString(); if (exceptions.length() > 0) { - sb.append(" private static final Class<? extends com.syncleus.aparapi.internal.exception.AparapiException> expectedException = "); + sb.append(" private static final Class<? extends com.aparapi.internal.exception.AparapiException> expectedException = "); - sb.append("com.syncleus.aparapi.internal.exception." + exceptions + ".class"); + sb.append("com.aparapi.internal.exception." + exceptions + ".class"); sb.append(";\n"); } else { - sb.append(" private static final Class<? extends com.syncleus.aparapi.internal.exception.AparapiException> expectedException = null;\n"); + sb.append(" private static final Class<? extends com.aparapi.internal.exception.AparapiException> expectedException = null;\n"); } } diff --git a/test/codegen/src/java/com/amd/aparapi/Diff.java b/test/codegen/src/java/com/amd/aparapi/Diff.java index 60b16246..97d80166 100644 --- a/test/codegen/src/java/com/amd/aparapi/Diff.java +++ b/test/codegen/src/java/com/amd/aparapi/Diff.java @@ -35,7 +35,7 @@ of EAR). For the most current Country Group listings, or for additional informa under those regulations, please refer to the U.S. Bureau of Industry and Security's website at http://www.bis.doc.gov/. */ -package com.syncleus.aparapi; +package com.aparapi; import java.awt.Point; import java.util.ArrayList; diff --git a/test/codegen/src/java/com/amd/aparapi/KernelHelper.java b/test/codegen/src/java/com/amd/aparapi/KernelHelper.java index 8ee40096..e12b78e7 100644 --- a/test/codegen/src/java/com/amd/aparapi/KernelHelper.java +++ b/test/codegen/src/java/com/amd/aparapi/KernelHelper.java @@ -35,10 +35,10 @@ of EAR). For the most current Country Group listings, or for additional informa under those regulations, please refer to the U.S. Bureau of Industry and Security's website at http://www.bis.doc.gov/. */ -package com.syncleus.aparapi; +package com.aparapi; // contains some things that only tests would use -// but in the com.syncleus.aparapi package for convenience +// but in the com.aparapi package for convenience public class KernelHelper{ // public KernelHelper(Kernel kernel) { diff --git a/test/codegen/src/java/com/amd/aparapi/Source.java b/test/codegen/src/java/com/amd/aparapi/Source.java index 379c5eab..0c8a74a5 100644 --- a/test/codegen/src/java/com/amd/aparapi/Source.java +++ b/test/codegen/src/java/com/amd/aparapi/Source.java @@ -35,7 +35,7 @@ of EAR). For the most current Country Group listings, or for additional informa under those regulations, please refer to the U.S. Bureau of Industry and Security's website at http://www.bis.doc.gov/. */ -package com.syncleus.aparapi; +package com.aparapi; import java.io.BufferedReader; import java.io.File; diff --git a/test/codegen/src/java/com/amd/aparapi/SwingDiff.java b/test/codegen/src/java/com/amd/aparapi/SwingDiff.java index dbc16ad0..25f069b9 100644 --- a/test/codegen/src/java/com/amd/aparapi/SwingDiff.java +++ b/test/codegen/src/java/com/amd/aparapi/SwingDiff.java @@ -35,7 +35,7 @@ of EAR). For the most current Country Group listings, or for additional informa under those regulations, please refer to the U.S. Bureau of Industry and Security's website at http://www.bis.doc.gov/. */ -package com.syncleus.aparapi; +package com.aparapi; import java.awt.BorderLayout; import java.awt.Color; @@ -61,7 +61,7 @@ import javax.swing.text.Style; import javax.swing.text.StyleConstants; import javax.swing.text.StyleContext; -import com.syncleus.aparapi.Diff.DiffResult; +import com.aparapi.Diff.DiffResult; public class SwingDiff{ JFrame frame; diff --git a/test/codegen/src/java/com/amd/aparapi/test/Access2DIntArray.java b/test/codegen/src/java/com/amd/aparapi/test/Access2DIntArray.java index 4b7e2199..1620ae45 100644 --- a/test/codegen/src/java/com/amd/aparapi/test/Access2DIntArray.java +++ b/test/codegen/src/java/com/amd/aparapi/test/Access2DIntArray.java @@ -1,4 +1,4 @@ -package com.syncleus.aparapi.test; +package com.aparapi.test; public class Access2DIntArray{ int[][] ints = new int[1024][]; diff --git a/test/codegen/src/java/com/amd/aparapi/test/AccessBooleanArray.java b/test/codegen/src/java/com/amd/aparapi/test/AccessBooleanArray.java index 1032e15d..64092be0 100644 --- a/test/codegen/src/java/com/amd/aparapi/test/AccessBooleanArray.java +++ b/test/codegen/src/java/com/amd/aparapi/test/AccessBooleanArray.java @@ -1,4 +1,4 @@ -package com.syncleus.aparapi.test; +package com.aparapi.test; public class AccessBooleanArray{ boolean[] ba = new boolean[1024]; diff --git a/test/codegen/src/java/com/amd/aparapi/test/AccessByteArray.java b/test/codegen/src/java/com/amd/aparapi/test/AccessByteArray.java index f29fa8e2..8f843e16 100644 --- a/test/codegen/src/java/com/amd/aparapi/test/AccessByteArray.java +++ b/test/codegen/src/java/com/amd/aparapi/test/AccessByteArray.java @@ -1,4 +1,4 @@ -package com.syncleus.aparapi.test; +package com.aparapi.test; /** * diff --git a/test/codegen/src/java/com/amd/aparapi/test/AccessDoubleArray.java b/test/codegen/src/java/com/amd/aparapi/test/AccessDoubleArray.java index 2298fb21..609ac213 100644 --- a/test/codegen/src/java/com/amd/aparapi/test/AccessDoubleArray.java +++ b/test/codegen/src/java/com/amd/aparapi/test/AccessDoubleArray.java @@ -1,4 +1,4 @@ -package com.syncleus.aparapi.test; +package com.aparapi.test; public class AccessDoubleArray{ double[] doubles = new double[1024]; diff --git a/test/codegen/src/java/com/amd/aparapi/test/AccessFloatArray.java b/test/codegen/src/java/com/amd/aparapi/test/AccessFloatArray.java index 5b7eb173..95242fcd 100644 --- a/test/codegen/src/java/com/amd/aparapi/test/AccessFloatArray.java +++ b/test/codegen/src/java/com/amd/aparapi/test/AccessFloatArray.java @@ -1,4 +1,4 @@ -package com.syncleus.aparapi.test; +package com.aparapi.test; public class AccessFloatArray{ float[] floats = new float[1024]; diff --git a/test/codegen/src/java/com/amd/aparapi/test/AccessIntArray.java b/test/codegen/src/java/com/amd/aparapi/test/AccessIntArray.java index 69985410..27d2e664 100644 --- a/test/codegen/src/java/com/amd/aparapi/test/AccessIntArray.java +++ b/test/codegen/src/java/com/amd/aparapi/test/AccessIntArray.java @@ -1,4 +1,4 @@ -package com.syncleus.aparapi.test; +package com.aparapi.test; public class AccessIntArray{ int[] ints = new int[1024]; diff --git a/test/codegen/src/java/com/amd/aparapi/test/AccessLongArray.java b/test/codegen/src/java/com/amd/aparapi/test/AccessLongArray.java index 1adbcb2a..3c4941e4 100644 --- a/test/codegen/src/java/com/amd/aparapi/test/AccessLongArray.java +++ b/test/codegen/src/java/com/amd/aparapi/test/AccessLongArray.java @@ -1,4 +1,4 @@ -package com.syncleus.aparapi.test; +package com.aparapi.test; public class AccessLongArray{ long[] longs = new long[1024]; diff --git a/test/codegen/src/java/com/amd/aparapi/test/AccessNested2DIntArray.java b/test/codegen/src/java/com/amd/aparapi/test/AccessNested2DIntArray.java index 39a985af..79b70e18 100644 --- a/test/codegen/src/java/com/amd/aparapi/test/AccessNested2DIntArray.java +++ b/test/codegen/src/java/com/amd/aparapi/test/AccessNested2DIntArray.java @@ -1,4 +1,4 @@ -package com.syncleus.aparapi.test; +package com.aparapi.test; public class AccessNested2DIntArray{ int[] indices = new int[1024]; diff --git a/test/codegen/src/java/com/amd/aparapi/test/AccessShortArray.java b/test/codegen/src/java/com/amd/aparapi/test/AccessShortArray.java index 407cfa08..5c11192a 100644 --- a/test/codegen/src/java/com/amd/aparapi/test/AccessShortArray.java +++ b/test/codegen/src/java/com/amd/aparapi/test/AccessShortArray.java @@ -1,4 +1,4 @@ -package com.syncleus.aparapi.test; +package com.aparapi.test; public class AccessShortArray{ short[] shorts = new short[1024]; diff --git a/test/codegen/src/java/com/amd/aparapi/test/AndOrAndPrecedence.java b/test/codegen/src/java/com/amd/aparapi/test/AndOrAndPrecedence.java index d6cfe000..237dff87 100644 --- a/test/codegen/src/java/com/amd/aparapi/test/AndOrAndPrecedence.java +++ b/test/codegen/src/java/com/amd/aparapi/test/AndOrAndPrecedence.java @@ -1,4 +1,4 @@ -package com.syncleus.aparapi.test; +package com.aparapi.test; public class AndOrAndPrecedence{ public void run() { diff --git a/test/codegen/src/java/com/amd/aparapi/test/AndOrPrecedence.java b/test/codegen/src/java/com/amd/aparapi/test/AndOrPrecedence.java index b82ff1e1..037b5c41 100644 --- a/test/codegen/src/java/com/amd/aparapi/test/AndOrPrecedence.java +++ b/test/codegen/src/java/com/amd/aparapi/test/AndOrPrecedence.java @@ -1,4 +1,4 @@ -package com.syncleus.aparapi.test; +package com.aparapi.test; public class AndOrPrecedence{ public void run() { diff --git a/test/codegen/src/java/com/amd/aparapi/test/AndOrPrecedence2.java b/test/codegen/src/java/com/amd/aparapi/test/AndOrPrecedence2.java index 4a023612..4818974f 100644 --- a/test/codegen/src/java/com/amd/aparapi/test/AndOrPrecedence2.java +++ b/test/codegen/src/java/com/amd/aparapi/test/AndOrPrecedence2.java @@ -1,4 +1,4 @@ -package com.syncleus.aparapi.test; +package com.aparapi.test; public class AndOrPrecedence2{ public void run() { diff --git a/test/codegen/src/java/com/amd/aparapi/test/ArbitraryScope.java b/test/codegen/src/java/com/amd/aparapi/test/ArbitraryScope.java index 99b800c8..ab0e684c 100644 --- a/test/codegen/src/java/com/amd/aparapi/test/ArbitraryScope.java +++ b/test/codegen/src/java/com/amd/aparapi/test/ArbitraryScope.java @@ -1,4 +1,4 @@ -package com.syncleus.aparapi.test; +package com.aparapi.test; public class ArbitraryScope{ int width = 1024; diff --git a/test/codegen/src/java/com/amd/aparapi/test/ArbitraryScope2.java b/test/codegen/src/java/com/amd/aparapi/test/ArbitraryScope2.java index 458f7f23..78d9fa40 100644 --- a/test/codegen/src/java/com/amd/aparapi/test/ArbitraryScope2.java +++ b/test/codegen/src/java/com/amd/aparapi/test/ArbitraryScope2.java @@ -1,4 +1,4 @@ -package com.syncleus.aparapi.test; +package com.aparapi.test; public class ArbitraryScope2{ int width = 1024; diff --git a/test/codegen/src/java/com/amd/aparapi/test/ArbitraryScopeSimple.java b/test/codegen/src/java/com/amd/aparapi/test/ArbitraryScopeSimple.java index 33d93d49..9a411251 100644 --- a/test/codegen/src/java/com/amd/aparapi/test/ArbitraryScopeSimple.java +++ b/test/codegen/src/java/com/amd/aparapi/test/ArbitraryScopeSimple.java @@ -1,4 +1,4 @@ -package com.syncleus.aparapi.test; +package com.aparapi.test; public class ArbitraryScopeSimple{ diff --git a/test/codegen/src/java/com/amd/aparapi/test/ArrayTortureIssue35.java b/test/codegen/src/java/com/amd/aparapi/test/ArrayTortureIssue35.java index efa395c2..3eadf9df 100644 --- a/test/codegen/src/java/com/amd/aparapi/test/ArrayTortureIssue35.java +++ b/test/codegen/src/java/com/amd/aparapi/test/ArrayTortureIssue35.java @@ -1,4 +1,4 @@ -package com.syncleus.aparapi.test; +package com.aparapi.test; public class ArrayTortureIssue35{ int[] a = new int[1]; diff --git a/test/codegen/src/java/com/amd/aparapi/test/Assign2DIntArray.java b/test/codegen/src/java/com/amd/aparapi/test/Assign2DIntArray.java index 2d181751..e284483f 100644 --- a/test/codegen/src/java/com/amd/aparapi/test/Assign2DIntArray.java +++ b/test/codegen/src/java/com/amd/aparapi/test/Assign2DIntArray.java @@ -1,4 +1,4 @@ -package com.syncleus.aparapi.test; +package com.aparapi.test; public class Assign2DIntArray{ int[][] ints = new int[1024][]; diff --git a/test/codegen/src/java/com/amd/aparapi/test/AssignAndPassAsParameter.java b/test/codegen/src/java/com/amd/aparapi/test/AssignAndPassAsParameter.java index 94aa6e1e..7ba26604 100644 --- a/test/codegen/src/java/com/amd/aparapi/test/AssignAndPassAsParameter.java +++ b/test/codegen/src/java/com/amd/aparapi/test/AssignAndPassAsParameter.java @@ -1,4 +1,4 @@ -package com.syncleus.aparapi.test; +package com.aparapi.test; public class AssignAndPassAsParameter{ diff --git a/test/codegen/src/java/com/amd/aparapi/test/AssignAndPassAsParameterSimple.java b/test/codegen/src/java/com/amd/aparapi/test/AssignAndPassAsParameterSimple.java index 9c661c1b..c7cfc093 100644 --- a/test/codegen/src/java/com/amd/aparapi/test/AssignAndPassAsParameterSimple.java +++ b/test/codegen/src/java/com/amd/aparapi/test/AssignAndPassAsParameterSimple.java @@ -1,4 +1,4 @@ -package com.syncleus.aparapi.test; +package com.aparapi.test; public class AssignAndPassAsParameterSimple{ diff --git a/test/codegen/src/java/com/amd/aparapi/test/AssignField.java b/test/codegen/src/java/com/amd/aparapi/test/AssignField.java index 445b174e..015bb21e 100644 --- a/test/codegen/src/java/com/amd/aparapi/test/AssignField.java +++ b/test/codegen/src/java/com/amd/aparapi/test/AssignField.java @@ -1,4 +1,4 @@ -package com.syncleus.aparapi.test; +package com.aparapi.test; public class AssignField{ int field = 1024; diff --git a/test/codegen/src/java/com/amd/aparapi/test/Atomic32Pragma.java b/test/codegen/src/java/com/amd/aparapi/test/Atomic32Pragma.java index c46ad1b9..e8961c33 100644 --- a/test/codegen/src/java/com/amd/aparapi/test/Atomic32Pragma.java +++ b/test/codegen/src/java/com/amd/aparapi/test/Atomic32Pragma.java @@ -1,6 +1,6 @@ -package com.syncleus.aparapi.test; +package com.aparapi.test; -import com.syncleus.aparapi.Kernel; +import com.aparapi.Kernel; public class Atomic32Pragma extends Kernel{ diff --git a/test/codegen/src/java/com/amd/aparapi/test/BooleanToggle.java b/test/codegen/src/java/com/amd/aparapi/test/BooleanToggle.java index 586b3931..433bc736 100644 --- a/test/codegen/src/java/com/amd/aparapi/test/BooleanToggle.java +++ b/test/codegen/src/java/com/amd/aparapi/test/BooleanToggle.java @@ -1,4 +1,4 @@ -package com.syncleus.aparapi.test; +package com.aparapi.test; public class BooleanToggle{ public void run() { diff --git a/test/codegen/src/java/com/amd/aparapi/test/Break.java b/test/codegen/src/java/com/amd/aparapi/test/Break.java index 0e247b49..9f1d8921 100644 --- a/test/codegen/src/java/com/amd/aparapi/test/Break.java +++ b/test/codegen/src/java/com/amd/aparapi/test/Break.java @@ -1,4 +1,4 @@ -package com.syncleus.aparapi.test; +package com.aparapi.test; public class Break{ public void run() { diff --git a/test/codegen/src/java/com/amd/aparapi/test/ByteParams.java b/test/codegen/src/java/com/amd/aparapi/test/ByteParams.java index dd9eb4d9..d7480666 100644 --- a/test/codegen/src/java/com/amd/aparapi/test/ByteParams.java +++ b/test/codegen/src/java/com/amd/aparapi/test/ByteParams.java @@ -1,4 +1,4 @@ -package com.syncleus.aparapi.test; +package com.aparapi.test; public class ByteParams{ diff --git a/test/codegen/src/java/com/amd/aparapi/test/ByteParamsSimple.java b/test/codegen/src/java/com/amd/aparapi/test/ByteParamsSimple.java index c840e320..ecff6f21 100644 --- a/test/codegen/src/java/com/amd/aparapi/test/ByteParamsSimple.java +++ b/test/codegen/src/java/com/amd/aparapi/test/ByteParamsSimple.java @@ -1,4 +1,4 @@ -package com.syncleus.aparapi.test; +package com.aparapi.test; public class ByteParamsSimple{ diff --git a/test/codegen/src/java/com/amd/aparapi/test/CallGetPassId.java b/test/codegen/src/java/com/amd/aparapi/test/CallGetPassId.java index 78a26bc6..d78406bc 100644 --- a/test/codegen/src/java/com/amd/aparapi/test/CallGetPassId.java +++ b/test/codegen/src/java/com/amd/aparapi/test/CallGetPassId.java @@ -1,6 +1,6 @@ -package com.syncleus.aparapi.test; +package com.aparapi.test; -import com.syncleus.aparapi.Kernel; +import com.aparapi.Kernel; public class CallGetPassId extends Kernel{ public void run() { diff --git a/test/codegen/src/java/com/amd/aparapi/test/CallObject.java b/test/codegen/src/java/com/amd/aparapi/test/CallObject.java index 4108e269..563ab66c 100644 --- a/test/codegen/src/java/com/amd/aparapi/test/CallObject.java +++ b/test/codegen/src/java/com/amd/aparapi/test/CallObject.java @@ -1,6 +1,6 @@ -package com.syncleus.aparapi.test; +package com.aparapi.test; -import com.syncleus.aparapi.Kernel; +import com.aparapi.Kernel; public class CallObject extends Kernel{ static class Dummy{ diff --git a/test/codegen/src/java/com/amd/aparapi/test/CallObjectStatic.java b/test/codegen/src/java/com/amd/aparapi/test/CallObjectStatic.java index 6074f7ea..44dbac58 100644 --- a/test/codegen/src/java/com/amd/aparapi/test/CallObjectStatic.java +++ b/test/codegen/src/java/com/amd/aparapi/test/CallObjectStatic.java @@ -1,6 +1,6 @@ -package com.syncleus.aparapi.test; +package com.aparapi.test; -import com.syncleus.aparapi.Kernel; +import com.aparapi.Kernel; public class CallObjectStatic extends Kernel{ static class Dummy{ diff --git a/test/codegen/src/java/com/amd/aparapi/test/CallRunSuper.java b/test/codegen/src/java/com/amd/aparapi/test/CallRunSuper.java index 5ca25a03..5e1da01d 100644 --- a/test/codegen/src/java/com/amd/aparapi/test/CallRunSuper.java +++ b/test/codegen/src/java/com/amd/aparapi/test/CallRunSuper.java @@ -1,6 +1,6 @@ -package com.syncleus.aparapi.test; +package com.aparapi.test; -import com.syncleus.aparapi.Kernel; +import com.aparapi.Kernel; class CallRunSuperBase extends Kernel{ @Override public void run() { diff --git a/test/codegen/src/java/com/amd/aparapi/test/CallStaticInAnotherClass.java b/test/codegen/src/java/com/amd/aparapi/test/CallStaticInAnotherClass.java index 038dbe8c..d4763de9 100644 --- a/test/codegen/src/java/com/amd/aparapi/test/CallStaticInAnotherClass.java +++ b/test/codegen/src/java/com/amd/aparapi/test/CallStaticInAnotherClass.java @@ -1,6 +1,6 @@ -package com.syncleus.aparapi.test; +package com.aparapi.test; -import com.syncleus.aparapi.Kernel; +import com.aparapi.Kernel; class AnotherClass{ static public int foo() { diff --git a/test/codegen/src/java/com/amd/aparapi/test/CallSuper.java b/test/codegen/src/java/com/amd/aparapi/test/CallSuper.java index ee2fd2ad..f744311c 100644 --- a/test/codegen/src/java/com/amd/aparapi/test/CallSuper.java +++ b/test/codegen/src/java/com/amd/aparapi/test/CallSuper.java @@ -1,6 +1,6 @@ -package com.syncleus.aparapi.test; +package com.aparapi.test; -import com.syncleus.aparapi.Kernel; +import com.aparapi.Kernel; abstract class CallSuperBase extends Kernel{ int foo(int n) { diff --git a/test/codegen/src/java/com/amd/aparapi/test/CallTwice.java b/test/codegen/src/java/com/amd/aparapi/test/CallTwice.java index f08cc733..5f1f759b 100644 --- a/test/codegen/src/java/com/amd/aparapi/test/CallTwice.java +++ b/test/codegen/src/java/com/amd/aparapi/test/CallTwice.java @@ -1,6 +1,6 @@ -package com.syncleus.aparapi.test; +package com.aparapi.test; -import com.syncleus.aparapi.Kernel; +import com.aparapi.Kernel; public class CallTwice extends Kernel{ diff --git a/test/codegen/src/java/com/amd/aparapi/test/CharArrayField.java b/test/codegen/src/java/com/amd/aparapi/test/CharArrayField.java index 971cd0fa..2accdc80 100644 --- a/test/codegen/src/java/com/amd/aparapi/test/CharArrayField.java +++ b/test/codegen/src/java/com/amd/aparapi/test/CharArrayField.java @@ -1,4 +1,4 @@ -package com.syncleus.aparapi.test; +package com.aparapi.test; public class CharArrayField{ public void run() { diff --git a/test/codegen/src/java/com/amd/aparapi/test/CharAsParameter.java b/test/codegen/src/java/com/amd/aparapi/test/CharAsParameter.java index a16c905c..1f994133 100644 --- a/test/codegen/src/java/com/amd/aparapi/test/CharAsParameter.java +++ b/test/codegen/src/java/com/amd/aparapi/test/CharAsParameter.java @@ -1,4 +1,4 @@ -package com.syncleus.aparapi.test; +package com.aparapi.test; public class CharAsParameter{ diff --git a/test/codegen/src/java/com/amd/aparapi/test/CharType.java b/test/codegen/src/java/com/amd/aparapi/test/CharType.java index fbe9eed6..c4b6004e 100644 --- a/test/codegen/src/java/com/amd/aparapi/test/CharType.java +++ b/test/codegen/src/java/com/amd/aparapi/test/CharType.java @@ -1,6 +1,6 @@ -package com.syncleus.aparapi.test; +package com.aparapi.test; -import com.syncleus.aparapi.Kernel; +import com.aparapi.Kernel; public class CharType extends Kernel{ @Override public void run() { diff --git a/test/codegen/src/java/com/amd/aparapi/test/ClassHasStaticFieldAccess.java b/test/codegen/src/java/com/amd/aparapi/test/ClassHasStaticFieldAccess.java index 715cc0c2..1b2d2034 100644 --- a/test/codegen/src/java/com/amd/aparapi/test/ClassHasStaticFieldAccess.java +++ b/test/codegen/src/java/com/amd/aparapi/test/ClassHasStaticFieldAccess.java @@ -1,4 +1,4 @@ -package com.syncleus.aparapi.test; +package com.aparapi.test; public class ClassHasStaticFieldAccess{ int[] ints = new int[1024]; diff --git a/test/codegen/src/java/com/amd/aparapi/test/ClassHasStaticMethod.java b/test/codegen/src/java/com/amd/aparapi/test/ClassHasStaticMethod.java index 9c86797c..eac1c18f 100644 --- a/test/codegen/src/java/com/amd/aparapi/test/ClassHasStaticMethod.java +++ b/test/codegen/src/java/com/amd/aparapi/test/ClassHasStaticMethod.java @@ -1,4 +1,4 @@ -package com.syncleus.aparapi.test; +package com.aparapi.test; public class ClassHasStaticMethod{ int[] ints = new int[1024]; diff --git a/test/codegen/src/java/com/amd/aparapi/test/ClassHasStaticMethodSimple.java b/test/codegen/src/java/com/amd/aparapi/test/ClassHasStaticMethodSimple.java index 27393870..f66fec5a 100644 --- a/test/codegen/src/java/com/amd/aparapi/test/ClassHasStaticMethodSimple.java +++ b/test/codegen/src/java/com/amd/aparapi/test/ClassHasStaticMethodSimple.java @@ -1,4 +1,4 @@ -package com.syncleus.aparapi.test; +package com.aparapi.test; public class ClassHasStaticMethodSimple{ diff --git a/test/codegen/src/java/com/amd/aparapi/test/CompositeArbitraryScope.java b/test/codegen/src/java/com/amd/aparapi/test/CompositeArbitraryScope.java index 3047f294..fa09371a 100644 --- a/test/codegen/src/java/com/amd/aparapi/test/CompositeArbitraryScope.java +++ b/test/codegen/src/java/com/amd/aparapi/test/CompositeArbitraryScope.java @@ -1,9 +1,9 @@ -package com.syncleus.aparapi.test; +package com.aparapi.test; // this example gave the following error: -/// com.syncleus.aparapi.classtools.writer.CodeGenException: composite COMPOSITE_ARBITRARY_SCOPE +/// com.aparapi.classtools.writer.CodeGenException: composite COMPOSITE_ARBITRARY_SCOPE -import com.syncleus.aparapi.Kernel; +import com.aparapi.Kernel; public class CompositeArbitraryScope extends Kernel{ diff --git a/test/codegen/src/java/com/amd/aparapi/test/ConstantAssignInExpression.java b/test/codegen/src/java/com/amd/aparapi/test/ConstantAssignInExpression.java index b155a01f..51fcfe8f 100644 --- a/test/codegen/src/java/com/amd/aparapi/test/ConstantAssignInExpression.java +++ b/test/codegen/src/java/com/amd/aparapi/test/ConstantAssignInExpression.java @@ -1,4 +1,4 @@ -package com.syncleus.aparapi.test; +package com.aparapi.test; public class ConstantAssignInExpression{ diff --git a/test/codegen/src/java/com/amd/aparapi/test/Continue.java b/test/codegen/src/java/com/amd/aparapi/test/Continue.java index e997360a..81412370 100644 --- a/test/codegen/src/java/com/amd/aparapi/test/Continue.java +++ b/test/codegen/src/java/com/amd/aparapi/test/Continue.java @@ -1,4 +1,4 @@ -package com.syncleus.aparapi.test; +package com.aparapi.test; public class Continue{ public void run() { diff --git a/test/codegen/src/java/com/amd/aparapi/test/ContinueTorture.java b/test/codegen/src/java/com/amd/aparapi/test/ContinueTorture.java index adbe38e4..d562bce6 100644 --- a/test/codegen/src/java/com/amd/aparapi/test/ContinueTorture.java +++ b/test/codegen/src/java/com/amd/aparapi/test/ContinueTorture.java @@ -1,4 +1,4 @@ -package com.syncleus.aparapi.test; +package com.aparapi.test; public class ContinueTorture{ diff --git a/test/codegen/src/java/com/amd/aparapi/test/DirectRecursion.java b/test/codegen/src/java/com/amd/aparapi/test/DirectRecursion.java index a0014dd1..c89589aa 100644 --- a/test/codegen/src/java/com/amd/aparapi/test/DirectRecursion.java +++ b/test/codegen/src/java/com/amd/aparapi/test/DirectRecursion.java @@ -1,6 +1,6 @@ -package com.syncleus.aparapi.test; +package com.aparapi.test; -import com.syncleus.aparapi.Kernel; +import com.aparapi.Kernel; public class DirectRecursion extends Kernel{ diff --git a/test/codegen/src/java/com/amd/aparapi/test/DoWhile.java b/test/codegen/src/java/com/amd/aparapi/test/DoWhile.java index 8c54fb1d..b4421b91 100644 --- a/test/codegen/src/java/com/amd/aparapi/test/DoWhile.java +++ b/test/codegen/src/java/com/amd/aparapi/test/DoWhile.java @@ -1,4 +1,4 @@ -package com.syncleus.aparapi.test; +package com.aparapi.test; public class DoWhile{ public void run() { diff --git a/test/codegen/src/java/com/amd/aparapi/test/Drem.java b/test/codegen/src/java/com/amd/aparapi/test/Drem.java index 21318280..dc71c046 100644 --- a/test/codegen/src/java/com/amd/aparapi/test/Drem.java +++ b/test/codegen/src/java/com/amd/aparapi/test/Drem.java @@ -1,4 +1,4 @@ -package com.syncleus.aparapi.test; +package com.aparapi.test; public class Drem{ public void run() { diff --git a/test/codegen/src/java/com/amd/aparapi/test/EarlyReturn.java b/test/codegen/src/java/com/amd/aparapi/test/EarlyReturn.java index aeb37123..ba4e1dc0 100644 --- a/test/codegen/src/java/com/amd/aparapi/test/EarlyReturn.java +++ b/test/codegen/src/java/com/amd/aparapi/test/EarlyReturn.java @@ -1,4 +1,4 @@ -package com.syncleus.aparapi.test; +package com.aparapi.test; public class EarlyReturn{ public void run() { diff --git a/test/codegen/src/java/com/amd/aparapi/test/EmptyWhileWithInc.java b/test/codegen/src/java/com/amd/aparapi/test/EmptyWhileWithInc.java index 458f8a6f..22e6819f 100644 --- a/test/codegen/src/java/com/amd/aparapi/test/EmptyWhileWithInc.java +++ b/test/codegen/src/java/com/amd/aparapi/test/EmptyWhileWithInc.java @@ -1,4 +1,4 @@ -package com.syncleus.aparapi.test; +package com.aparapi.test; public class EmptyWhileWithInc{ public void run() { diff --git a/test/codegen/src/java/com/amd/aparapi/test/EntrypointRecursion.java b/test/codegen/src/java/com/amd/aparapi/test/EntrypointRecursion.java index dee44b57..e506463c 100644 --- a/test/codegen/src/java/com/amd/aparapi/test/EntrypointRecursion.java +++ b/test/codegen/src/java/com/amd/aparapi/test/EntrypointRecursion.java @@ -1,6 +1,6 @@ -package com.syncleus.aparapi.test; +package com.aparapi.test; -import com.syncleus.aparapi.Kernel; +import com.aparapi.Kernel; public class EntrypointRecursion extends Kernel{ diff --git a/test/codegen/src/java/com/amd/aparapi/test/Ex.java b/test/codegen/src/java/com/amd/aparapi/test/Ex.java index 0da21bc5..f40dad41 100644 --- a/test/codegen/src/java/com/amd/aparapi/test/Ex.java +++ b/test/codegen/src/java/com/amd/aparapi/test/Ex.java @@ -1,4 +1,4 @@ -package com.syncleus.aparapi.test; +package com.aparapi.test; public class Ex{ public void run() { diff --git a/test/codegen/src/java/com/amd/aparapi/test/FirstAssignInExpression.java b/test/codegen/src/java/com/amd/aparapi/test/FirstAssignInExpression.java index 78a26726..1f40cb4c 100644 --- a/test/codegen/src/java/com/amd/aparapi/test/FirstAssignInExpression.java +++ b/test/codegen/src/java/com/amd/aparapi/test/FirstAssignInExpression.java @@ -1,4 +1,4 @@ -package com.syncleus.aparapi.test; +package com.aparapi.test; public class FirstAssignInExpression{ diff --git a/test/codegen/src/java/com/amd/aparapi/test/FirstAssignInExpression2.java b/test/codegen/src/java/com/amd/aparapi/test/FirstAssignInExpression2.java index 0c03c848..ce3ed6cc 100644 --- a/test/codegen/src/java/com/amd/aparapi/test/FirstAssignInExpression2.java +++ b/test/codegen/src/java/com/amd/aparapi/test/FirstAssignInExpression2.java @@ -1,4 +1,4 @@ -package com.syncleus.aparapi.test; +package com.aparapi.test; public class FirstAssignInExpression2{ diff --git a/test/codegen/src/java/com/amd/aparapi/test/FloatParams.java b/test/codegen/src/java/com/amd/aparapi/test/FloatParams.java index 2f02a334..308ea050 100644 --- a/test/codegen/src/java/com/amd/aparapi/test/FloatParams.java +++ b/test/codegen/src/java/com/amd/aparapi/test/FloatParams.java @@ -1,4 +1,4 @@ -package com.syncleus.aparapi.test; +package com.aparapi.test; public class FloatParams{ diff --git a/test/codegen/src/java/com/amd/aparapi/test/FloatParamsSimple.java b/test/codegen/src/java/com/amd/aparapi/test/FloatParamsSimple.java index 561272f4..c032eae0 100644 --- a/test/codegen/src/java/com/amd/aparapi/test/FloatParamsSimple.java +++ b/test/codegen/src/java/com/amd/aparapi/test/FloatParamsSimple.java @@ -1,4 +1,4 @@ -package com.syncleus.aparapi.test; +package com.aparapi.test; public class FloatParamsSimple{ diff --git a/test/codegen/src/java/com/amd/aparapi/test/For.java b/test/codegen/src/java/com/amd/aparapi/test/For.java index cfb31e33..5a5d0002 100644 --- a/test/codegen/src/java/com/amd/aparapi/test/For.java +++ b/test/codegen/src/java/com/amd/aparapi/test/For.java @@ -1,4 +1,4 @@ -package com.syncleus.aparapi.test; +package com.aparapi.test; public class For{ public void run() { diff --git a/test/codegen/src/java/com/amd/aparapi/test/ForAnd.java b/test/codegen/src/java/com/amd/aparapi/test/ForAnd.java index 44278b1a..dc1d3067 100644 --- a/test/codegen/src/java/com/amd/aparapi/test/ForAnd.java +++ b/test/codegen/src/java/com/amd/aparapi/test/ForAnd.java @@ -1,4 +1,4 @@ -package com.syncleus.aparapi.test; +package com.aparapi.test; public class ForAnd{ public void run() { diff --git a/test/codegen/src/java/com/amd/aparapi/test/ForAndMandel.java b/test/codegen/src/java/com/amd/aparapi/test/ForAndMandel.java index 3f7c3254..c8451072 100644 --- a/test/codegen/src/java/com/amd/aparapi/test/ForAndMandel.java +++ b/test/codegen/src/java/com/amd/aparapi/test/ForAndMandel.java @@ -1,4 +1,4 @@ -package com.syncleus.aparapi.test; +package com.aparapi.test; public class ForAndMandel{ int width = 1024; diff --git a/test/codegen/src/java/com/amd/aparapi/test/ForAndMandelNoInitialize.java b/test/codegen/src/java/com/amd/aparapi/test/ForAndMandelNoInitialize.java index d4b63f9e..179bf51d 100644 --- a/test/codegen/src/java/com/amd/aparapi/test/ForAndMandelNoInitialize.java +++ b/test/codegen/src/java/com/amd/aparapi/test/ForAndMandelNoInitialize.java @@ -1,4 +1,4 @@ -package com.syncleus.aparapi.test; +package com.aparapi.test; public class ForAndMandelNoInitialize{ int width = 1024; diff --git a/test/codegen/src/java/com/amd/aparapi/test/ForAsFirst.java b/test/codegen/src/java/com/amd/aparapi/test/ForAsFirst.java index ec13ed5e..1e0dd6e4 100644 --- a/test/codegen/src/java/com/amd/aparapi/test/ForAsFirst.java +++ b/test/codegen/src/java/com/amd/aparapi/test/ForAsFirst.java @@ -1,4 +1,4 @@ -package com.syncleus.aparapi.test; +package com.aparapi.test; public class ForAsFirst{ diff --git a/test/codegen/src/java/com/amd/aparapi/test/ForBooleanToggle.java b/test/codegen/src/java/com/amd/aparapi/test/ForBooleanToggle.java index 18620ad9..14be5b3a 100644 --- a/test/codegen/src/java/com/amd/aparapi/test/ForBooleanToggle.java +++ b/test/codegen/src/java/com/amd/aparapi/test/ForBooleanToggle.java @@ -1,4 +1,4 @@ -package com.syncleus.aparapi.test; +package com.aparapi.test; public class ForBooleanToggle{ public void run() { diff --git a/test/codegen/src/java/com/amd/aparapi/test/ForBreak.java b/test/codegen/src/java/com/amd/aparapi/test/ForBreak.java index 0f729f23..d89d71a2 100644 --- a/test/codegen/src/java/com/amd/aparapi/test/ForBreak.java +++ b/test/codegen/src/java/com/amd/aparapi/test/ForBreak.java @@ -1,4 +1,4 @@ -package com.syncleus.aparapi.test; +package com.aparapi.test; public class ForBreak{ public void run() { diff --git a/test/codegen/src/java/com/amd/aparapi/test/ForEach.java b/test/codegen/src/java/com/amd/aparapi/test/ForEach.java index aac4887e..a84a78bc 100644 --- a/test/codegen/src/java/com/amd/aparapi/test/ForEach.java +++ b/test/codegen/src/java/com/amd/aparapi/test/ForEach.java @@ -1,4 +1,4 @@ -package com.syncleus.aparapi.test; +package com.aparapi.test; public class ForEach{ diff --git a/test/codegen/src/java/com/amd/aparapi/test/ForIf.java b/test/codegen/src/java/com/amd/aparapi/test/ForIf.java index 41d41711..75f41172 100644 --- a/test/codegen/src/java/com/amd/aparapi/test/ForIf.java +++ b/test/codegen/src/java/com/amd/aparapi/test/ForIf.java @@ -1,4 +1,4 @@ -package com.syncleus.aparapi.test; +package com.aparapi.test; public class ForIf{ public void run() { diff --git a/test/codegen/src/java/com/amd/aparapi/test/ForIfMandel.java b/test/codegen/src/java/com/amd/aparapi/test/ForIfMandel.java index f31e132b..894bca83 100644 --- a/test/codegen/src/java/com/amd/aparapi/test/ForIfMandel.java +++ b/test/codegen/src/java/com/amd/aparapi/test/ForIfMandel.java @@ -1,4 +1,4 @@ -package com.syncleus.aparapi.test; +package com.aparapi.test; public class ForIfMandel{ int width = 1024; diff --git a/test/codegen/src/java/com/amd/aparapi/test/Frem.java b/test/codegen/src/java/com/amd/aparapi/test/Frem.java index d2a7c0de..c7a03284 100644 --- a/test/codegen/src/java/com/amd/aparapi/test/Frem.java +++ b/test/codegen/src/java/com/amd/aparapi/test/Frem.java @@ -1,4 +1,4 @@ -package com.syncleus.aparapi.test; +package com.aparapi.test; public class Frem{ public void run() { diff --git a/test/codegen/src/java/com/amd/aparapi/test/IEEERemainderDouble.java b/test/codegen/src/java/com/amd/aparapi/test/IEEERemainderDouble.java index e5fd68aa..e410f0d2 100644 --- a/test/codegen/src/java/com/amd/aparapi/test/IEEERemainderDouble.java +++ b/test/codegen/src/java/com/amd/aparapi/test/IEEERemainderDouble.java @@ -1,6 +1,6 @@ -package com.syncleus.aparapi.test; +package com.aparapi.test; -import com.syncleus.aparapi.Kernel; +import com.aparapi.Kernel; public class IEEERemainderDouble extends Kernel{ public void run() { diff --git a/test/codegen/src/java/com/amd/aparapi/test/IEEERemainderFloat.java b/test/codegen/src/java/com/amd/aparapi/test/IEEERemainderFloat.java index 0cbe702a..4f77849b 100644 --- a/test/codegen/src/java/com/amd/aparapi/test/IEEERemainderFloat.java +++ b/test/codegen/src/java/com/amd/aparapi/test/IEEERemainderFloat.java @@ -1,6 +1,6 @@ -package com.syncleus.aparapi.test; +package com.aparapi.test; -import com.syncleus.aparapi.Kernel; +import com.aparapi.Kernel; public class IEEERemainderFloat extends Kernel{ public void run() { diff --git a/test/codegen/src/java/com/amd/aparapi/test/If.java b/test/codegen/src/java/com/amd/aparapi/test/If.java index e40d5168..752e3b8e 100644 --- a/test/codegen/src/java/com/amd/aparapi/test/If.java +++ b/test/codegen/src/java/com/amd/aparapi/test/If.java @@ -1,4 +1,4 @@ -package com.syncleus.aparapi.test; +package com.aparapi.test; public class If{ public void run() { diff --git a/test/codegen/src/java/com/amd/aparapi/test/IfAnd.java b/test/codegen/src/java/com/amd/aparapi/test/IfAnd.java index 9bb07972..0348095e 100644 --- a/test/codegen/src/java/com/amd/aparapi/test/IfAnd.java +++ b/test/codegen/src/java/com/amd/aparapi/test/IfAnd.java @@ -1,4 +1,4 @@ -package com.syncleus.aparapi.test; +package com.aparapi.test; public class IfAnd{ public void run() { diff --git a/test/codegen/src/java/com/amd/aparapi/test/IfAndAnd.java b/test/codegen/src/java/com/amd/aparapi/test/IfAndAnd.java index 9001ef9b..093b91f9 100644 --- a/test/codegen/src/java/com/amd/aparapi/test/IfAndAnd.java +++ b/test/codegen/src/java/com/amd/aparapi/test/IfAndAnd.java @@ -1,4 +1,4 @@ -package com.syncleus.aparapi.test; +package com.aparapi.test; public class IfAndAnd{ public void run() { diff --git a/test/codegen/src/java/com/amd/aparapi/test/IfAndAndAnd.java b/test/codegen/src/java/com/amd/aparapi/test/IfAndAndAnd.java index 8d806d64..a517357d 100644 --- a/test/codegen/src/java/com/amd/aparapi/test/IfAndAndAnd.java +++ b/test/codegen/src/java/com/amd/aparapi/test/IfAndAndAnd.java @@ -1,4 +1,4 @@ -package com.syncleus.aparapi.test; +package com.aparapi.test; public class IfAndAndAnd{ public void run() { diff --git a/test/codegen/src/java/com/amd/aparapi/test/IfAndOrAnd.java b/test/codegen/src/java/com/amd/aparapi/test/IfAndOrAnd.java index 5ab566cf..e9935cb1 100644 --- a/test/codegen/src/java/com/amd/aparapi/test/IfAndOrAnd.java +++ b/test/codegen/src/java/com/amd/aparapi/test/IfAndOrAnd.java @@ -1,4 +1,4 @@ -package com.syncleus.aparapi.test; +package com.aparapi.test; public class IfAndOrAnd{ public void run() { diff --git a/test/codegen/src/java/com/amd/aparapi/test/IfBooleanAndAndAnd.java b/test/codegen/src/java/com/amd/aparapi/test/IfBooleanAndAndAnd.java index 27d5b2ca..8c47ed32 100644 --- a/test/codegen/src/java/com/amd/aparapi/test/IfBooleanAndAndAnd.java +++ b/test/codegen/src/java/com/amd/aparapi/test/IfBooleanAndAndAnd.java @@ -1,4 +1,4 @@ -package com.syncleus.aparapi.test; +package com.aparapi.test; public class IfBooleanAndAndAnd{ public void run() { diff --git a/test/codegen/src/java/com/amd/aparapi/test/IfBooleanAndAndOr.java b/test/codegen/src/java/com/amd/aparapi/test/IfBooleanAndAndOr.java index 6e5b45ed..d599f136 100644 --- a/test/codegen/src/java/com/amd/aparapi/test/IfBooleanAndAndOr.java +++ b/test/codegen/src/java/com/amd/aparapi/test/IfBooleanAndAndOr.java @@ -1,4 +1,4 @@ -package com.syncleus.aparapi.test; +package com.aparapi.test; public class IfBooleanAndAndOr{ public void run() { diff --git a/test/codegen/src/java/com/amd/aparapi/test/IfBooleanAndOrAnd.java b/test/codegen/src/java/com/amd/aparapi/test/IfBooleanAndOrAnd.java index 9bcf2b47..bf23115a 100644 --- a/test/codegen/src/java/com/amd/aparapi/test/IfBooleanAndOrAnd.java +++ b/test/codegen/src/java/com/amd/aparapi/test/IfBooleanAndOrAnd.java @@ -1,4 +1,4 @@ -package com.syncleus.aparapi.test; +package com.aparapi.test; public class IfBooleanAndOrAnd{ public void run() { diff --git a/test/codegen/src/java/com/amd/aparapi/test/IfBooleanAndOrOr.java b/test/codegen/src/java/com/amd/aparapi/test/IfBooleanAndOrOr.java index e7d4a907..c5099965 100644 --- a/test/codegen/src/java/com/amd/aparapi/test/IfBooleanAndOrOr.java +++ b/test/codegen/src/java/com/amd/aparapi/test/IfBooleanAndOrOr.java @@ -1,4 +1,4 @@ -package com.syncleus.aparapi.test; +package com.aparapi.test; public class IfBooleanAndOrOr{ public void run() { diff --git a/test/codegen/src/java/com/amd/aparapi/test/IfBooleanOrAndAnd.java b/test/codegen/src/java/com/amd/aparapi/test/IfBooleanOrAndAnd.java index 57d8caf3..379d978b 100644 --- a/test/codegen/src/java/com/amd/aparapi/test/IfBooleanOrAndAnd.java +++ b/test/codegen/src/java/com/amd/aparapi/test/IfBooleanOrAndAnd.java @@ -1,4 +1,4 @@ -package com.syncleus.aparapi.test; +package com.aparapi.test; public class IfBooleanOrAndAnd{ public void run() { diff --git a/test/codegen/src/java/com/amd/aparapi/test/IfBooleanOrAndOr.java b/test/codegen/src/java/com/amd/aparapi/test/IfBooleanOrAndOr.java index 20f21de6..fcfa06fb 100644 --- a/test/codegen/src/java/com/amd/aparapi/test/IfBooleanOrAndOr.java +++ b/test/codegen/src/java/com/amd/aparapi/test/IfBooleanOrAndOr.java @@ -1,4 +1,4 @@ -package com.syncleus.aparapi.test; +package com.aparapi.test; public class IfBooleanOrAndOr{ public void run() { diff --git a/test/codegen/src/java/com/amd/aparapi/test/IfBooleanOrOrAnd.java b/test/codegen/src/java/com/amd/aparapi/test/IfBooleanOrOrAnd.java index fecb00b4..f08acea6 100644 --- a/test/codegen/src/java/com/amd/aparapi/test/IfBooleanOrOrAnd.java +++ b/test/codegen/src/java/com/amd/aparapi/test/IfBooleanOrOrAnd.java @@ -1,4 +1,4 @@ -package com.syncleus.aparapi.test; +package com.aparapi.test; public class IfBooleanOrOrAnd{ public void run() { diff --git a/test/codegen/src/java/com/amd/aparapi/test/IfBooleanOrOrOr.java b/test/codegen/src/java/com/amd/aparapi/test/IfBooleanOrOrOr.java index 280cac6d..08d39929 100644 --- a/test/codegen/src/java/com/amd/aparapi/test/IfBooleanOrOrOr.java +++ b/test/codegen/src/java/com/amd/aparapi/test/IfBooleanOrOrOr.java @@ -1,4 +1,4 @@ -package com.syncleus.aparapi.test; +package com.aparapi.test; public class IfBooleanOrOrOr{ public void run() { diff --git a/test/codegen/src/java/com/amd/aparapi/test/IfElse.java b/test/codegen/src/java/com/amd/aparapi/test/IfElse.java index 3d10170c..8b32a20f 100644 --- a/test/codegen/src/java/com/amd/aparapi/test/IfElse.java +++ b/test/codegen/src/java/com/amd/aparapi/test/IfElse.java @@ -1,4 +1,4 @@ -package com.syncleus.aparapi.test; +package com.aparapi.test; public class IfElse{ public void run() { diff --git a/test/codegen/src/java/com/amd/aparapi/test/IfElseAnd.java b/test/codegen/src/java/com/amd/aparapi/test/IfElseAnd.java index 3cfdc736..9a4da817 100644 --- a/test/codegen/src/java/com/amd/aparapi/test/IfElseAnd.java +++ b/test/codegen/src/java/com/amd/aparapi/test/IfElseAnd.java @@ -1,4 +1,4 @@ -package com.syncleus.aparapi.test; +package com.aparapi.test; public class IfElseAnd{ public void run() { diff --git a/test/codegen/src/java/com/amd/aparapi/test/IfElseAndAndAnd.java b/test/codegen/src/java/com/amd/aparapi/test/IfElseAndAndAnd.java index c9fda1a9..d72e5f03 100644 --- a/test/codegen/src/java/com/amd/aparapi/test/IfElseAndAndAnd.java +++ b/test/codegen/src/java/com/amd/aparapi/test/IfElseAndAndAnd.java @@ -1,4 +1,4 @@ -package com.syncleus.aparapi.test; +package com.aparapi.test; public class IfElseAndAndAnd{ public void run() { diff --git a/test/codegen/src/java/com/amd/aparapi/test/IfElseIfElseIfElse.java b/test/codegen/src/java/com/amd/aparapi/test/IfElseIfElseIfElse.java index b86ccb47..354706d6 100644 --- a/test/codegen/src/java/com/amd/aparapi/test/IfElseIfElseIfElse.java +++ b/test/codegen/src/java/com/amd/aparapi/test/IfElseIfElseIfElse.java @@ -1,4 +1,4 @@ -package com.syncleus.aparapi.test; +package com.aparapi.test; public class IfElseIfElseIfElse{ /* diff --git a/test/codegen/src/java/com/amd/aparapi/test/IfElseNot__OrOr_And_.java b/test/codegen/src/java/com/amd/aparapi/test/IfElseNot__OrOr_And_.java index eb3ca863..14b58b6e 100644 --- a/test/codegen/src/java/com/amd/aparapi/test/IfElseNot__OrOr_And_.java +++ b/test/codegen/src/java/com/amd/aparapi/test/IfElseNot__OrOr_And_.java @@ -1,4 +1,4 @@ -package com.syncleus.aparapi.test; +package com.aparapi.test; public class IfElseNot__OrOr_And_{ public void run() { diff --git a/test/codegen/src/java/com/amd/aparapi/test/IfElseOrOrAnd.java b/test/codegen/src/java/com/amd/aparapi/test/IfElseOrOrAnd.java index 69f3b558..ceccfbfa 100644 --- a/test/codegen/src/java/com/amd/aparapi/test/IfElseOrOrAnd.java +++ b/test/codegen/src/java/com/amd/aparapi/test/IfElseOrOrAnd.java @@ -1,4 +1,4 @@ -package com.syncleus.aparapi.test; +package com.aparapi.test; public class IfElseOrOrAnd{ public void run() { diff --git a/test/codegen/src/java/com/amd/aparapi/test/IfElseOrOrOr.java b/test/codegen/src/java/com/amd/aparapi/test/IfElseOrOrOr.java index ee108e25..51d46360 100644 --- a/test/codegen/src/java/com/amd/aparapi/test/IfElseOrOrOr.java +++ b/test/codegen/src/java/com/amd/aparapi/test/IfElseOrOrOr.java @@ -1,4 +1,4 @@ -package com.syncleus.aparapi.test; +package com.aparapi.test; public class IfElseOrOrOr{ public void run() { diff --git a/test/codegen/src/java/com/amd/aparapi/test/IfElse_And_Or_And.java b/test/codegen/src/java/com/amd/aparapi/test/IfElse_And_Or_And.java index c76aa160..6ea9e269 100644 --- a/test/codegen/src/java/com/amd/aparapi/test/IfElse_And_Or_And.java +++ b/test/codegen/src/java/com/amd/aparapi/test/IfElse_And_Or_And.java @@ -1,4 +1,4 @@ -package com.syncleus.aparapi.test; +package com.aparapi.test; public class IfElse_And_Or_And{ public void run() { diff --git a/test/codegen/src/java/com/amd/aparapi/test/IfElse_OrOr_And.java b/test/codegen/src/java/com/amd/aparapi/test/IfElse_OrOr_And.java index df342641..2f63e57f 100644 --- a/test/codegen/src/java/com/amd/aparapi/test/IfElse_OrOr_And.java +++ b/test/codegen/src/java/com/amd/aparapi/test/IfElse_OrOr_And.java @@ -1,4 +1,4 @@ -package com.syncleus.aparapi.test; +package com.aparapi.test; public class IfElse_OrOr_And{ public void run() { diff --git a/test/codegen/src/java/com/amd/aparapi/test/IfElse_Or_And_Or.java b/test/codegen/src/java/com/amd/aparapi/test/IfElse_Or_And_Or.java index 3a151cdf..0f8b1dd8 100644 --- a/test/codegen/src/java/com/amd/aparapi/test/IfElse_Or_And_Or.java +++ b/test/codegen/src/java/com/amd/aparapi/test/IfElse_Or_And_Or.java @@ -1,4 +1,4 @@ -package com.syncleus.aparapi.test; +package com.aparapi.test; public class IfElse_Or_And_Or{ public void run() { diff --git a/test/codegen/src/java/com/amd/aparapi/test/IfOr.java b/test/codegen/src/java/com/amd/aparapi/test/IfOr.java index 51055273..13f97d7e 100644 --- a/test/codegen/src/java/com/amd/aparapi/test/IfOr.java +++ b/test/codegen/src/java/com/amd/aparapi/test/IfOr.java @@ -1,4 +1,4 @@ -package com.syncleus.aparapi.test; +package com.aparapi.test; public class IfOr{ public void run() { diff --git a/test/codegen/src/java/com/amd/aparapi/test/IfOrAndOr.java b/test/codegen/src/java/com/amd/aparapi/test/IfOrAndOr.java index 550e1f95..52f59e94 100644 --- a/test/codegen/src/java/com/amd/aparapi/test/IfOrAndOr.java +++ b/test/codegen/src/java/com/amd/aparapi/test/IfOrAndOr.java @@ -1,4 +1,4 @@ -package com.syncleus.aparapi.test; +package com.aparapi.test; public class IfOrAndOr{ public void run() { diff --git a/test/codegen/src/java/com/amd/aparapi/test/IfOrOr.java b/test/codegen/src/java/com/amd/aparapi/test/IfOrOr.java index d7e73fa7..203a328e 100644 --- a/test/codegen/src/java/com/amd/aparapi/test/IfOrOr.java +++ b/test/codegen/src/java/com/amd/aparapi/test/IfOrOr.java @@ -1,4 +1,4 @@ -package com.syncleus.aparapi.test; +package com.aparapi.test; public class IfOrOr{ public void run() { diff --git a/test/codegen/src/java/com/amd/aparapi/test/IfOrOrAnd.java b/test/codegen/src/java/com/amd/aparapi/test/IfOrOrAnd.java index 54e5cc60..cef7db13 100644 --- a/test/codegen/src/java/com/amd/aparapi/test/IfOrOrAnd.java +++ b/test/codegen/src/java/com/amd/aparapi/test/IfOrOrAnd.java @@ -1,4 +1,4 @@ -package com.syncleus.aparapi.test; +package com.aparapi.test; public class IfOrOrAnd{ public void run() { diff --git a/test/codegen/src/java/com/amd/aparapi/test/IfOrOrOr.java b/test/codegen/src/java/com/amd/aparapi/test/IfOrOrOr.java index 194defeb..e288b4ca 100644 --- a/test/codegen/src/java/com/amd/aparapi/test/IfOrOrOr.java +++ b/test/codegen/src/java/com/amd/aparapi/test/IfOrOrOr.java @@ -1,4 +1,4 @@ -package com.syncleus.aparapi.test; +package com.aparapi.test; public class IfOrOrOr{ public void run() { diff --git a/test/codegen/src/java/com/amd/aparapi/test/If_IfElseIfElseElse_Else.java b/test/codegen/src/java/com/amd/aparapi/test/If_IfElseIfElseElse_Else.java index b558f4ea..ec7a9fa4 100644 --- a/test/codegen/src/java/com/amd/aparapi/test/If_IfElseIfElseElse_Else.java +++ b/test/codegen/src/java/com/amd/aparapi/test/If_IfElseIfElseElse_Else.java @@ -1,4 +1,4 @@ -package com.syncleus.aparapi.test; +package com.aparapi.test; public class If_IfElseIfElseElse_Else{ public void run() { diff --git a/test/codegen/src/java/com/amd/aparapi/test/If_IfElse_Else.java b/test/codegen/src/java/com/amd/aparapi/test/If_IfElse_Else.java index 0a9cb86b..4f9fa38d 100644 --- a/test/codegen/src/java/com/amd/aparapi/test/If_IfElse_Else.java +++ b/test/codegen/src/java/com/amd/aparapi/test/If_IfElse_Else.java @@ -1,4 +1,4 @@ -package com.syncleus.aparapi.test; +package com.aparapi.test; public class If_IfElse_Else{ public void run() { diff --git a/test/codegen/src/java/com/amd/aparapi/test/If_IfElse_Else_IfElse_.java b/test/codegen/src/java/com/amd/aparapi/test/If_IfElse_Else_IfElse_.java index 6ec9dd1f..90cb6461 100644 --- a/test/codegen/src/java/com/amd/aparapi/test/If_IfElse_Else_IfElse_.java +++ b/test/codegen/src/java/com/amd/aparapi/test/If_IfElse_Else_IfElse_.java @@ -1,4 +1,4 @@ -package com.syncleus.aparapi.test; +package com.aparapi.test; public class If_IfElse_Else_IfElse_{ /* diff --git a/test/codegen/src/java/com/amd/aparapi/test/If_If_Else.java b/test/codegen/src/java/com/amd/aparapi/test/If_If_Else.java index 0770db0a..2c692f9b 100644 --- a/test/codegen/src/java/com/amd/aparapi/test/If_If_Else.java +++ b/test/codegen/src/java/com/amd/aparapi/test/If_If_Else.java @@ -1,4 +1,4 @@ -package com.syncleus.aparapi.test; +package com.aparapi.test; public class If_If_Else{ /* diff --git a/test/codegen/src/java/com/amd/aparapi/test/If_If_Else2.java b/test/codegen/src/java/com/amd/aparapi/test/If_If_Else2.java index 49f8bf45..b107d347 100644 --- a/test/codegen/src/java/com/amd/aparapi/test/If_If_Else2.java +++ b/test/codegen/src/java/com/amd/aparapi/test/If_If_Else2.java @@ -1,4 +1,4 @@ -package com.syncleus.aparapi.test; +package com.aparapi.test; public class If_If_Else2{ public void run() { diff --git a/test/codegen/src/java/com/amd/aparapi/test/If_If_Else_If_.java b/test/codegen/src/java/com/amd/aparapi/test/If_If_Else_If_.java index 3ea6b21a..447b9a73 100644 --- a/test/codegen/src/java/com/amd/aparapi/test/If_If_Else_If_.java +++ b/test/codegen/src/java/com/amd/aparapi/test/If_If_Else_If_.java @@ -1,4 +1,4 @@ -package com.syncleus.aparapi.test; +package com.aparapi.test; public class If_If_Else_If_{ /* diff --git a/test/codegen/src/java/com/amd/aparapi/test/If_OrOr_And.java b/test/codegen/src/java/com/amd/aparapi/test/If_OrOr_And.java index ce9210bd..26bc03af 100644 --- a/test/codegen/src/java/com/amd/aparapi/test/If_OrOr_And.java +++ b/test/codegen/src/java/com/amd/aparapi/test/If_OrOr_And.java @@ -1,4 +1,4 @@ -package com.syncleus.aparapi.test; +package com.aparapi.test; public class If_OrOr_And{ public void run() { diff --git a/test/codegen/src/java/com/amd/aparapi/test/If_While_Else.java b/test/codegen/src/java/com/amd/aparapi/test/If_While_Else.java index a766c76d..c5ae2488 100644 --- a/test/codegen/src/java/com/amd/aparapi/test/If_While_Else.java +++ b/test/codegen/src/java/com/amd/aparapi/test/If_While_Else.java @@ -1,4 +1,4 @@ -package com.syncleus.aparapi.test; +package com.aparapi.test; public class If_While_Else{ public void run() { diff --git a/test/codegen/src/java/com/amd/aparapi/test/If_While_Else_While.java b/test/codegen/src/java/com/amd/aparapi/test/If_While_Else_While.java index 6bb02914..d3422e03 100644 --- a/test/codegen/src/java/com/amd/aparapi/test/If_While_Else_While.java +++ b/test/codegen/src/java/com/amd/aparapi/test/If_While_Else_While.java @@ -1,4 +1,4 @@ -package com.syncleus.aparapi.test; +package com.aparapi.test; public class If_While_Else_While{ public void run() { diff --git a/test/codegen/src/java/com/amd/aparapi/test/ImplementsInterface.java b/test/codegen/src/java/com/amd/aparapi/test/ImplementsInterface.java index b6efc40e..f9c709d8 100644 --- a/test/codegen/src/java/com/amd/aparapi/test/ImplementsInterface.java +++ b/test/codegen/src/java/com/amd/aparapi/test/ImplementsInterface.java @@ -1,6 +1,6 @@ -package com.syncleus.aparapi.test; +package com.aparapi.test; -import com.syncleus.aparapi.Kernel; +import com.aparapi.Kernel; interface IFoo{ public int bar(int n); diff --git a/test/codegen/src/java/com/amd/aparapi/test/IncArrayArgContent.java b/test/codegen/src/java/com/amd/aparapi/test/IncArrayArgContent.java index 41ff198a..5edca7d5 100644 --- a/test/codegen/src/java/com/amd/aparapi/test/IncArrayArgContent.java +++ b/test/codegen/src/java/com/amd/aparapi/test/IncArrayArgContent.java @@ -1,4 +1,4 @@ -package com.syncleus.aparapi.test; +package com.aparapi.test; public class IncArrayArgContent{ diff --git a/test/codegen/src/java/com/amd/aparapi/test/IncField.java b/test/codegen/src/java/com/amd/aparapi/test/IncField.java index 31655b59..98911611 100644 --- a/test/codegen/src/java/com/amd/aparapi/test/IncField.java +++ b/test/codegen/src/java/com/amd/aparapi/test/IncField.java @@ -1,4 +1,4 @@ -package com.syncleus.aparapi.test; +package com.aparapi.test; public class IncField{ int field = 1024; diff --git a/test/codegen/src/java/com/amd/aparapi/test/IndirectRecursion.java b/test/codegen/src/java/com/amd/aparapi/test/IndirectRecursion.java index 3d09d568..237490a8 100644 --- a/test/codegen/src/java/com/amd/aparapi/test/IndirectRecursion.java +++ b/test/codegen/src/java/com/amd/aparapi/test/IndirectRecursion.java @@ -1,6 +1,6 @@ -package com.syncleus.aparapi.test; +package com.aparapi.test; -import com.syncleus.aparapi.Kernel; +import com.aparapi.Kernel; public class IndirectRecursion extends Kernel{ diff --git a/test/codegen/src/java/com/amd/aparapi/test/Interface.java b/test/codegen/src/java/com/amd/aparapi/test/Interface.java index e94857c8..5b2df20f 100644 --- a/test/codegen/src/java/com/amd/aparapi/test/Interface.java +++ b/test/codegen/src/java/com/amd/aparapi/test/Interface.java @@ -1,4 +1,4 @@ -package com.syncleus.aparapi.test; +package com.aparapi.test; public class Interface{ diff --git a/test/codegen/src/java/com/amd/aparapi/test/LongCompare.java b/test/codegen/src/java/com/amd/aparapi/test/LongCompare.java index e4f75bb8..4e44cd5a 100644 --- a/test/codegen/src/java/com/amd/aparapi/test/LongCompare.java +++ b/test/codegen/src/java/com/amd/aparapi/test/LongCompare.java @@ -1,6 +1,6 @@ -package com.syncleus.aparapi.test; +package com.aparapi.test; -import com.syncleus.aparapi.Kernel; +import com.aparapi.Kernel; public class LongCompare extends Kernel{ public void run() { diff --git a/test/codegen/src/java/com/amd/aparapi/test/LongCompares.java b/test/codegen/src/java/com/amd/aparapi/test/LongCompares.java index 676c284f..dd588f55 100644 --- a/test/codegen/src/java/com/amd/aparapi/test/LongCompares.java +++ b/test/codegen/src/java/com/amd/aparapi/test/LongCompares.java @@ -1,4 +1,4 @@ -package com.syncleus.aparapi.test; +package com.aparapi.test; public class LongCompares{ public void run() { diff --git a/test/codegen/src/java/com/amd/aparapi/test/Loops.java b/test/codegen/src/java/com/amd/aparapi/test/Loops.java index ea65c717..ab2675db 100644 --- a/test/codegen/src/java/com/amd/aparapi/test/Loops.java +++ b/test/codegen/src/java/com/amd/aparapi/test/Loops.java @@ -1,4 +1,4 @@ -package com.syncleus.aparapi.test; +package com.aparapi.test; public class Loops{ public void run() { diff --git a/test/codegen/src/java/com/amd/aparapi/test/MathAbs.java b/test/codegen/src/java/com/amd/aparapi/test/MathAbs.java index 5c2c6668..3e2d4b30 100644 --- a/test/codegen/src/java/com/amd/aparapi/test/MathAbs.java +++ b/test/codegen/src/java/com/amd/aparapi/test/MathAbs.java @@ -1,6 +1,6 @@ -package com.syncleus.aparapi.test; +package com.aparapi.test; -import com.syncleus.aparapi.Kernel; +import com.aparapi.Kernel; public class MathAbs extends Kernel{ public void run() { diff --git a/test/codegen/src/java/com/amd/aparapi/test/MathDegRad.java b/test/codegen/src/java/com/amd/aparapi/test/MathDegRad.java index e9ccce47..fcaf819f 100644 --- a/test/codegen/src/java/com/amd/aparapi/test/MathDegRad.java +++ b/test/codegen/src/java/com/amd/aparapi/test/MathDegRad.java @@ -1,6 +1,6 @@ -package com.syncleus.aparapi.test; +package com.aparapi.test; -import com.syncleus.aparapi.Kernel; +import com.aparapi.Kernel; public class MathDegRad extends Kernel{ public void run() { diff --git a/test/codegen/src/java/com/amd/aparapi/test/MathFallThru.java b/test/codegen/src/java/com/amd/aparapi/test/MathFallThru.java index d6834fcf..0fa5ddd7 100644 --- a/test/codegen/src/java/com/amd/aparapi/test/MathFallThru.java +++ b/test/codegen/src/java/com/amd/aparapi/test/MathFallThru.java @@ -1,6 +1,6 @@ -package com.syncleus.aparapi.test; +package com.aparapi.test; -import com.syncleus.aparapi.Kernel; +import com.aparapi.Kernel; public class MathFallThru extends Kernel{ diff --git a/test/codegen/src/java/com/amd/aparapi/test/MathMax.java b/test/codegen/src/java/com/amd/aparapi/test/MathMax.java index f80f2271..46f5f10d 100644 --- a/test/codegen/src/java/com/amd/aparapi/test/MathMax.java +++ b/test/codegen/src/java/com/amd/aparapi/test/MathMax.java @@ -1,6 +1,6 @@ -package com.syncleus.aparapi.test; +package com.aparapi.test; -import com.syncleus.aparapi.Kernel; +import com.aparapi.Kernel; public class MathMax extends Kernel{ public void run() { diff --git a/test/codegen/src/java/com/amd/aparapi/test/MathMin.java b/test/codegen/src/java/com/amd/aparapi/test/MathMin.java index 675daf88..1ea619c0 100644 --- a/test/codegen/src/java/com/amd/aparapi/test/MathMin.java +++ b/test/codegen/src/java/com/amd/aparapi/test/MathMin.java @@ -1,6 +1,6 @@ -package com.syncleus.aparapi.test; +package com.aparapi.test; -import com.syncleus.aparapi.Kernel; +import com.aparapi.Kernel; public class MathMin extends Kernel{ public void run() { diff --git a/test/codegen/src/java/com/amd/aparapi/test/MathRemainder.java b/test/codegen/src/java/com/amd/aparapi/test/MathRemainder.java index cd28d818..5dd86512 100644 --- a/test/codegen/src/java/com/amd/aparapi/test/MathRemainder.java +++ b/test/codegen/src/java/com/amd/aparapi/test/MathRemainder.java @@ -1,6 +1,6 @@ -package com.syncleus.aparapi.test; +package com.aparapi.test; -import com.syncleus.aparapi.Kernel; +import com.aparapi.Kernel; public class MathRemainder extends Kernel{ public void run() { diff --git a/test/codegen/src/java/com/amd/aparapi/test/MultiContinue.java b/test/codegen/src/java/com/amd/aparapi/test/MultiContinue.java index ba0a6a3f..2985221f 100644 --- a/test/codegen/src/java/com/amd/aparapi/test/MultiContinue.java +++ b/test/codegen/src/java/com/amd/aparapi/test/MultiContinue.java @@ -1,4 +1,4 @@ -package com.syncleus.aparapi.test; +package com.aparapi.test; public class MultiContinue{ public void run() { diff --git a/test/codegen/src/java/com/amd/aparapi/test/MultipleAssign.java b/test/codegen/src/java/com/amd/aparapi/test/MultipleAssign.java index effa7c14..e1c42284 100644 --- a/test/codegen/src/java/com/amd/aparapi/test/MultipleAssign.java +++ b/test/codegen/src/java/com/amd/aparapi/test/MultipleAssign.java @@ -1,4 +1,4 @@ -package com.syncleus.aparapi.test; +package com.aparapi.test; public class MultipleAssign{ diff --git a/test/codegen/src/java/com/amd/aparapi/test/MultipleAssignExpr.java b/test/codegen/src/java/com/amd/aparapi/test/MultipleAssignExpr.java index 08534fd5..205d5a74 100644 --- a/test/codegen/src/java/com/amd/aparapi/test/MultipleAssignExpr.java +++ b/test/codegen/src/java/com/amd/aparapi/test/MultipleAssignExpr.java @@ -1,4 +1,4 @@ -package com.syncleus.aparapi.test; +package com.aparapi.test; public class MultipleAssignExpr{ diff --git a/test/codegen/src/java/com/amd/aparapi/test/NaN.java b/test/codegen/src/java/com/amd/aparapi/test/NaN.java index cc7c2eb2..628d5689 100644 --- a/test/codegen/src/java/com/amd/aparapi/test/NaN.java +++ b/test/codegen/src/java/com/amd/aparapi/test/NaN.java @@ -1,6 +1,6 @@ -package com.syncleus.aparapi.test; +package com.aparapi.test; -import com.syncleus.aparapi.Kernel; +import com.aparapi.Kernel; public class NaN extends Kernel{ @Override public void run() { diff --git a/test/codegen/src/java/com/amd/aparapi/test/NewLocalArray.java b/test/codegen/src/java/com/amd/aparapi/test/NewLocalArray.java index c61b4267..f7b30a52 100644 --- a/test/codegen/src/java/com/amd/aparapi/test/NewLocalArray.java +++ b/test/codegen/src/java/com/amd/aparapi/test/NewLocalArray.java @@ -1,4 +1,4 @@ -package com.syncleus.aparapi.test; +package com.aparapi.test; public class NewLocalArray{ diff --git a/test/codegen/src/java/com/amd/aparapi/test/NonNullCheck.java b/test/codegen/src/java/com/amd/aparapi/test/NonNullCheck.java index e8296d73..939788b5 100644 --- a/test/codegen/src/java/com/amd/aparapi/test/NonNullCheck.java +++ b/test/codegen/src/java/com/amd/aparapi/test/NonNullCheck.java @@ -1,4 +1,4 @@ -package com.syncleus.aparapi.test; +package com.aparapi.test; public class NonNullCheck{ int[] ints = new int[1024]; diff --git a/test/codegen/src/java/com/amd/aparapi/test/NullCheck.java b/test/codegen/src/java/com/amd/aparapi/test/NullCheck.java index 8a6970a1..6fdf3483 100644 --- a/test/codegen/src/java/com/amd/aparapi/test/NullCheck.java +++ b/test/codegen/src/java/com/amd/aparapi/test/NullCheck.java @@ -1,4 +1,4 @@ -package com.syncleus.aparapi.test; +package com.aparapi.test; public class NullCheck{ int[] ints = new int[1024]; diff --git a/test/codegen/src/java/com/amd/aparapi/test/ObjectArrayCallHierarchy.java b/test/codegen/src/java/com/amd/aparapi/test/ObjectArrayCallHierarchy.java index 4e14321f..d1a71461 100644 --- a/test/codegen/src/java/com/amd/aparapi/test/ObjectArrayCallHierarchy.java +++ b/test/codegen/src/java/com/amd/aparapi/test/ObjectArrayCallHierarchy.java @@ -1,6 +1,6 @@ -package com.syncleus.aparapi.test; +package com.aparapi.test; -import com.syncleus.aparapi.Kernel; +import com.aparapi.Kernel; public class ObjectArrayCallHierarchy extends Kernel{ diff --git a/test/codegen/src/java/com/amd/aparapi/test/ObjectArrayCommonSuper.java b/test/codegen/src/java/com/amd/aparapi/test/ObjectArrayCommonSuper.java index 8ff25588..5adf7e67 100644 --- a/test/codegen/src/java/com/amd/aparapi/test/ObjectArrayCommonSuper.java +++ b/test/codegen/src/java/com/amd/aparapi/test/ObjectArrayCommonSuper.java @@ -1,6 +1,6 @@ -package com.syncleus.aparapi.test; +package com.aparapi.test; -import com.syncleus.aparapi.Kernel; +import com.aparapi.Kernel; public class ObjectArrayCommonSuper extends Kernel{ diff --git a/test/codegen/src/java/com/amd/aparapi/test/ObjectArrayMemberAccess.java b/test/codegen/src/java/com/amd/aparapi/test/ObjectArrayMemberAccess.java index b09a9a47..968ab6a2 100644 --- a/test/codegen/src/java/com/amd/aparapi/test/ObjectArrayMemberAccess.java +++ b/test/codegen/src/java/com/amd/aparapi/test/ObjectArrayMemberAccess.java @@ -1,6 +1,6 @@ -package com.syncleus.aparapi.test; +package com.aparapi.test; -import com.syncleus.aparapi.Kernel; +import com.aparapi.Kernel; public class ObjectArrayMemberAccess extends Kernel{ diff --git a/test/codegen/src/java/com/amd/aparapi/test/ObjectArrayMemberBadGetter.java b/test/codegen/src/java/com/amd/aparapi/test/ObjectArrayMemberBadGetter.java index c7824a3e..5e595961 100644 --- a/test/codegen/src/java/com/amd/aparapi/test/ObjectArrayMemberBadGetter.java +++ b/test/codegen/src/java/com/amd/aparapi/test/ObjectArrayMemberBadGetter.java @@ -1,6 +1,6 @@ -package com.syncleus.aparapi.test; +package com.aparapi.test; -import com.syncleus.aparapi.Kernel; +import com.aparapi.Kernel; public class ObjectArrayMemberBadGetter extends Kernel{ diff --git a/test/codegen/src/java/com/amd/aparapi/test/ObjectArrayMemberBadSetter.java b/test/codegen/src/java/com/amd/aparapi/test/ObjectArrayMemberBadSetter.java index dc2aab96..ddccc4c1 100644 --- a/test/codegen/src/java/com/amd/aparapi/test/ObjectArrayMemberBadSetter.java +++ b/test/codegen/src/java/com/amd/aparapi/test/ObjectArrayMemberBadSetter.java @@ -1,6 +1,6 @@ -package com.syncleus.aparapi.test; +package com.aparapi.test; -import com.syncleus.aparapi.Kernel; +import com.aparapi.Kernel; public class ObjectArrayMemberBadSetter extends Kernel{ diff --git a/test/codegen/src/java/com/amd/aparapi/test/ObjectArrayMemberCall.java b/test/codegen/src/java/com/amd/aparapi/test/ObjectArrayMemberCall.java index f705de5c..65ccd3dc 100644 --- a/test/codegen/src/java/com/amd/aparapi/test/ObjectArrayMemberCall.java +++ b/test/codegen/src/java/com/amd/aparapi/test/ObjectArrayMemberCall.java @@ -1,6 +1,6 @@ -package com.syncleus.aparapi.test; +package com.aparapi.test; -import com.syncleus.aparapi.Kernel; +import com.aparapi.Kernel; public class ObjectArrayMemberCall extends Kernel{ diff --git a/test/codegen/src/java/com/amd/aparapi/test/ObjectArrayMemberGetterSetter.java b/test/codegen/src/java/com/amd/aparapi/test/ObjectArrayMemberGetterSetter.java index 9a0f99d6..6e6593dd 100644 --- a/test/codegen/src/java/com/amd/aparapi/test/ObjectArrayMemberGetterSetter.java +++ b/test/codegen/src/java/com/amd/aparapi/test/ObjectArrayMemberGetterSetter.java @@ -1,6 +1,6 @@ -package com.syncleus.aparapi.test; +package com.aparapi.test; -import com.syncleus.aparapi.Kernel; +import com.aparapi.Kernel; final class DummyOOA{ int mem; diff --git a/test/codegen/src/java/com/amd/aparapi/test/ObjectArrayMemberHierarchy.java b/test/codegen/src/java/com/amd/aparapi/test/ObjectArrayMemberHierarchy.java index 1e55d305..d4538a54 100644 --- a/test/codegen/src/java/com/amd/aparapi/test/ObjectArrayMemberHierarchy.java +++ b/test/codegen/src/java/com/amd/aparapi/test/ObjectArrayMemberHierarchy.java @@ -1,6 +1,6 @@ -package com.syncleus.aparapi.test; +package com.aparapi.test; -import com.syncleus.aparapi.Kernel; +import com.aparapi.Kernel; public class ObjectArrayMemberHierarchy extends Kernel{ diff --git a/test/codegen/src/java/com/amd/aparapi/test/ObjectArrayMemberNotFinal.java b/test/codegen/src/java/com/amd/aparapi/test/ObjectArrayMemberNotFinal.java index 51ee65cc..ea79772e 100644 --- a/test/codegen/src/java/com/amd/aparapi/test/ObjectArrayMemberNotFinal.java +++ b/test/codegen/src/java/com/amd/aparapi/test/ObjectArrayMemberNotFinal.java @@ -1,6 +1,6 @@ -package com.syncleus.aparapi.test; +package com.aparapi.test; -import com.syncleus.aparapi.Kernel; +import com.aparapi.Kernel; class DummyOOANF{ int mem; diff --git a/test/codegen/src/java/com/amd/aparapi/test/ObjectRefCopy.java b/test/codegen/src/java/com/amd/aparapi/test/ObjectRefCopy.java index 8a79f1fd..68fe61ce 100644 --- a/test/codegen/src/java/com/amd/aparapi/test/ObjectRefCopy.java +++ b/test/codegen/src/java/com/amd/aparapi/test/ObjectRefCopy.java @@ -1,6 +1,6 @@ -package com.syncleus.aparapi.test; +package com.aparapi.test; -import com.syncleus.aparapi.Kernel; +import com.aparapi.Kernel; public class ObjectRefCopy extends Kernel{ diff --git a/test/codegen/src/java/com/amd/aparapi/test/ObjectWithinObject.java b/test/codegen/src/java/com/amd/aparapi/test/ObjectWithinObject.java index 906adf62..049b7fe3 100644 --- a/test/codegen/src/java/com/amd/aparapi/test/ObjectWithinObject.java +++ b/test/codegen/src/java/com/amd/aparapi/test/ObjectWithinObject.java @@ -1,6 +1,6 @@ -package com.syncleus.aparapi.test; +package com.aparapi.test; -import com.syncleus.aparapi.Kernel; +import com.aparapi.Kernel; public class ObjectWithinObject extends Kernel{ diff --git a/test/codegen/src/java/com/amd/aparapi/test/OrAndOrPrecedence.java b/test/codegen/src/java/com/amd/aparapi/test/OrAndOrPrecedence.java index 72b3b5c9..bbe9ef96 100644 --- a/test/codegen/src/java/com/amd/aparapi/test/OrAndOrPrecedence.java +++ b/test/codegen/src/java/com/amd/aparapi/test/OrAndOrPrecedence.java @@ -1,4 +1,4 @@ -package com.syncleus.aparapi.test; +package com.aparapi.test; public class OrAndOrPrecedence{ public void run() { diff --git a/test/codegen/src/java/com/amd/aparapi/test/OverloadMethod.java b/test/codegen/src/java/com/amd/aparapi/test/OverloadMethod.java index 94b925ea..962f5c6f 100644 --- a/test/codegen/src/java/com/amd/aparapi/test/OverloadMethod.java +++ b/test/codegen/src/java/com/amd/aparapi/test/OverloadMethod.java @@ -1,6 +1,6 @@ -package com.syncleus.aparapi.test; +package com.aparapi.test; -import com.syncleus.aparapi.Kernel; +import com.aparapi.Kernel; public class OverloadMethod extends Kernel{ public void run() { diff --git a/test/codegen/src/java/com/amd/aparapi/test/OverriddenKernelField.java b/test/codegen/src/java/com/amd/aparapi/test/OverriddenKernelField.java index 1c6ee6c9..7668e8a4 100644 --- a/test/codegen/src/java/com/amd/aparapi/test/OverriddenKernelField.java +++ b/test/codegen/src/java/com/amd/aparapi/test/OverriddenKernelField.java @@ -1,6 +1,6 @@ -package com.syncleus.aparapi.test; +package com.aparapi.test; -import com.syncleus.aparapi.Kernel; +import com.aparapi.Kernel; class OverriddenKernelFieldParent extends Kernel{ int out[] = new int[1]; diff --git a/test/codegen/src/java/com/amd/aparapi/test/PlayPen.java b/test/codegen/src/java/com/amd/aparapi/test/PlayPen.java index 06d06b06..e55b1099 100644 --- a/test/codegen/src/java/com/amd/aparapi/test/PlayPen.java +++ b/test/codegen/src/java/com/amd/aparapi/test/PlayPen.java @@ -1,4 +1,4 @@ -package com.syncleus.aparapi.test; +package com.aparapi.test; public class PlayPen{ public void run() { diff --git a/test/codegen/src/java/com/amd/aparapi/test/PostDecArrayItem.java b/test/codegen/src/java/com/amd/aparapi/test/PostDecArrayItem.java index 100d0170..a06ee330 100644 --- a/test/codegen/src/java/com/amd/aparapi/test/PostDecArrayItem.java +++ b/test/codegen/src/java/com/amd/aparapi/test/PostDecArrayItem.java @@ -1,4 +1,4 @@ -package com.syncleus.aparapi.test; +package com.aparapi.test; public class PostDecArrayItem{ diff --git a/test/codegen/src/java/com/amd/aparapi/test/PostDecByte.java b/test/codegen/src/java/com/amd/aparapi/test/PostDecByte.java index ecd90c10..58476eba 100644 --- a/test/codegen/src/java/com/amd/aparapi/test/PostDecByte.java +++ b/test/codegen/src/java/com/amd/aparapi/test/PostDecByte.java @@ -1,4 +1,4 @@ -package com.syncleus.aparapi.test; +package com.aparapi.test; public class PostDecByte{ diff --git a/test/codegen/src/java/com/amd/aparapi/test/PostDecLocal.java b/test/codegen/src/java/com/amd/aparapi/test/PostDecLocal.java index 995d2715..e2104cc0 100644 --- a/test/codegen/src/java/com/amd/aparapi/test/PostDecLocal.java +++ b/test/codegen/src/java/com/amd/aparapi/test/PostDecLocal.java @@ -1,4 +1,4 @@ -package com.syncleus.aparapi.test; +package com.aparapi.test; public class PostDecLocal{ diff --git a/test/codegen/src/java/com/amd/aparapi/test/PostDecPostInc.java b/test/codegen/src/java/com/amd/aparapi/test/PostDecPostInc.java index b14c5afb..8153d2b2 100644 --- a/test/codegen/src/java/com/amd/aparapi/test/PostDecPostInc.java +++ b/test/codegen/src/java/com/amd/aparapi/test/PostDecPostInc.java @@ -1,4 +1,4 @@ -package com.syncleus.aparapi.test; +package com.aparapi.test; public class PostDecPostInc{ diff --git a/test/codegen/src/java/com/amd/aparapi/test/PostIncArrayIndexAndElement.java b/test/codegen/src/java/com/amd/aparapi/test/PostIncArrayIndexAndElement.java index b9dc78ab..03f0122e 100644 --- a/test/codegen/src/java/com/amd/aparapi/test/PostIncArrayIndexAndElement.java +++ b/test/codegen/src/java/com/amd/aparapi/test/PostIncArrayIndexAndElement.java @@ -1,4 +1,4 @@ -package com.syncleus.aparapi.test; +package com.aparapi.test; public class PostIncArrayIndexAndElement{ diff --git a/test/codegen/src/java/com/amd/aparapi/test/PostIncArrayItem.java b/test/codegen/src/java/com/amd/aparapi/test/PostIncArrayItem.java index 6e4ba68b..742039c0 100644 --- a/test/codegen/src/java/com/amd/aparapi/test/PostIncArrayItem.java +++ b/test/codegen/src/java/com/amd/aparapi/test/PostIncArrayItem.java @@ -1,4 +1,4 @@ -package com.syncleus.aparapi.test; +package com.aparapi.test; public class PostIncArrayItem{ diff --git a/test/codegen/src/java/com/amd/aparapi/test/PostIncArrayItemAsParameter.java b/test/codegen/src/java/com/amd/aparapi/test/PostIncArrayItemAsParameter.java index 8004570a..0a54d9d1 100644 --- a/test/codegen/src/java/com/amd/aparapi/test/PostIncArrayItemAsParameter.java +++ b/test/codegen/src/java/com/amd/aparapi/test/PostIncArrayItemAsParameter.java @@ -1,4 +1,4 @@ -package com.syncleus.aparapi.test; +package com.aparapi.test; public class PostIncArrayItemAsParameter{ diff --git a/test/codegen/src/java/com/amd/aparapi/test/PostIncArrayItemFieldIndex.java b/test/codegen/src/java/com/amd/aparapi/test/PostIncArrayItemFieldIndex.java index e3615055..8748df3b 100644 --- a/test/codegen/src/java/com/amd/aparapi/test/PostIncArrayItemFieldIndex.java +++ b/test/codegen/src/java/com/amd/aparapi/test/PostIncArrayItemFieldIndex.java @@ -1,4 +1,4 @@ -package com.syncleus.aparapi.test; +package com.aparapi.test; public class PostIncArrayItemFieldIndex{ diff --git a/test/codegen/src/java/com/amd/aparapi/test/PostIncByte.java b/test/codegen/src/java/com/amd/aparapi/test/PostIncByte.java index d232dea0..ad84ceb0 100644 --- a/test/codegen/src/java/com/amd/aparapi/test/PostIncByte.java +++ b/test/codegen/src/java/com/amd/aparapi/test/PostIncByte.java @@ -1,4 +1,4 @@ -package com.syncleus.aparapi.test; +package com.aparapi.test; public class PostIncByte{ diff --git a/test/codegen/src/java/com/amd/aparapi/test/PostIncByteField.java b/test/codegen/src/java/com/amd/aparapi/test/PostIncByteField.java index ddb1ace2..f5810a20 100644 --- a/test/codegen/src/java/com/amd/aparapi/test/PostIncByteField.java +++ b/test/codegen/src/java/com/amd/aparapi/test/PostIncByteField.java @@ -1,4 +1,4 @@ -package com.syncleus.aparapi.test; +package com.aparapi.test; public class PostIncByteField{ diff --git a/test/codegen/src/java/com/amd/aparapi/test/PostIncInt.java b/test/codegen/src/java/com/amd/aparapi/test/PostIncInt.java index dfce4e6d..0b567d86 100644 --- a/test/codegen/src/java/com/amd/aparapi/test/PostIncInt.java +++ b/test/codegen/src/java/com/amd/aparapi/test/PostIncInt.java @@ -1,4 +1,4 @@ -package com.syncleus.aparapi.test; +package com.aparapi.test; public class PostIncInt{ diff --git a/test/codegen/src/java/com/amd/aparapi/test/PostIncIntField.java b/test/codegen/src/java/com/amd/aparapi/test/PostIncIntField.java index fa9f7651..ef28c2c7 100644 --- a/test/codegen/src/java/com/amd/aparapi/test/PostIncIntField.java +++ b/test/codegen/src/java/com/amd/aparapi/test/PostIncIntField.java @@ -1,4 +1,4 @@ -package com.syncleus.aparapi.test; +package com.aparapi.test; public class PostIncIntField{ diff --git a/test/codegen/src/java/com/amd/aparapi/test/PostIncLocal.java b/test/codegen/src/java/com/amd/aparapi/test/PostIncLocal.java index 1521303b..0c115da9 100644 --- a/test/codegen/src/java/com/amd/aparapi/test/PostIncLocal.java +++ b/test/codegen/src/java/com/amd/aparapi/test/PostIncLocal.java @@ -1,4 +1,4 @@ -package com.syncleus.aparapi.test; +package com.aparapi.test; public class PostIncLocal{ diff --git a/test/codegen/src/java/com/amd/aparapi/test/PostIncLocalStandalone.java b/test/codegen/src/java/com/amd/aparapi/test/PostIncLocalStandalone.java index 72f5e30e..bf94c2e3 100644 --- a/test/codegen/src/java/com/amd/aparapi/test/PostIncLocalStandalone.java +++ b/test/codegen/src/java/com/amd/aparapi/test/PostIncLocalStandalone.java @@ -1,4 +1,4 @@ -package com.syncleus.aparapi.test; +package com.aparapi.test; public class PostIncLocalStandalone{ diff --git a/test/codegen/src/java/com/amd/aparapi/test/PostIncLocalTwice.java b/test/codegen/src/java/com/amd/aparapi/test/PostIncLocalTwice.java index 95e9b88e..9059c232 100644 --- a/test/codegen/src/java/com/amd/aparapi/test/PostIncLocalTwice.java +++ b/test/codegen/src/java/com/amd/aparapi/test/PostIncLocalTwice.java @@ -1,4 +1,4 @@ -package com.syncleus.aparapi.test; +package com.aparapi.test; public class PostIncLocalTwice{ diff --git a/test/codegen/src/java/com/amd/aparapi/test/PreDecArrayIndexAndElement.java b/test/codegen/src/java/com/amd/aparapi/test/PreDecArrayIndexAndElement.java index b3fbe599..895be947 100644 --- a/test/codegen/src/java/com/amd/aparapi/test/PreDecArrayIndexAndElement.java +++ b/test/codegen/src/java/com/amd/aparapi/test/PreDecArrayIndexAndElement.java @@ -1,4 +1,4 @@ -package com.syncleus.aparapi.test; +package com.aparapi.test; public class PreDecArrayIndexAndElement{ diff --git a/test/codegen/src/java/com/amd/aparapi/test/PreDecArrayItem.java b/test/codegen/src/java/com/amd/aparapi/test/PreDecArrayItem.java index 69aeee0a..fcc93d1b 100644 --- a/test/codegen/src/java/com/amd/aparapi/test/PreDecArrayItem.java +++ b/test/codegen/src/java/com/amd/aparapi/test/PreDecArrayItem.java @@ -1,4 +1,4 @@ -package com.syncleus.aparapi.test; +package com.aparapi.test; public class PreDecArrayItem{ diff --git a/test/codegen/src/java/com/amd/aparapi/test/PreDecPostInc.java b/test/codegen/src/java/com/amd/aparapi/test/PreDecPostInc.java index 5ea331e9..f31f98fb 100644 --- a/test/codegen/src/java/com/amd/aparapi/test/PreDecPostInc.java +++ b/test/codegen/src/java/com/amd/aparapi/test/PreDecPostInc.java @@ -1,4 +1,4 @@ -package com.syncleus.aparapi.test; +package com.aparapi.test; public class PreDecPostInc{ diff --git a/test/codegen/src/java/com/amd/aparapi/test/PreIncArrayIndexAndElement.java b/test/codegen/src/java/com/amd/aparapi/test/PreIncArrayIndexAndElement.java index ac4957a8..341583c4 100644 --- a/test/codegen/src/java/com/amd/aparapi/test/PreIncArrayIndexAndElement.java +++ b/test/codegen/src/java/com/amd/aparapi/test/PreIncArrayIndexAndElement.java @@ -1,4 +1,4 @@ -package com.syncleus.aparapi.test; +package com.aparapi.test; public class PreIncArrayIndexAndElement{ diff --git a/test/codegen/src/java/com/amd/aparapi/test/PreIncArrayItem.java b/test/codegen/src/java/com/amd/aparapi/test/PreIncArrayItem.java index 499f9fba..2295a2fe 100644 --- a/test/codegen/src/java/com/amd/aparapi/test/PreIncArrayItem.java +++ b/test/codegen/src/java/com/amd/aparapi/test/PreIncArrayItem.java @@ -1,4 +1,4 @@ -package com.syncleus.aparapi.test; +package com.aparapi.test; public class PreIncArrayItem{ diff --git a/test/codegen/src/java/com/amd/aparapi/test/PreIncByte.java b/test/codegen/src/java/com/amd/aparapi/test/PreIncByte.java index 37042f6b..b9c47aec 100644 --- a/test/codegen/src/java/com/amd/aparapi/test/PreIncByte.java +++ b/test/codegen/src/java/com/amd/aparapi/test/PreIncByte.java @@ -1,4 +1,4 @@ -package com.syncleus.aparapi.test; +package com.aparapi.test; public class PreIncByte{ diff --git a/test/codegen/src/java/com/amd/aparapi/test/PreIncByteField.java b/test/codegen/src/java/com/amd/aparapi/test/PreIncByteField.java index 00e63591..9d27660b 100644 --- a/test/codegen/src/java/com/amd/aparapi/test/PreIncByteField.java +++ b/test/codegen/src/java/com/amd/aparapi/test/PreIncByteField.java @@ -1,4 +1,4 @@ -package com.syncleus.aparapi.test; +package com.aparapi.test; public class PreIncByteField{ diff --git a/test/codegen/src/java/com/amd/aparapi/test/PreIncInt.java b/test/codegen/src/java/com/amd/aparapi/test/PreIncInt.java index 989fe61a..7fd25bed 100644 --- a/test/codegen/src/java/com/amd/aparapi/test/PreIncInt.java +++ b/test/codegen/src/java/com/amd/aparapi/test/PreIncInt.java @@ -1,4 +1,4 @@ -package com.syncleus.aparapi.test; +package com.aparapi.test; public class PreIncInt{ diff --git a/test/codegen/src/java/com/amd/aparapi/test/PreIncIntField.java b/test/codegen/src/java/com/amd/aparapi/test/PreIncIntField.java index dd2c516f..0cecd153 100644 --- a/test/codegen/src/java/com/amd/aparapi/test/PreIncIntField.java +++ b/test/codegen/src/java/com/amd/aparapi/test/PreIncIntField.java @@ -1,4 +1,4 @@ -package com.syncleus.aparapi.test; +package com.aparapi.test; public class PreIncIntField{ diff --git a/test/codegen/src/java/com/amd/aparapi/test/PreIncLocal.java b/test/codegen/src/java/com/amd/aparapi/test/PreIncLocal.java index 042ef524..bde0e40a 100644 --- a/test/codegen/src/java/com/amd/aparapi/test/PreIncLocal.java +++ b/test/codegen/src/java/com/amd/aparapi/test/PreIncLocal.java @@ -1,4 +1,4 @@ -package com.syncleus.aparapi.test; +package com.aparapi.test; public class PreIncLocal{ diff --git a/test/codegen/src/java/com/amd/aparapi/test/PreIncLocalStandalone.java b/test/codegen/src/java/com/amd/aparapi/test/PreIncLocalStandalone.java index 1a5bea8d..4ddf45bd 100644 --- a/test/codegen/src/java/com/amd/aparapi/test/PreIncLocalStandalone.java +++ b/test/codegen/src/java/com/amd/aparapi/test/PreIncLocalStandalone.java @@ -1,4 +1,4 @@ -package com.syncleus.aparapi.test; +package com.aparapi.test; public class PreIncLocalStandalone{ diff --git a/test/codegen/src/java/com/amd/aparapi/test/PreIncLocalTwice.java b/test/codegen/src/java/com/amd/aparapi/test/PreIncLocalTwice.java index 4ad64a49..3ef704a2 100644 --- a/test/codegen/src/java/com/amd/aparapi/test/PreIncLocalTwice.java +++ b/test/codegen/src/java/com/amd/aparapi/test/PreIncLocalTwice.java @@ -1,4 +1,4 @@ -package com.syncleus.aparapi.test; +package com.aparapi.test; public class PreIncLocalTwice{ diff --git a/test/codegen/src/java/com/amd/aparapi/test/ReturnBooleanNewArray.java b/test/codegen/src/java/com/amd/aparapi/test/ReturnBooleanNewArray.java index b4ab0e3f..2cc54466 100644 --- a/test/codegen/src/java/com/amd/aparapi/test/ReturnBooleanNewArray.java +++ b/test/codegen/src/java/com/amd/aparapi/test/ReturnBooleanNewArray.java @@ -1,4 +1,4 @@ -package com.syncleus.aparapi.test; +package com.aparapi.test; public class ReturnBooleanNewArray{ diff --git a/test/codegen/src/java/com/amd/aparapi/test/ReturnBooleanVarArray.java b/test/codegen/src/java/com/amd/aparapi/test/ReturnBooleanVarArray.java index 488ef38c..d5f46757 100644 --- a/test/codegen/src/java/com/amd/aparapi/test/ReturnBooleanVarArray.java +++ b/test/codegen/src/java/com/amd/aparapi/test/ReturnBooleanVarArray.java @@ -1,4 +1,4 @@ -package com.syncleus.aparapi.test; +package com.aparapi.test; public class ReturnBooleanVarArray{ diff --git a/test/codegen/src/java/com/amd/aparapi/test/ReturnByteArrayNew.java b/test/codegen/src/java/com/amd/aparapi/test/ReturnByteArrayNew.java index 7514bdb1..5301223b 100644 --- a/test/codegen/src/java/com/amd/aparapi/test/ReturnByteArrayNew.java +++ b/test/codegen/src/java/com/amd/aparapi/test/ReturnByteArrayNew.java @@ -1,4 +1,4 @@ -package com.syncleus.aparapi.test; +package com.aparapi.test; public class ReturnByteArrayNew{ diff --git a/test/codegen/src/java/com/amd/aparapi/test/ReturnByteArrayVar.java b/test/codegen/src/java/com/amd/aparapi/test/ReturnByteArrayVar.java index 699d002b..7511b0d2 100644 --- a/test/codegen/src/java/com/amd/aparapi/test/ReturnByteArrayVar.java +++ b/test/codegen/src/java/com/amd/aparapi/test/ReturnByteArrayVar.java @@ -1,4 +1,4 @@ -package com.syncleus.aparapi.test; +package com.aparapi.test; public class ReturnByteArrayVar{ diff --git a/test/codegen/src/java/com/amd/aparapi/test/ReturnDoubleArrayNew.java b/test/codegen/src/java/com/amd/aparapi/test/ReturnDoubleArrayNew.java index efa5afaa..937673b3 100644 --- a/test/codegen/src/java/com/amd/aparapi/test/ReturnDoubleArrayNew.java +++ b/test/codegen/src/java/com/amd/aparapi/test/ReturnDoubleArrayNew.java @@ -1,4 +1,4 @@ -package com.syncleus.aparapi.test; +package com.aparapi.test; public class ReturnDoubleArrayNew{ diff --git a/test/codegen/src/java/com/amd/aparapi/test/ReturnDoubleArrayVar.java b/test/codegen/src/java/com/amd/aparapi/test/ReturnDoubleArrayVar.java index df561d96..9b76970f 100644 --- a/test/codegen/src/java/com/amd/aparapi/test/ReturnDoubleArrayVar.java +++ b/test/codegen/src/java/com/amd/aparapi/test/ReturnDoubleArrayVar.java @@ -1,4 +1,4 @@ -package com.syncleus.aparapi.test; +package com.aparapi.test; public class ReturnDoubleArrayVar{ diff --git a/test/codegen/src/java/com/amd/aparapi/test/ReturnFloatArrayNew.java b/test/codegen/src/java/com/amd/aparapi/test/ReturnFloatArrayNew.java index 575a016d..92d6251b 100644 --- a/test/codegen/src/java/com/amd/aparapi/test/ReturnFloatArrayNew.java +++ b/test/codegen/src/java/com/amd/aparapi/test/ReturnFloatArrayNew.java @@ -1,4 +1,4 @@ -package com.syncleus.aparapi.test; +package com.aparapi.test; public class ReturnFloatArrayNew{ diff --git a/test/codegen/src/java/com/amd/aparapi/test/ReturnFloatArrayVar.java b/test/codegen/src/java/com/amd/aparapi/test/ReturnFloatArrayVar.java index e937115f..f5a539cb 100644 --- a/test/codegen/src/java/com/amd/aparapi/test/ReturnFloatArrayVar.java +++ b/test/codegen/src/java/com/amd/aparapi/test/ReturnFloatArrayVar.java @@ -1,4 +1,4 @@ -package com.syncleus.aparapi.test; +package com.aparapi.test; public class ReturnFloatArrayVar{ diff --git a/test/codegen/src/java/com/amd/aparapi/test/ReturnIntArrayNew.java b/test/codegen/src/java/com/amd/aparapi/test/ReturnIntArrayNew.java index 864d7ebb..4d6662fa 100644 --- a/test/codegen/src/java/com/amd/aparapi/test/ReturnIntArrayNew.java +++ b/test/codegen/src/java/com/amd/aparapi/test/ReturnIntArrayNew.java @@ -1,4 +1,4 @@ -package com.syncleus.aparapi.test; +package com.aparapi.test; public class ReturnIntArrayNew{ diff --git a/test/codegen/src/java/com/amd/aparapi/test/ReturnIntArrayVar.java b/test/codegen/src/java/com/amd/aparapi/test/ReturnIntArrayVar.java index 5a4acff9..5995ae6f 100644 --- a/test/codegen/src/java/com/amd/aparapi/test/ReturnIntArrayVar.java +++ b/test/codegen/src/java/com/amd/aparapi/test/ReturnIntArrayVar.java @@ -1,4 +1,4 @@ -package com.syncleus.aparapi.test; +package com.aparapi.test; public class ReturnIntArrayVar{ diff --git a/test/codegen/src/java/com/amd/aparapi/test/ReturnLongArrayNew.java b/test/codegen/src/java/com/amd/aparapi/test/ReturnLongArrayNew.java index 4b4ec765..e742b8ce 100644 --- a/test/codegen/src/java/com/amd/aparapi/test/ReturnLongArrayNew.java +++ b/test/codegen/src/java/com/amd/aparapi/test/ReturnLongArrayNew.java @@ -1,4 +1,4 @@ -package com.syncleus.aparapi.test; +package com.aparapi.test; public class ReturnLongArrayNew{ diff --git a/test/codegen/src/java/com/amd/aparapi/test/ReturnLongArrayVar.java b/test/codegen/src/java/com/amd/aparapi/test/ReturnLongArrayVar.java index 2ba7c988..39abb6a8 100644 --- a/test/codegen/src/java/com/amd/aparapi/test/ReturnLongArrayVar.java +++ b/test/codegen/src/java/com/amd/aparapi/test/ReturnLongArrayVar.java @@ -1,4 +1,4 @@ -package com.syncleus.aparapi.test; +package com.aparapi.test; public class ReturnLongArrayVar{ diff --git a/test/codegen/src/java/com/amd/aparapi/test/ReturnPostIncInt.java b/test/codegen/src/java/com/amd/aparapi/test/ReturnPostIncInt.java index fd28a765..042691e8 100644 --- a/test/codegen/src/java/com/amd/aparapi/test/ReturnPostIncInt.java +++ b/test/codegen/src/java/com/amd/aparapi/test/ReturnPostIncInt.java @@ -1,4 +1,4 @@ -package com.syncleus.aparapi.test; +package com.aparapi.test; public class ReturnPostIncInt{ diff --git a/test/codegen/src/java/com/amd/aparapi/test/ReturnPreIncInt.java b/test/codegen/src/java/com/amd/aparapi/test/ReturnPreIncInt.java index 106749f8..5fdf9131 100644 --- a/test/codegen/src/java/com/amd/aparapi/test/ReturnPreIncInt.java +++ b/test/codegen/src/java/com/amd/aparapi/test/ReturnPreIncInt.java @@ -1,4 +1,4 @@ -package com.syncleus.aparapi.test; +package com.aparapi.test; public class ReturnPreIncInt{ diff --git a/test/codegen/src/java/com/amd/aparapi/test/ReturnShortArrayNew.java b/test/codegen/src/java/com/amd/aparapi/test/ReturnShortArrayNew.java index 60bf91b8..187039c9 100644 --- a/test/codegen/src/java/com/amd/aparapi/test/ReturnShortArrayNew.java +++ b/test/codegen/src/java/com/amd/aparapi/test/ReturnShortArrayNew.java @@ -1,4 +1,4 @@ -package com.syncleus.aparapi.test; +package com.aparapi.test; public class ReturnShortArrayNew{ diff --git a/test/codegen/src/java/com/amd/aparapi/test/ReturnShortArrayVar.java b/test/codegen/src/java/com/amd/aparapi/test/ReturnShortArrayVar.java index 62cf2b92..f1239796 100644 --- a/test/codegen/src/java/com/amd/aparapi/test/ReturnShortArrayVar.java +++ b/test/codegen/src/java/com/amd/aparapi/test/ReturnShortArrayVar.java @@ -1,4 +1,4 @@ -package com.syncleus.aparapi.test; +package com.aparapi.test; public class ReturnShortArrayVar{ diff --git a/test/codegen/src/java/com/amd/aparapi/test/RightShifts.java b/test/codegen/src/java/com/amd/aparapi/test/RightShifts.java index 00968ea9..7220c7ee 100644 --- a/test/codegen/src/java/com/amd/aparapi/test/RightShifts.java +++ b/test/codegen/src/java/com/amd/aparapi/test/RightShifts.java @@ -1,6 +1,6 @@ -package com.syncleus.aparapi.test; +package com.aparapi.test; -import com.syncleus.aparapi.Kernel; +import com.aparapi.Kernel; public class RightShifts extends Kernel{ diff --git a/test/codegen/src/java/com/amd/aparapi/test/Sequence.java b/test/codegen/src/java/com/amd/aparapi/test/Sequence.java index 87d48633..998c80b8 100644 --- a/test/codegen/src/java/com/amd/aparapi/test/Sequence.java +++ b/test/codegen/src/java/com/amd/aparapi/test/Sequence.java @@ -1,4 +1,4 @@ -package com.syncleus.aparapi.test; +package com.aparapi.test; public class Sequence{ public void run() { diff --git a/test/codegen/src/java/com/amd/aparapi/test/StaticFieldStore.java b/test/codegen/src/java/com/amd/aparapi/test/StaticFieldStore.java index c0751a46..e8505208 100644 --- a/test/codegen/src/java/com/amd/aparapi/test/StaticFieldStore.java +++ b/test/codegen/src/java/com/amd/aparapi/test/StaticFieldStore.java @@ -1,4 +1,4 @@ -package com.syncleus.aparapi.test; +package com.aparapi.test; public class StaticFieldStore{ int[] ints = new int[1024]; diff --git a/test/codegen/src/java/com/amd/aparapi/test/StaticMethodCall.java b/test/codegen/src/java/com/amd/aparapi/test/StaticMethodCall.java index 61229a57..4e01aa4b 100644 --- a/test/codegen/src/java/com/amd/aparapi/test/StaticMethodCall.java +++ b/test/codegen/src/java/com/amd/aparapi/test/StaticMethodCall.java @@ -1,6 +1,6 @@ -package com.syncleus.aparapi.test; +package com.aparapi.test; -import com.syncleus.aparapi.Kernel; +import com.aparapi.Kernel; public class StaticMethodCall extends Kernel{ public static int add(int i, int j) { diff --git a/test/codegen/src/java/com/amd/aparapi/test/SynchronizedMethods.java b/test/codegen/src/java/com/amd/aparapi/test/SynchronizedMethods.java index bfca5a9a..6a886120 100644 --- a/test/codegen/src/java/com/amd/aparapi/test/SynchronizedMethods.java +++ b/test/codegen/src/java/com/amd/aparapi/test/SynchronizedMethods.java @@ -1,4 +1,4 @@ -package com.syncleus.aparapi.test; +package com.aparapi.test; public class SynchronizedMethods{ int[] ints = new int[1024]; diff --git a/test/codegen/src/java/com/amd/aparapi/test/Ternary.java b/test/codegen/src/java/com/amd/aparapi/test/Ternary.java index 5c7363a3..6b805eca 100644 --- a/test/codegen/src/java/com/amd/aparapi/test/Ternary.java +++ b/test/codegen/src/java/com/amd/aparapi/test/Ternary.java @@ -1,4 +1,4 @@ -package com.syncleus.aparapi.test; +package com.aparapi.test; public class Ternary{ diff --git a/test/codegen/src/java/com/amd/aparapi/test/TernaryAnd.java b/test/codegen/src/java/com/amd/aparapi/test/TernaryAnd.java index 25c75812..292d7611 100644 --- a/test/codegen/src/java/com/amd/aparapi/test/TernaryAnd.java +++ b/test/codegen/src/java/com/amd/aparapi/test/TernaryAnd.java @@ -1,4 +1,4 @@ -package com.syncleus.aparapi.test; +package com.aparapi.test; public class TernaryAnd{ float random() { diff --git a/test/codegen/src/java/com/amd/aparapi/test/TernaryAndOr.java b/test/codegen/src/java/com/amd/aparapi/test/TernaryAndOr.java index 1bc2e728..5d3dc55f 100644 --- a/test/codegen/src/java/com/amd/aparapi/test/TernaryAndOr.java +++ b/test/codegen/src/java/com/amd/aparapi/test/TernaryAndOr.java @@ -1,4 +1,4 @@ -package com.syncleus.aparapi.test; +package com.aparapi.test; public class TernaryAndOr{ float random() { diff --git a/test/codegen/src/java/com/amd/aparapi/test/TernaryNested.java b/test/codegen/src/java/com/amd/aparapi/test/TernaryNested.java index c46c925b..b4e85978 100644 --- a/test/codegen/src/java/com/amd/aparapi/test/TernaryNested.java +++ b/test/codegen/src/java/com/amd/aparapi/test/TernaryNested.java @@ -1,4 +1,4 @@ -package com.syncleus.aparapi.test; +package com.aparapi.test; public class TernaryNested{ public void run() { diff --git a/test/codegen/src/java/com/amd/aparapi/test/TernaryOr.java b/test/codegen/src/java/com/amd/aparapi/test/TernaryOr.java index ab517f06..63adad55 100644 --- a/test/codegen/src/java/com/amd/aparapi/test/TernaryOr.java +++ b/test/codegen/src/java/com/amd/aparapi/test/TernaryOr.java @@ -1,4 +1,4 @@ -package com.syncleus.aparapi.test; +package com.aparapi.test; public class TernaryOr{ float random() { diff --git a/test/codegen/src/java/com/amd/aparapi/test/TwoForLoops.java b/test/codegen/src/java/com/amd/aparapi/test/TwoForLoops.java index 6e60e816..5e09ff5d 100644 --- a/test/codegen/src/java/com/amd/aparapi/test/TwoForLoops.java +++ b/test/codegen/src/java/com/amd/aparapi/test/TwoForLoops.java @@ -1,6 +1,6 @@ -package com.syncleus.aparapi.test; +package com.aparapi.test; -import com.syncleus.aparapi.Kernel; +import com.aparapi.Kernel; public class TwoForLoops extends Kernel{ public void run() { diff --git a/test/codegen/src/java/com/amd/aparapi/test/UnrelatedIfElsesWithCommonEndByte.java b/test/codegen/src/java/com/amd/aparapi/test/UnrelatedIfElsesWithCommonEndByte.java index 5e54e772..fc7175d7 100644 --- a/test/codegen/src/java/com/amd/aparapi/test/UnrelatedIfElsesWithCommonEndByte.java +++ b/test/codegen/src/java/com/amd/aparapi/test/UnrelatedIfElsesWithCommonEndByte.java @@ -1,4 +1,4 @@ -package com.syncleus.aparapi.test; +package com.aparapi.test; public class UnrelatedIfElsesWithCommonEndByte{ /* diff --git a/test/codegen/src/java/com/amd/aparapi/test/UnrelatedIfsWithCommonEndByte.java b/test/codegen/src/java/com/amd/aparapi/test/UnrelatedIfsWithCommonEndByte.java index 353d4a6f..75658f1c 100644 --- a/test/codegen/src/java/com/amd/aparapi/test/UnrelatedIfsWithCommonEndByte.java +++ b/test/codegen/src/java/com/amd/aparapi/test/UnrelatedIfsWithCommonEndByte.java @@ -1,4 +1,4 @@ -package com.syncleus.aparapi.test; +package com.aparapi.test; public class UnrelatedIfsWithCommonEndByte{ int width = 1024; diff --git a/test/codegen/src/java/com/amd/aparapi/test/UnrelatedNestedIfElses.java b/test/codegen/src/java/com/amd/aparapi/test/UnrelatedNestedIfElses.java index 7b264fe3..193b029b 100644 --- a/test/codegen/src/java/com/amd/aparapi/test/UnrelatedNestedIfElses.java +++ b/test/codegen/src/java/com/amd/aparapi/test/UnrelatedNestedIfElses.java @@ -1,4 +1,4 @@ -package com.syncleus.aparapi.test; +package com.aparapi.test; public class UnrelatedNestedIfElses{ diff --git a/test/codegen/src/java/com/amd/aparapi/test/UseObject.java b/test/codegen/src/java/com/amd/aparapi/test/UseObject.java index 8571fe72..47a77872 100644 --- a/test/codegen/src/java/com/amd/aparapi/test/UseObject.java +++ b/test/codegen/src/java/com/amd/aparapi/test/UseObject.java @@ -1,6 +1,6 @@ -package com.syncleus.aparapi.test; +package com.aparapi.test; -import com.syncleus.aparapi.Kernel; +import com.aparapi.Kernel; public class UseObject extends Kernel{ class Dummy{ diff --git a/test/codegen/src/java/com/amd/aparapi/test/UseObjectArrayLength.java b/test/codegen/src/java/com/amd/aparapi/test/UseObjectArrayLength.java index da7989b8..46fedec0 100644 --- a/test/codegen/src/java/com/amd/aparapi/test/UseObjectArrayLength.java +++ b/test/codegen/src/java/com/amd/aparapi/test/UseObjectArrayLength.java @@ -1,6 +1,6 @@ -package com.syncleus.aparapi.test; +package com.aparapi.test; -import com.syncleus.aparapi.Kernel; +import com.aparapi.Kernel; public class UseObjectArrayLength extends Kernel{ final class Dummy{ diff --git a/test/codegen/src/java/com/amd/aparapi/test/UsesArrayLength.java b/test/codegen/src/java/com/amd/aparapi/test/UsesArrayLength.java index b73b50cc..ce273782 100644 --- a/test/codegen/src/java/com/amd/aparapi/test/UsesArrayLength.java +++ b/test/codegen/src/java/com/amd/aparapi/test/UsesArrayLength.java @@ -1,6 +1,6 @@ -package com.syncleus.aparapi.test; +package com.aparapi.test; -import com.syncleus.aparapi.Kernel; +import com.aparapi.Kernel; public class UsesArrayLength extends Kernel{ diff --git a/test/codegen/src/java/com/amd/aparapi/test/UsesNew.java b/test/codegen/src/java/com/amd/aparapi/test/UsesNew.java index 19a96caa..361f8506 100644 --- a/test/codegen/src/java/com/amd/aparapi/test/UsesNew.java +++ b/test/codegen/src/java/com/amd/aparapi/test/UsesNew.java @@ -1,4 +1,4 @@ -package com.syncleus.aparapi.test; +package com.aparapi.test; public class UsesNew{ int[] ints = new int[1024]; diff --git a/test/codegen/src/java/com/amd/aparapi/test/UsesThrow.java b/test/codegen/src/java/com/amd/aparapi/test/UsesThrow.java index ef1bcdc4..244e9515 100644 --- a/test/codegen/src/java/com/amd/aparapi/test/UsesThrow.java +++ b/test/codegen/src/java/com/amd/aparapi/test/UsesThrow.java @@ -1,4 +1,4 @@ -package com.syncleus.aparapi.test; +package com.aparapi.test; public class UsesThrow{ int[] ints = new int[1024]; diff --git a/test/codegen/src/java/com/amd/aparapi/test/VarargsForEach.java b/test/codegen/src/java/com/amd/aparapi/test/VarargsForEach.java index 8c58a536..bc67d873 100644 --- a/test/codegen/src/java/com/amd/aparapi/test/VarargsForEach.java +++ b/test/codegen/src/java/com/amd/aparapi/test/VarargsForEach.java @@ -1,4 +1,4 @@ -package com.syncleus.aparapi.test; +package com.aparapi.test; public class VarargsForEach{ public static int max(int... values) { diff --git a/test/codegen/src/java/com/amd/aparapi/test/VarargsSimple.java b/test/codegen/src/java/com/amd/aparapi/test/VarargsSimple.java index d6f0f89c..d7910f7b 100644 --- a/test/codegen/src/java/com/amd/aparapi/test/VarargsSimple.java +++ b/test/codegen/src/java/com/amd/aparapi/test/VarargsSimple.java @@ -1,4 +1,4 @@ -package com.syncleus.aparapi.test; +package com.aparapi.test; public class VarargsSimple{ public static int max(int... values) { diff --git a/test/codegen/src/java/com/amd/aparapi/test/While.java b/test/codegen/src/java/com/amd/aparapi/test/While.java index 0e83ddce..e9a0d63d 100644 --- a/test/codegen/src/java/com/amd/aparapi/test/While.java +++ b/test/codegen/src/java/com/amd/aparapi/test/While.java @@ -1,4 +1,4 @@ -package com.syncleus.aparapi.test; +package com.aparapi.test; public class While{ public void run() { diff --git a/test/codegen/src/java/com/amd/aparapi/test/WhileAndMandel.java b/test/codegen/src/java/com/amd/aparapi/test/WhileAndMandel.java index 6a0abcaf..05dc8b4d 100644 --- a/test/codegen/src/java/com/amd/aparapi/test/WhileAndMandel.java +++ b/test/codegen/src/java/com/amd/aparapi/test/WhileAndMandel.java @@ -1,4 +1,4 @@ -package com.syncleus.aparapi.test; +package com.aparapi.test; public class WhileAndMandel{ int width = 1024; diff --git a/test/codegen/src/java/com/amd/aparapi/test/WhileEmptyLoop.java b/test/codegen/src/java/com/amd/aparapi/test/WhileEmptyLoop.java index f2543e80..078e5f5f 100644 --- a/test/codegen/src/java/com/amd/aparapi/test/WhileEmptyLoop.java +++ b/test/codegen/src/java/com/amd/aparapi/test/WhileEmptyLoop.java @@ -1,4 +1,4 @@ -package com.syncleus.aparapi.test; +package com.aparapi.test; public class WhileEmptyLoop{ public void run() { diff --git a/test/codegen/src/java/com/amd/aparapi/test/WhileFloatCompound.java b/test/codegen/src/java/com/amd/aparapi/test/WhileFloatCompound.java index 14725223..15a0a970 100644 --- a/test/codegen/src/java/com/amd/aparapi/test/WhileFloatCompound.java +++ b/test/codegen/src/java/com/amd/aparapi/test/WhileFloatCompound.java @@ -1,4 +1,4 @@ -package com.syncleus.aparapi.test; +package com.aparapi.test; public class WhileFloatCompound{ diff --git a/test/codegen/src/java/com/amd/aparapi/test/WhileIf.java b/test/codegen/src/java/com/amd/aparapi/test/WhileIf.java index 4b61ca31..1c33d480 100644 --- a/test/codegen/src/java/com/amd/aparapi/test/WhileIf.java +++ b/test/codegen/src/java/com/amd/aparapi/test/WhileIf.java @@ -1,4 +1,4 @@ -package com.syncleus.aparapi.test; +package com.aparapi.test; public class WhileIf{ public void run() { diff --git a/test/codegen/src/java/com/amd/aparapi/test/WhileIfElse.java b/test/codegen/src/java/com/amd/aparapi/test/WhileIfElse.java index 46cb1d71..360ab86a 100644 --- a/test/codegen/src/java/com/amd/aparapi/test/WhileIfElse.java +++ b/test/codegen/src/java/com/amd/aparapi/test/WhileIfElse.java @@ -1,4 +1,4 @@ -package com.syncleus.aparapi.test; +package com.aparapi.test; public class WhileIfElse{ public void run() { diff --git a/test/codegen/src/java/com/amd/aparapi/test/WhileWithoutMutator.java b/test/codegen/src/java/com/amd/aparapi/test/WhileWithoutMutator.java index 48c4ace0..4e42c22e 100644 --- a/test/codegen/src/java/com/amd/aparapi/test/WhileWithoutMutator.java +++ b/test/codegen/src/java/com/amd/aparapi/test/WhileWithoutMutator.java @@ -1,4 +1,4 @@ -package com.syncleus.aparapi.test; +package com.aparapi.test; public class WhileWithoutMutator{ public void run() { diff --git a/test/codegen/src/java/com/amd/aparapi/test/While_If_IfElseElse.java b/test/codegen/src/java/com/amd/aparapi/test/While_If_IfElseElse.java index a3435a2a..886638bc 100644 --- a/test/codegen/src/java/com/amd/aparapi/test/While_If_IfElseElse.java +++ b/test/codegen/src/java/com/amd/aparapi/test/While_If_IfElseElse.java @@ -1,4 +1,4 @@ -package com.syncleus.aparapi.test; +package com.aparapi.test; public class While_If_IfElseElse{ public void run() { diff --git a/test/codegen/src/java/com/amd/aparapi/test/WideInc.java b/test/codegen/src/java/com/amd/aparapi/test/WideInc.java index aa7bfa72..cd576af6 100644 --- a/test/codegen/src/java/com/amd/aparapi/test/WideInc.java +++ b/test/codegen/src/java/com/amd/aparapi/test/WideInc.java @@ -1,4 +1,4 @@ -package com.syncleus.aparapi.test; +package com.aparapi.test; public class WideInc{ diff --git a/test/codegen/src/java/com/amd/aparapi/test/WideLoad.java b/test/codegen/src/java/com/amd/aparapi/test/WideLoad.java index 30ce67fe..53addecc 100644 --- a/test/codegen/src/java/com/amd/aparapi/test/WideLoad.java +++ b/test/codegen/src/java/com/amd/aparapi/test/WideLoad.java @@ -1,4 +1,4 @@ -package com.syncleus.aparapi.test; +package com.aparapi.test; public class WideLoad{ diff --git a/test/runtime/.project b/test/runtime/.project deleted file mode 100644 index 0b3d5824..00000000 --- a/test/runtime/.project +++ /dev/null @@ -1,17 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<projectDescription> - <name>test-runtime</name> - <comment></comment> - <projects> - </projects> - <buildSpec> - <buildCommand> - <name>org.eclipse.jdt.core.javabuilder</name> - <arguments> - </arguments> - </buildCommand> - </buildSpec> - <natures> - <nature>org.eclipse.jdt.core.javanature</nature> - </natures> -</projectDescription> diff --git a/test/runtime/build.xml b/test/runtime/build.xml index 922e2b99..7ec84978 100644 --- a/test/runtime/build.xml +++ b/test/runtime/build.xml @@ -43,7 +43,7 @@ </target> <path id="classpath"> - <pathelement path="${basedir}/../../com.syncleus.aparapi/dist/aparapi.jar" /> + <pathelement path="${basedir}/../../com.aparapi/dist/aparapi.jar" /> <pathelement path="${junit.home}/${junit.jar.name}" /> <pathelement path="classes" /> </path> @@ -63,7 +63,7 @@ <!-- even though fork is slower we need to set the library path and this requires fork --> <junit printsummary="false" fork="true" haltonfailure="false" failureproperty="tests.failed" showoutput="false"> - <sysproperty key="java.library.path" value="${basedir}/../../com.syncleus.aparapi.jni/dist" /> + <sysproperty key="java.library.path" value="${basedir}/../../com.aparapi.jni/dist" /> <formatter type="xml" /> <classpath refid="classpath" /> <batchtest todir="junit/data"> diff --git a/test/runtime/src/java/com/amd/aparapi/test/runtime/BufferTransfer.java b/test/runtime/src/java/com/amd/aparapi/test/runtime/BufferTransfer.java index 58584915..906b5e1e 100644 --- a/test/runtime/src/java/com/amd/aparapi/test/runtime/BufferTransfer.java +++ b/test/runtime/src/java/com/amd/aparapi/test/runtime/BufferTransfer.java @@ -1,8 +1,8 @@ -package com.syncleus.aparapi.test.runtime; +package com.aparapi.test.runtime; -import com.syncleus.aparapi.*; -import com.syncleus.aparapi.device.*; -import com.syncleus.aparapi.internal.kernel.*; +import com.aparapi.*; +import com.aparapi.device.*; +import com.aparapi.internal.kernel.*; import org.junit.*; import java.util.*; diff --git a/test/runtime/src/java/com/amd/aparapi/test/runtime/CallStaticFromAnonymousKernel.java b/test/runtime/src/java/com/amd/aparapi/test/runtime/CallStaticFromAnonymousKernel.java index 53f8c442..37cdb042 100644 --- a/test/runtime/src/java/com/amd/aparapi/test/runtime/CallStaticFromAnonymousKernel.java +++ b/test/runtime/src/java/com/amd/aparapi/test/runtime/CallStaticFromAnonymousKernel.java @@ -1,7 +1,7 @@ -package com.syncleus.aparapi.test.runtime; +package com.aparapi.test.runtime; -import com.syncleus.aparapi.*; -import com.syncleus.aparapi.device.*; +import com.aparapi.*; +import com.aparapi.device.*; import org.junit.*; import static org.junit.Assert.*; diff --git a/test/runtime/src/java/com/amd/aparapi/test/runtime/ExplicitBoolean.java b/test/runtime/src/java/com/amd/aparapi/test/runtime/ExplicitBoolean.java index 5a82daf2..efcf5d1d 100644 --- a/test/runtime/src/java/com/amd/aparapi/test/runtime/ExplicitBoolean.java +++ b/test/runtime/src/java/com/amd/aparapi/test/runtime/ExplicitBoolean.java @@ -1,6 +1,6 @@ -package com.syncleus.aparapi.test.runtime; +package com.aparapi.test.runtime; -import com.syncleus.aparapi.*; +import com.aparapi.*; import org.junit.*; import static org.junit.Assert.*; diff --git a/test/runtime/src/java/com/amd/aparapi/test/runtime/Issue102.java b/test/runtime/src/java/com/amd/aparapi/test/runtime/Issue102.java index 315be790..e71b3f2b 100644 --- a/test/runtime/src/java/com/amd/aparapi/test/runtime/Issue102.java +++ b/test/runtime/src/java/com/amd/aparapi/test/runtime/Issue102.java @@ -1,6 +1,6 @@ -package com.syncleus.aparapi.test.runtime; +package com.aparapi.test.runtime; -import com.syncleus.aparapi.*; +import com.aparapi.*; import static org.junit.Assert.assertTrue; import org.junit.Test; diff --git a/test/runtime/src/java/com/amd/aparapi/test/runtime/Issue103.java b/test/runtime/src/java/com/amd/aparapi/test/runtime/Issue103.java index c112ba9a..646137b3 100644 --- a/test/runtime/src/java/com/amd/aparapi/test/runtime/Issue103.java +++ b/test/runtime/src/java/com/amd/aparapi/test/runtime/Issue103.java @@ -1,6 +1,6 @@ -package com.syncleus.aparapi.test.runtime; +package com.aparapi.test.runtime; -import com.syncleus.aparapi.*; +import com.aparapi.*; import static org.junit.Assert.*; import org.junit.Test; diff --git a/test/runtime/src/java/com/amd/aparapi/test/runtime/Issue68.java b/test/runtime/src/java/com/amd/aparapi/test/runtime/Issue68.java index c4b20570..d10a89ba 100644 --- a/test/runtime/src/java/com/amd/aparapi/test/runtime/Issue68.java +++ b/test/runtime/src/java/com/amd/aparapi/test/runtime/Issue68.java @@ -1,6 +1,6 @@ -package com.syncleus.aparapi.test.runtime; +package com.aparapi.test.runtime; -import com.syncleus.aparapi.Kernel; +import com.aparapi.Kernel; abstract class ArrayAccess{ protected ArrayAccess(int offset, int length) { diff --git a/test/runtime/src/java/com/amd/aparapi/test/runtime/Issue69.java b/test/runtime/src/java/com/amd/aparapi/test/runtime/Issue69.java index 8c71650b..fe508fd6 100644 --- a/test/runtime/src/java/com/amd/aparapi/test/runtime/Issue69.java +++ b/test/runtime/src/java/com/amd/aparapi/test/runtime/Issue69.java @@ -1,7 +1,7 @@ -package com.syncleus.aparapi.test.runtime; +package com.aparapi.test.runtime; -import com.syncleus.aparapi.Kernel; -import com.syncleus.aparapi.Range; +import com.aparapi.Kernel; +import com.aparapi.Range; public class Issue69{ diff --git a/test/runtime/src/java/com/amd/aparapi/test/runtime/LoadCL.java b/test/runtime/src/java/com/amd/aparapi/test/runtime/LoadCL.java index 637c8849..2cfaeaf4 100644 --- a/test/runtime/src/java/com/amd/aparapi/test/runtime/LoadCL.java +++ b/test/runtime/src/java/com/amd/aparapi/test/runtime/LoadCL.java @@ -1,17 +1,17 @@ -package com.syncleus.aparapi.test.runtime; +package com.aparapi.test.runtime; -import com.syncleus.aparapi.*; -import com.syncleus.aparapi.device.*; -import com.syncleus.aparapi.internal.kernel.*; -import com.syncleus.aparapi.opencl.*; -import com.syncleus.aparapi.opencl.OpenCL.*; +import com.aparapi.*; +import com.aparapi.device.*; +import com.aparapi.internal.kernel.*; +import com.aparapi.opencl.*; +import com.aparapi.opencl.OpenCL.*; import org.junit.*; import static org.junit.Assert.*; public class LoadCL{ - @Resource("com/amd/aparapi/test/runtime/squarer.cl") interface Squarer extends OpenCL<Squarer>{ + @Resource("com/aparapi/test/runtime/squarer.cl") interface Squarer extends OpenCL<Squarer>{ public Squarer square(// Range _range,// @GlobalReadWrite("in") float[] in,// diff --git a/test/runtime/src/java/com/amd/aparapi/test/runtime/RangeSize.java b/test/runtime/src/java/com/amd/aparapi/test/runtime/RangeSize.java index 6e536e27..e3c4eeb4 100644 --- a/test/runtime/src/java/com/amd/aparapi/test/runtime/RangeSize.java +++ b/test/runtime/src/java/com/amd/aparapi/test/runtime/RangeSize.java @@ -1,6 +1,6 @@ -package com.syncleus.aparapi.test.runtime; +package com.aparapi.test.runtime; -import com.syncleus.aparapi.Range; +import com.aparapi.Range; import static org.junit.Assert.*; diff --git a/test/runtime/src/java/com/amd/aparapi/test/runtime/Test12x4_4x2.java b/test/runtime/src/java/com/amd/aparapi/test/runtime/Test12x4_4x2.java index 3f9e24dd..0cb0b0ae 100644 --- a/test/runtime/src/java/com/amd/aparapi/test/runtime/Test12x4_4x2.java +++ b/test/runtime/src/java/com/amd/aparapi/test/runtime/Test12x4_4x2.java @@ -1,10 +1,10 @@ -package com.syncleus.aparapi.test.runtime; +package com.aparapi.test.runtime; -import com.syncleus.aparapi.device.*; +import com.aparapi.device.*; import org.junit.Test; -import com.syncleus.aparapi.Kernel; -import com.syncleus.aparapi.Range; +import com.aparapi.Kernel; +import com.aparapi.Range; public class Test12x4_4x2{ @SuppressWarnings("deprecation") diff --git a/test/runtime/src/java/com/amd/aparapi/test/runtime/UseStaticArray.java b/test/runtime/src/java/com/amd/aparapi/test/runtime/UseStaticArray.java index 06436a9e..ce3df09b 100644 --- a/test/runtime/src/java/com/amd/aparapi/test/runtime/UseStaticArray.java +++ b/test/runtime/src/java/com/amd/aparapi/test/runtime/UseStaticArray.java @@ -1,7 +1,7 @@ -package com.syncleus.aparapi.test.runtime; +package com.aparapi.test.runtime; -import com.syncleus.aparapi.*; -import com.syncleus.aparapi.device.*; +import com.aparapi.*; +import com.aparapi.device.*; import org.junit.*; import static org.junit.Assert.*; diff --git a/test/runtime/src/java/com/amd/aparapi/test/runtime/Util.java b/test/runtime/src/java/com/amd/aparapi/test/runtime/Util.java index da0d2d6d..479df2a6 100644 --- a/test/runtime/src/java/com/amd/aparapi/test/runtime/Util.java +++ b/test/runtime/src/java/com/amd/aparapi/test/runtime/Util.java @@ -1,4 +1,4 @@ -package com.syncleus.aparapi.test.runtime; +package com.aparapi.test.runtime; import java.util.Arrays; -- GitLab