
package org.eclipse.osbp.authentication.account.dtos.services {
	import org.eclipse.osbp.authentication.account.dtos.*;
}
package org.eclipse.osbp.authentication.account.dtos.service {
	import org.eclipse.osbp.authentication.account.dtos.*;
	dtoservice UserAccountDtoService provides UserAccountDto {
		mutable persistenceUnit authentication;
	}
	dtoservice UserAccountFilterDtoService provides UserAccountFilterDto {
		mutable persistenceUnit authentication;
	}
}