public static IDictionary <string, object> LineQuery(Character character, Container container, long cprgEid, Mill mill)
        {
            var calibrationProgram = (CalibrationProgram)container.GetItemOrThrow(cprgEid);

            var targetDefinition = calibrationProgram.TargetDefinition;

            targetDefinition.ThrowIfEqual(0, ErrorCodes.CPRGNotProducible);
            var targetDefault = EntityDefault.Get(targetDefinition);

            if (calibrationProgram.IsMissionRelated || targetDefault.CategoryFlags.IsCategory(CategoryFlags.cf_random_items))
            {
                if (mill.GetDockingBase().IsOnGammaZone())
                {
                    throw new PerpetuumException(ErrorCodes.MissionItemCantBeProducedOnGamma);
                }
            }


            calibrationProgram.HasComponents.ThrowIfFalse(ErrorCodes.CPRGNotProducible);

            var replyDict = mill.QueryMaterialAndTime(calibrationProgram, character, targetDefinition, calibrationProgram.MaterialEfficiencyPoints, calibrationProgram.TimeEfficiencyPoints);

            replyDict.Add(k.materialEfficiency, calibrationProgram.MaterialEfficiencyPoints);
            replyDict.Add(k.timeEfficiency, calibrationProgram.TimeEfficiencyPoints);

            return(replyDict);
        }